Skip to content

TelegrafJS: Framework Bot Telegram dengan NodeJS

Telegraf JS

Telegram Bot telah menjadi alat yang sangat populer bagi bisnis dan individu untuk berinteraksi dengan audiens mereka, mengotomatiskan tugas, dan menyediakan berbagai layanan. Salah satu cara yang paling fleksibel dan efisien untuk membuat Telegram Bot adalah dengan menggunakan Telegraf.js adalah sebuah framework Node.js yang powerful. Artikel ini akan memandu Kita melalui proses pembuatan Telegram Bot menggunakan Telegraf.js, dari persiapan awal hingga implementasi fitur-fitur dasar.

Persiapan Awal

Sebelum memulai, pastikan Kita telah memenuhi persyaratan berikut:

  1. Node.js dan npm: Pastikan Node.js dan npm (Node Package Manager) sudah terinstal di sistem Kita. Kita dapat mengunduhnya dari situs web resmi Node.js.
  2. Akun Telegram: Kita memerlukan akun Telegram untuk membuat bot.
  3. Token Bot: Kita perlu membuat bot melalui BotFather di Telegram untuk mendapatkan token bot.

Langkah 1: Membuat Bot di Telegram dengan BotFather

BotFather adalah bot resmi dari Telegram yang digunakan untuk membuat dan mengelola bot. Berikut adalah langkah-langkah untuk membuat bot baru:

  1. Buka aplikasi Telegram dan cari BotFather.
  2. Mulai percakapan dengan BotFather dengan mengirim perintah /start.
  3. Ketik perintah /newbot untuk membuat bot baru.
  4. BotFather akan meminta Kita untuk memberikan nama bot. Masukkan nama yang Kita inginkan.
  5. Selanjutnya, BotFather akan meminta username untuk bot Kita. Username harus unik dan diakhiri dengan kata “bot”.
  6. Setelah berhasil, BotFather akan memberikan token bot. Simpan token ini baik-baik karena akan Kita gunakan untuk menghubungkan bot dengan kode Telegraf.js Kita.

Langkah 2: Membuat dan Menginisialisasi Proyek Node.js

Setelah mendapatkan token bot, sekarang saatnya untuk membuat proyek Node.js dan menginstal Telegraf.js.

Buat direktori proyek baru:

mkdir telegram-bot cd telegram-bot

Inisialisasi proyek Node.js:

npm init -y 

Perintah ini akan membuat file package.json dengan konfigurasi default.

Instal Telegraf.js:

npm install telegraf 

Perintah ini akan mengunduh dan menginstal Telegraf.js serta dependensi yang diperlukan.

Langkah 3: Menulis Kode Bot Dasar

Setelah Telegraf.js terinstal, Kita dapat mulai menulis kode bot dasar. Buat file bernama index.js di direktori proyek Kita dan masukkan kode berikut:

const { Telegraf } = require('telegraf');
const bot = new Telegraf('YOUR_BOT_TOKEN');
bot.start((ctx) => ctx.reply('Selamat datang di bot!'));
bot.help((ctx) => ctx.reply('Kirim /start untuk memulai.'));
bot.on('text', (ctx) => {
  ctx.reply(`Kita menerima pesan: ${ctx.message.text}`);
});
bot.launch();

Ganti YOUR_BOT_TOKEN dengan token bot yang Kita dapatkan dari BotFather.

