Halo Bot! Materi Dasar Pembuatan Bot Telegram (GAS II-01)

5 menit saja |

Contoh paling sederhana penerapan dari Library Telegram Versi II. Buat yang sudah pernah menggunakan Lib V1, tentu tidak akan terlalu asing dengan kode-kode nya, hanya perlu sedikit penyesuaian.

Pendahuluan

Materi helo bot ini saya buat lebih sederhana, tidak dijabarkan dengan detail step-by-step screenshotnya.

Jika saat mengikuti materi ini masih belum paham, bisa ricek-ricek materi penjelasan bot yang versi pertama Welcome Bot.

Atau, bisa melihat video di youtubenya jika ingin lebih terlihat tampak visual. Link video ditulisan ini paling bawah ya.

Proyek

Pada materi ini, kita coba rapikan source ya. Ini semata-mata untuk persiapan pembuatan bot yang lebih komplek.

Silakan buat file proyek baru, buka situs script.google.com

Library

Sebelum pengkodean, tambahkan sumber pustakanya.

Editor Lama

Masukkan library-nya dan pilih angka version yang paling besar.

ID: MWkhreE4chZ56V_bDwpYUBPvg_do21SJR

Library ver.2

Editor Baru

Jika menggunakan EDITOR Baru, gunakan ID : 11LhYmqUg8UVtqMg3rPaau5uHwCMtsE_0RwUQim4ZY-OCfDe_YyIYKPSP

Library ver.2

Kode

Buat 2 file script, klik File -> Baru -> Script.

Nama filenya sebenarnya bebas, di sini kita namakan: Kode.gs dan Proses.gs

2 file script

Jika nanti buat fungsi-fungsi baru letakkan pada file script 1.

Hal ini berdasarkan pengalaman, beberapa fungsi ternyata tidak bekerja dengan baik ketika diletakkan dipaling bawah script.

Untuk mengatasi hal tersebut:

  • semua fungsi tambahan letakkan pada File Script 1 (Kode.js)
  • semua proses handle pesan letakkanlah pada File Script 2 (Proses.gs)

File 1 - Kode.gs

File pertama bertujuan inisiasi dan handle GET / POST.

// 00. -- permulaan aplikasi
// inisasi pertama kali
var tg = new telegram.daftar();

// variable user untuk interaksi dengan store user properties
var user = new telegram.user();

// variable penampung username bot
// misal: var usernamebot = 'gedebugbot';
var usernamebot = 'ISI_DENGAN_USERNAME_BOTMU';

// . klo sudah oke hapus dari sini -->

// 01. -- jalankan fungsi ini cuma sekali saja kemudian hapus functionnya!
function simpanToken() {
  // isikan token dari @BotFather  
  var token = "ISI_DENGAN_TOKEN";
  
  // store token ke user Properties
  return user.setValue('token_'+usernamebot, token);
}
// untuk cek token
function cekToken() {
  var token = user.getValue('token_'+usernamebot);
  Logger.log(token);
}
// . hapusnya sampe sini saja <--

// 02. -- Pengambilan dan pemasangan token
var token = user.getValue('token_'+usernamebot);
tg.setToken(token);

// 03. -- setWebhook
function setWebhook() {
  var url = "ISI_DARI_URL_HOOK";
  var r = tg.setWebhook(url);
  Logger.log(r);
}

// -- kalau mau bikin fungsi sendiri, taruh di bawah sini ---

Itu saja yang dibutuhkan untuk bot berjalan.

Tambahan

Ini script pengayaan, yang kadang diperlukan. Bisa ditambahkan, bisa juga engga. Bebas.

// -- fungsi pengayaan aja, boleh ada boleh tidak

// cek Token berhasil disimpan atau tidak
function cekToken() {
  var r =  user.getValue('token_'+usernamebot);
  if (r) {
    var pesan = "Token sudah disimpan: " + r;
  } else { 
    var pesan = "Token gagal di simpan.";
  }
  Logger.log(pesan);
  return r;
}

// cek informasi bot
function getMe(){
  var me = tg.getMe();
  Logger.log(me);
  return me;
}

// cek info hook bot
function getWebhookInfo() {
  var r = tg.getWebhookInfo();
  Logger.log(r);
  return r;
}

// hapus hook
function deleteWebhook() {
  var r = tg.deleteWebhook();
  Logger.log(r);
  return r;
}

File 2 - Proses.gs

Berisi proses alurnya.

Tangkap pesan yang di dapat dari methode GET dan POST:

// fungsi buat handle hanya menerima pesan berupa POST, kalau GET keluarkan pesan error
function doGet(e) {
  return tg.util.outputText("Hanya data POST yang kita proses yak!");
}

// fungsi buat handle pesan POST
function doPost(e) {  
  // data e kita verifikasi
  var update = tg.doPost(e);

  // jika data valid proses pesan
  if (update) {
    prosesPesan(update);
  } 
  
}

Kemudian tambahkan dibawahnya, fungsi buat memproses pesan

// fungsi utama untuk memproses segala pesan yang masuk
function prosesPesan(update) {
   //return tg.util.outputText("Data diterima di proses Pesan!");
  
  // detek klo ada pesan dari user
  if (update.message) { 

    // penyederhanaan variable
    var msg = update.message;

    // jika ada pesan berupa text
    if (msg.text) {
      
      // jika user klik start, bot akan menjawab
      if ( /\/start/i.exec(msg.text) ){
        // perhatikan, ini menggunakan sendMsg bukan sendMessage        
        var pesan = "Halo, perkenalkan saya ini bot!";
        pesan += "\nDibuat dengan <b>GAS Lib ver.2</b>";

        // sendMsg, pakae Msg bukan Message
        // - berarti bisa langsung pake variable msg buat chat.id
        return tg.sendMsg(msg, pesan, "HTML");
      }

      // jika user ketik /ping, bot akan jawab Pong!
      if ( /^\/ping$/i.exec(msg.text) ){
        // sedangkan ini pakai fungsi lama, cara pakai seperti sebelumnya
        return tg.kirimPesan(msg.chat.id, '*Pong!*', 'Markdown');
        }

      // kalau mau kembangin sendiri menjadi bot interaktif, code nya taruh di bawah ini
      // -- mulai custom text --

      // akhir deteksi pesan text
    }

    // jika butuh welcome, bisa copas dari script sebelumnya
    // deteksi event taruh di sini juga
    
    // akhir update message
  }
  
}

Menjalankan

1. Run simpanToken

1.A simpanToken

Pada file 1, jalankan fungsi simpanToken().

run simpanToken

1.B cek Token

untuk memastikan token berhasil, jalankan fungsi cekToken() seperti menjalankan fungsi sebelumnya.

run cekToken

Kemudian di cek Log.

Klik Tampilan -> Log

Atau tekan CTRL+Enter

Jika berhasil, maka pada log akan menginformasikan tokenmu:

log cekToken

2. Bersihkan token

Untuk alasan keamanan.. mari kita bersihkan code dari data kredensial seperti token bot. Setidaknya dapat mencegah akibat ga akan sengaja diintip orang lain. Atau pas kirim screenshot gak sengaja semua di ambil, jadi lebih aman kan.

Hapus fungsi simpanToken() dan cekToken().

Simpan token hanya sekali saja dipakai. Kecuali jika ingin ganti bot, maka perlu dijalankan kembali.

3. Deploy

Selanjutnya proses deploy, seperti pada tutorial pertama.

Pilih menu Publikasikan, kemudian klik Terapkan sebagai aplikasi web

deploy

new version

Setiap perubahan kode, selalu deploy terlebih dahulu dan pilih New versi agar berjalan sesuai perubahannya!

Dapatkan URL hasil deploy:

url deploy

Hasil URL deploy ini nantinya akan dimasukkan di url setWebhook.

4. setWebhook

Langkah terakhir, kita hubungkan script yang sudah ter-deploy ke bot telegram.

Masukkan script URL yang didapat pada saat deploy.

// 03. -- setWebhook
function setWebhook() {
  var url = "ISI_DARI_URL_HOOK"; // <--- masukkan di sini
  var r = tg.setWebhook(url);
  Logger.log(r);
}

kemudian jalankan run setWebhook

Jika sukses, maka di log (CTR+ENTER) akan tampil seperti ini:

log setWebhook

Bot sudah terhubung dengan kode!

5. Test Bot!

Meski bot sudah terhubung dengan script code, bukan berarti bot bisa langsung jalan.

Asalkan tidak ada yang error, maka bot akan berjalan dengan baik!

Silakan di test sendiri.. semestinya jika mengikuti langkah-langkah di atas, akan berjalan dengan baik.

Youtube

Untuk lebih jelasnya, silakan ikuti atau tonton materi tersebut di video youtube nya ya.

Youtube

Pustaka

Penutup

Jika ada pertanyaan, saran atau masukkan silakan didiskusikan. Jika ingin live dan biasanya tanggapan juga lebih cepat, sangat disarankan bergabung pada group Telegram @botIndonesia.