Penjelasan Kode:

  • const { Telegraf } = require(‘telegraf’);: Mengimpor kelas Telegraf dari library telegraf.
  • const bot = new Telegraf(‘YOUR_BOT_TOKEN’);: Membuat instance baru dari kelas Telegraf dengan memberikan token bot sebagai argumen.
  • bot.start((ctx) => ctx.reply(‘Selamat datang di bot!’));: Menangani perintah /start. Ketika pengguna mengirim perintah ini, bot akan membalas dengan pesan “Selamat datang di bot!”.
  • bot.help((ctx) => ctx.reply(‘Kirim /start untuk memulai.’));: Menangani perintah /help. Ketika pengguna mengirim perintah ini, bot akan membalas dengan pesan “Kirim /start untuk memulai.”.
  • bot.on(‘text’, (ctx) => { ctx.reply(\Kita menerima pesan: ${ctx.message.text}`); });`: Menangani semua pesan teks yang dikirim ke bot. Bot akan membalas dengan pesan yang menyatakan bahwa ia telah menerima pesan tersebut.
  • bot.launch();: Memulai bot dan membuatnya siap menerima perintah.

Langkah 4: Menjalankan Bot

Untuk menjalankan bot, buka terminal di direktori proyek Kita dan jalankan perintah berikut:

 node index.js

Jika semuanya berjalan lancar, Kita akan melihat pesan di terminal yang menunjukkan bahwa bot sedang berjalan. Sekarang, buka Telegram dan cari bot Kita menggunakan username yang Kita tentukan sebelumnya. Kirim perintah /start atau pesan teks apa pun untuk melihat respons dari bot.

Fitur-Fitur Lain dari TelegrafJS

Setelah berhasil membuat bot yang basic, Kita juga bisa menambahkan fitur-fitur lanjutan yang lebih advance untuk membuat bot lebih berguna. Berikut adalah beberapa contoh fitur yang dapat Kita implementasikan:

Menangani Perintah Lain: Kita dapat menambahkan penanganan untuk perintah-perintah lain seperti /info, /about, atau perintah kustom sesuai kebutuhan.

bot.command('info', (ctx) => { ctx.reply('Ini adalah bot informasi.'); });

Menggunakan Inline Keyboard: Inline keyboard memungkinkan pengguna untuk berinteraksi dengan bot melalui tombol-tombol yang muncul di dalam pesan.

const inlineKeyboard = { reply_markup: { inline_keyboard: [ [{ text: 'Tombol 1', callback_data: 'tombol1' }], [{ text: 'Tombol 2', callback_data: 'tombol2' }], ], }, }; bot.command('tombol', (ctx) => { ctx.reply('Pilih tombol:', inlineKeyboard); }); bot.action('tombol1', (ctx) => { ctx.reply('Kita memilih tombol 1!'); }); bot.action('tombol2', (ctx) => { ctx.reply('Kita memilih tombol 2!'); });

Dalam contoh ini, Kita membuat inline keyboard dengan dua tombol. Ketika pengguna menekan tombol, bot akan membalas dengan pesan yang sesuai.

Mengirim Gambar dan Dokumen: Kita dapat mengirim gambar dan dokumen melalui bot.

bot.command('gambar', (ctx) => { ctx.replyWithPhoto({ url: 'URL_GAMBAR' }, { caption: 'Ini adalah gambar.' }); }); bot.command('dokumen', (ctx) => { ctx.replyWithDocument({ source: 'PATH_KE_DOKUMEN' }, { caption: 'Ini adalah dokumen.' }); });

Ganti URL_GAMBAR dengan URL gambar yang ingin Kita kirim dan PATH_KE_DOKUMEN dengan path ke dokumen yang ingin Kita kirim.

Menggunakan Middleware: Middleware memungkinkan Kita untuk menambahkan logika tambahan sebelum atau sesudah penanganan pesan.

bot.use((ctx, next) => { console.log(`Pesan dari ${ctx.from.username}: ${ctx.message.text}`); return next(); });

Dalam contoh ini, Kita menggunakan middleware untuk mencatat setiap pesan yang diterima oleh bot.

Menyimpan Data: Kita dapat menyimpan data pengguna menggunakan berbagai metode, seperti database atau file JSON.

const fs = require('fs'); bot.command('simpan', (ctx) => { const data = { userId: ctx.from.id, username: ctx.from.username, }; fs.writeFileSync('data.json', JSON.stringify(data)); ctx.reply('Data telah disimpan.'); });

Dalam contoh ini, Kita menyimpan ID dan username pengguna ke dalam file data.json.

Tips dan Trik

  • Menggunakan Environment Variables: Simpan token bot dan konfigurasi sensitif lainnya sebagai environment variables untuk keamanan.
  • Menggunakan Webhooks: Untuk aplikasi produksi, gunakan webhooks alih-alih polling untuk menerima pembaruan dari Telegram.
  • Menggunakan Logging: Tambahkan logging untuk memantau dan mendebug bot Kita.
  • Menggunakan Library Tambahan: Manfaatkan library tambahan seperti node-fetch untuk membuat permintaan HTTP atau mongoose untuk berinteraksi dengan database MongoDB.

Contoh Implementasi: Bot Pengingat Sederhana

Berikut adalah contoh implementasi bot pengingat sederhana menggunakan Telegraf.js:

const { Telegraf } = require('telegraf');

const bot = new Telegraf('YOUR_BOT_TOKEN');

const reminders = {};

bot.command('set', (ctx) => {
  const args = ctx.message.text.split(' ').slice(1);
  const time = args[0];
  const task = args.slice(1).join(' ');

  if (!time || !task) {
    ctx.reply('Gunakan: /set [waktu] [tugas]');
    return;
  }

  const userId = ctx.from.id;
  reminders[userId] = reminders[userId] || [];

  reminders[userId].push({
    time: time,
    task: task,
    timeout: setTimeout(() => {
      ctx.reply(`PENGINGAT: ${task}`);
    }, parseInt(time) * 1000),
  });

  ctx.reply(`Pengingat telah diatur untuk ${time} detik: ${task}`);
});

bot.command('list', (ctx) => {
  const userId = ctx.from.id;
  if (!reminders[userId] || reminders[userId].length === 0) {
    ctx.reply('Tidak ada pengingat yang diatur.');
    return;
  }

  let message = 'Daftar Pengingat:\n';
  reminders[userId].forEach((reminder, index) => {
    message += `${index + 1}. ${reminder.task} (dalam ${reminder.time} detik)\n`;
  });

  ctx.reply(message);
});

bot.command('clear', (ctx) => {
  const userId = ctx.from.id;
  if (!reminders[userId] || reminders[userId].length === 0) {
    ctx.reply('Tidak ada pengingat yang diatur.');
    return;
  }

  reminders[userId].forEach((reminder) => {
    clearTimeout(reminder.timeout);
  });

  reminders[userId] = [];
  ctx.reply('Semua pengingat telah dihapus.');
});

bot.launch();

Bot ini memungkinkan pengguna untuk mengatur pengingat dengan perintah /set [waktu] [tugas], melihat daftar pengingat dengan perintah /list, dan menghapus semua pengingat dengan perintah /clear.

Kesimpulan

Membuat Telegram Bot dengan Telegraf.js adalah cara yang efisien dan fleksibel untuk mengotomatiskan tugas, berinteraksi dengan audiens, dan menyediakan berbagai layanan. Dengan mengikuti panduan ini, Kita dapat membuat bot dasar dan menambahkan fitur-fitur lanjutan sesuai kebutuhan. Telegraf.js menyediakan banyak fitur dan fleksibilitas untuk membuat bot yang kompleks dan canggih. Teruslah bereksperimen dan belajar untuk memaksimalkan potensi bot Kita.

Repo Github: https://github.com/telegraf/telegraf

Website: https://telegraf.js.org/