Penjelasan dan praktikum lengkap membuat bot Telegram menggunakan Google Apps Script.
Ruang lingkup
Definisi terbatas
telegram, adalah aplikasi perpesanan (messenger) yang populer dipergunakan saat ini
bot, istilah umum untuk menyebut bot api dalam telegram
GAS adalah Google Apps Script, satu diantara service yang disediakan oleh Google
Lumpia adalah nama framework atau library GAS yang dijelaskan pada dokumentasi ini
Karakter
Huruf besar kecil pada Telegram tidak pengaruh. namabot, namaBot, NamaBot atau NAMABOT dianggap sama.
Akan tetapi, pada dunia pemrograman khususnya javascript atau Google Apps Script, penggunakan huruf besar dan kecil adalah beda. Sehingga, haruslah berhati-hati dengan sangat.
Secara umum ada 2 jenis bot yang saat ini beroperasi pada telegram. Keduanya adalah LEGAL, diizinkan oleh pihak Telegram bahkan difasilitasi.
1. Bot API
Adalah spesial akun yang dibuatkan oleh Telegram melalui @botfather.
Secara umum akan kita sebut sebagai bot api, atau bot biasa, atau bot saja.
Framework Lumpia beroperasi pada bot jenis ini.
Kelebihan
berjalan pada sub akun user biasa
satu akun user bisa sampe 20 bot, sehingga tidak repot bikin banyak akun
mudah pengoperasiaannya, karena api nya terdokumentasi dibuat dengan baik
tidak butuh resource khusus, yang penting bisa melakukukan komunikasi HTTP sudah cukup
mempunyai fitur-fitur khusus sebagai bot, seperti membuat keyboard inline, inline bot, game base, dll
Kekurangan
memiliki keterbatasaan tidak seperti user biasa yang bisa melihat dialog, membuat grup sendiri, memiliki banyak pengaturan, dan lain sebagainya
secara default download dan upload sanagt terbatas, berbeda dengan user biasa hingga 2 GB
2. User Bot
Adalah akun user biasa, yang dioperasikan dan diotomatisasi sehingga berperan menjadi bot.
Pengoperasiannya jauh lebih ribet dibanding bot api yang sudah disediakan. Meski demikian memiliki banyak manfaat dibandikan bot biasa.
Kelebihan
memiliki kemampuan seperti halnya user biasa
download upload file hingga maksimal
Kekurangan
jauh lebih rumit proses pembuatan dan pengoperasiannya
tidak memiliki spesial fitur seperti keyboard inline
Bot Telegram
Fungsi
Membantu manusia sesuai fungsi dan tugasnya. Biasanya dilakukan terus menerus, setiap saat, dan selalu tersedia jika dibutuhkan.
1.2 - Yang Dibutuhkan
Apa saja yang dibutuhkan
Hal-hal apa sajakah yang diperlukan untuk membuat bot Telegram.. berikut ini diulas.
SDM
SDM atau Sumber Daya Manusia.
Dalam hal ini bisa kamu sebagai pelakunya. Kamu yang sedang belajar, atau yang sudah bisa pemrograman hanya butuh penyesuaian saja.
Atau bisa juga, SDM di sini adalah jasa programmernya. Karena sudah tidak mampu (bukan bidangnya), atau tidak sempat membuatnya (tidak cukup waktu), ataupun butuh team work.
Jika memang tak mampu, karena kebanyakan memang bukan bidangnya. Seorang yang jago berdagang (retail di online shope), belum tentu menguasai komputer apalagi dunia pemrograman. So, tidak perlu memaksakan diri ya. Solusinya kamu bisa sewa jasa programmer.
Termasuk di dalamnya SDM adalah:
otak yang encer, klo belum encer perlu giat belajar dan tekun latihan
dan indra lainnya untuk mendukung
Jangan ragu untuk memulai, karena manusia adalah makhluk pembelajar yang hebat. Dan semua pernah mengalami yang namanya langkah pertama alias newbie
Account
Akun yang sudah harus dipunyai adalah:
Google
Semestinya sudah punya semua ya. Jika belum, tata caranya tidak dimuat dalam lingkup dokumentasi di sini.
Akun Google dipergunakan untuk mengakses email, drive, dokument, spreadsheet, apps script, dan lain sebagainya.
Menjadi kebutuhan wajib pada pembuatan bot di sini. Cara penggunaaan akun google (buka email, drive, spreadsheet, dll) juga tidak dibahas / bukan cakupan materi ini.
Telegram
Ini juga kebutuhan mandatori. Cara membuat akun Telegram, tidak dibahas (dulu) di sini.
Yang melekat pada akun telegram adalah:
harus punya nomor handphone untuk mendaftar
punya email untuk mengaktifkan 2FA (sangat direkomendasikan)
Soal telegram akan dibahas pada materi lainnya (insyaAllah).
Komputer
Boleh juga menggunakan handphone (smartphone).
Namun direkomendasikan menggunakan komputer (laptop/pc). Karena layar yang besar memberikan kebebasan atau keleluasaan untuk mengamati dan meneliti.
Aplikasi
Aplikasi yang wajib dipunyai adalah:
Telegram Client
Pengguna handphone bisa download di Playstore atau App Store. Pilihan terbaik adalah Telegram dari official, atau Plus Messenger.
Untuk pengguna desktop, sangat direkomendasikan untuk pakai aplikasi (bukan browser). Download di Desktop Telegram
Browser
Untuk mengakses google drive dan coding google apps script cara termudah adalah menggunakan browser. Silakan pergunakan browser favoritmu, namun disarankan adalah:
Google Chrome / Chromium
Firefox
Safari
Ataupun browser-browser dari turunan mereka.
Browser dapat dipergunakan juga untuk mengakses Telegram Client. Namun, sebaiknya untuk telegram client menggunakan versi aplikasinya saja.
Free
Meski Gratis bukan berarti tanpa biaya ya. Free, sebenarnya lebih tepat diistilahkan “bebas”.
Email, server dan bahkan materi-materi di sini disediakan secara gratis, bukan berarti tanpa biaya untuk mendapatkannya.
Misalnya:
kamu tetap butuh biaya untuk mengakses internet jika belum ada koneksi “tumpangan”.
kamu butuh listrik, untuk bisa menyalakan komputer, laptop, ngecharge handphone, dan lain sebagainya. Listriknya harus bayar.
Kamu pakai laptop / handphone, yang untuk mendapatkannya harus beli atau membayar sejumlah uang.
butuh kendaraan untuk beli pulsa, bayar listrik, beli handphone, dan lain sebagainya
butuh simcard untuk nomor handphone, syarat registrasi akun telegram / google
Jika kamu perlu belajar komputer, mungkin perlu kursus dulu cara pakai komputer. Kursusnya juga butuh biaya.
Saat otak atik, butuh camilan atau kopi biar bisa kuat begadang. Camilan dan kopi, harus dibeli jika tidak punya.
Item-item lain dan seterusnya..
Biaya-biaya di sini tetap harus dikeluarkan.
Jadi agar tetap dipahami, definisi GRATIS bukan berarti benar-benar tanpa biaya. GRATIS sesuai yang diberikan saja (untuk memperolehnya bisa jadi kamu ada biayanya)
1.3 - Pernyataan
Pernyataan Hukum
Disclaimer
Pengembang dan penulis framework ini bukan orang hukum, tidak mengerti soal hukum, dan tidak punya hubungan (teman/saudara/rekanan) bidang hukum. Namun, tidak ingin bermasalah dengan pihak otoritas hukum dimana saja.
Semua yang dikerjakan hanya ingin bermanfaat seluas-luasnya bagi masyarakat Indonesia pada khususnya, dan seluruh penduduk dunia pada umumnya.
Penyataan
Semua library atau framework yang disediakan disini tersedia secara GRATIS, dan didistribusikan apa adanya (“AS IS”).
Apapun yang terjadi pada akun kamu atau piranti kamu, dari menggunakan Lumpia Framework adalah tanggung jawab kamu sendiri.
Kamu yang bikin, kamu yang memasukkan, kamu yang mengerjakan, kamu yang memperoleh manfaat, kamu juga yang bertanggung jawab atas semua pekerjaanmu.
Apabila terjadi masalah terkait hukum, meskipun kamu menggunakannya secara langsung atau tidak (sebagai end user nya bot), maka tidak ada sangkut pautnya dengan pengembang library ini.
Lumpia, sebagai framework bot telegram, sumber kode bersifat terbuka yang siapa saja dapat melihat, membaca, menelitinya - baik sebelum menggunakan maupun sesudahnya.
Semua kelalailan dan kesalahan akibat oprekanmu, ataupun kesalahan bugs pada framework adalah tanggung jawab kamu sendiri selaku pemakai yang tidak teliti.
Perizinan
Diizinkan menggunakan library ini untuk segala keperluan.
Untuk keperluan belajar, edukasi
Hobi atau Kesenangan
Riset atau Penelitian, mahasiswa atau pegawai
Pekerjaan, Profesional, Komersial
Bahkan untuk keperluan bisnismu
Disarankan agar mencatumkan sumber – sebagai penghargaan dan berani bermental (berjiwa) besar atas pengakuan karya orang lain.
Persetujuan
Memakai berarti sudah setuju.
Sederhana
Tidak sepakat, tidak setuju, tidak mengerti : JANGAN DIPAKAI
Sudah diperingatkan.
Penutup
Semoga keberkahan dan limpahan rezeki yang luas, bagi semua yang memberikan manfaat buat umat. Yang tidak suka menyalah-nyalahkan, tidak mencari-cari masalah, yang sering mempermudah urusan, saling membantu, dan saling sharing memberikan kebaikan.
Mohon bantu di-amin-kan.
2 - Memulai
Langkah awal memulai pembuatan bot menggunakan lumpia - GAS
Baca dahulu PERNYATAAN untuk mengerti persetujuan penggunaan Lumpia Framework ini.
Langkah
Jika kamu baru pertama kali membuat bot, silakan dinikmati secara perlahan-lahan dan ada baiknya membaca juga pemahaman dasar.
Dan lebih baik lagi jika menonton videonya agar mudah memahaminya.
OK, mari kita mulai dengan langkah sederhana….
1. Buat Proyek
Buka Google Drive, pilih Baru, Lainnya, kemudian pilih Google Apps Script
Gunakan versi dengan angka terbesar (screenshot hanya sampel saat dibuat dokumentasi)
Lebih detail, bisa dicek pada halaman versi lumpia.
3. Kode
Untuk bisa menjalankan sebuah bot, butuh token bot yang di dapat dari bot father. Jika belum punya silakan membuat dahulu, bisa diperiksa pada halaman pembuatan token bot
// identifikasi
const token ='123456789:abcdefghijklmno'; // <- isikan token botmu disini
const bot =new lumpia.init(token);
// handle komunikasi via POST dari Telegram ke (webhook) GAS
function doPost(e) {
bot.doPost(e);
}
// handle untuk user yang mengetik /start
bot.start(ctx => ctx.reply('Started!'));
// handle untuk user yang mengetik /ping
bot.cmd('ping', ctx => ctx.replyIt('Pong!'));
Baru! Sekarang, kita bisa re-deploy menggunakan Editor Baru. Sehingga tidak perlu perpindah-pindah ke editor lama.
Silakan simak pada video Halo Lumpia.
5. Set Webhook
Buat fungsi untuk set webhook
function setWebHook() {
let url ='URL-HASIL-DEPLOY';
let result = bot.telegram.setWebhook(url);
Logger.log(result);
}
Kemudian jalankan.
Video
Sangat direkomendasikan menonton video ini.
Memuat bagaimana cara menggunakan lumpia pertama kali, deploy dengan metode baru tanpa setwebhook ulang, materi-materi dasar membuat token dan penjelasan-penjelasan penting lainnya.
3 - Materi
Koleksi materi, tutorial, dan studi kasus
Beberapa hal perlu urut belajarnya.. jadi sebaiknya belajar berurut adalah rekomendasinya.
3.1 - Halo Lumpia
Materi paling dasar belajar lumpia
Buat teman-teman yang baru mau belajar membuat bot telegram pilihan yang paling tepat memulainya adalah belajar dari sini.
Di sini, kita akan belajar membangun bot telegram secara gratis, cepat, dan mudah menggunakan Google Apps Script.
Atau bagi yang ingin migrasi dari lib v1/v2, perlu juga menyimak materi ini.
const token ='TOKEN:BOT-KAMU';
const bot =new lumpia.init(token);
bot.options.log_id = IDKAMU;
function doPost(e) {
bot.doPost(e);
}
function setWebhook() {
let url ='URL_WEB';
let result = bot.telegram.setWebhook(url);
Logger.log(result);
}
const button = lumpia.button;
const markup = lumpia.markup;
const helper = lumpia.helper;
// perintah start
bot.start(ctx => {
// start dengan keyboard inline
let nama = ctx.from.first_name;
if (ctx.from.last_name) nama +=' '+ ctx.from.last_name;
// cleansing nama biar tidak error karakter khusus HTML
nama = helper.clearHTML(nama);
let pesan =`Halo <b>${nama}</b>, perkenalkan aku ini bot!`;
// menu keyboard inline
let keyboard = [];
// baris pertama
// diawali dengan index 0
keyboard[0] = [
button.url('š Docs', 'https://lumpia.js.org'),
button.url('š„ @botindonesia', 'https://t.me/botindonesia')
];
// baris kedua
keyboard[1] = [
button.text('š¼ Halo Human', 'me_halo'),
button.text('š Apa kabar?', 'me_kabar')
];
ctx.replyWithHTML(pesan, {
reply_markup: markup.inlineKeyboard(keyboard)
});
})
bot.action('me_halo', ctx => ctx.reply('Ya, saya.'))
bot.action('me_kabar', ctx => ctx.answerCallbackQuery('āš¼ Tetap semangat ya!'));
bot.cmd('ping', ctx => ctx.replyIt('Pong!'));
bot.hears(['hai', 'hi', 'hallo', 'hei'], ctx => ctx.reply('Hai juga!'));
bot.hears(/ass?alamu'?ala[yi]+ku+m/i, ctx => ctx.replyIt("Wa'alaikumussalam Wr Wb"));
bot.cmd(['ver', 'versi', 'version'], ctx => {
let version = lumpia.version;
let pesan =`š¤ Bot ini dibangun menggunakan <b>${version.name}</b> <code>v${version.number}.${version.build}</code>`;
pesan +=`\n\nā Sumber bersama belajar <b>Bot Telegram Indonesia</b>`let keyboard = [
button.url('š Docs', 'https://lumpia.js.org'),
button.url('š„ @botindonesia', 'https://t.me/botindonesia')
]
ctx.replyWithHTML(pesan, {
reply_markup: markup.inlineKeyboard(keyboard)
});
})
Bekerja pada mode development dengan mengaktifkan DEBUG dan verbose
Masih terbersit pada ingatan, tiap kali development bot telegram menggunakan Google Apps Script ketika ada perubahan sedikit kita harus melakukan deployment.
Bayangkan jika ada sebuah proses banyak yang harus berulang-ulang, betapa ribetnya menjalankan rutinitas edit - deploy - test berulang-ulang. Yang mana proses deploy sendiri tidak cepat prosesnya.
Maka pada saat lumpia hadir, hal ini sudah dikonsep sebagaimana hingga saat development dapat dilakukan debugging. Mengubah-ubah fungsi tanpa harus deploy terlebih dahulu.
Method
Terdapat 3 mode atau method untuk menghandle yang diperkenalkan pada tutorial atau materi ke dua ini.
Debug
Yakni sebuah mode dimana ketika diaktifkan, semua pesan yang masuk akan direspon oleh bot menjadi data JSON.
Untuk mengaktifkan mode debug, mudah saja:
// mengaktifkan mode DEBUG
// untuk mendapatkan data JSON
lumpia.DEBUG =true;
Verbose
Yakni sebuah mode, yang akan menampilkan seluruh rangkaian proses, baik trigger, middleware ataupun saat build message, termasuk juga result.
Sehingga dengan mengaktifkan mode verbose ini, kita dapat memantau dan menganalisis proses yang terjadi, dan kira-kira nyangkut dimanakah code yang dibuat ketika ada kesalahan.
Untuk mengaktifkannya juga sama dengan diatas:
// aktifkan mode verbose
lumpia.verbose =true;
Mode verbose ini dapat digunakan bersama handleUpdate()
handleUpdate
Yakni sebuah fungsi khusus pada lumpia framework, untuk memproses sebuah update atau pesan.
Dengan menggunakan fungsi / method ini, kita bisa memanipulasi data apa saja yang akan dikirim atau diproses termasuk jika ada perubahan kondisi tertentu.
Contoh kode untuk menghandle / proses update message dari user:
// matikan mode DEBUG
// setelah mendapatkan data JSON
// lumpia.DEBUG = true;
// aktifkan mode verbose
lumpia.verbose =true;
// fungsi untuk memproses pesan user
function handleUpdate() {
let text ='/halo';
let update = {
"update_id":366250335,
"message": {
"message_id":863,
"from": {
"id":530122912,
"is_bot":false,
"first_name":"BangHasan",
"last_name":"Demo",
"username":"banghasandemo",
"language_code":"en"
},
"chat": {
"id":530122912,
"first_name":"BangHasan",
"last_name":"Demo",
"username":"banghasandemo",
"type":"private"
},
"date":1635558143,
"text": text,
"entities": [{ "offset":0, "length":6, "type":"bot_command" }] }
};
bot.handleUpdate(update);
}
Tidak perlu deploy lagi untuk menguji trigger atau command-command yang telah dibikin sebelumnya.
Untuk mengujinya, sekarang tinggal jalankan saja fungsi handleUpdate tersebut.
Video
Tayang pertamakali, hari ini:
Ahad - 31 Oktober 2021
pukul 14:00 WIB.
Untuk lebih jelas memahaminya, silakan ditonton pada video berikut ini.
Kesimpulan
Dengan mengenal mode verbose dan fungsi handleUpdate() saat develop bot telegram menjadi lebih mudah.
Terutama ketika harus membuat sample perulangan kasus, step by step, dan mendebug message by message.
Penutup
Jangan lupa tinggalkan komentar, agar dunia mengenalmu, yang telah bersilaturrahim ke sini.
Dan sekaligus mungkin ingin memberikan masukan dan saran. Silakan yak!
Belajar dan mengenal regex menggunakan lumpia framework
Masih pada materi dasar, materi yang sebagian besar orang terlihat membosankan. Karena hasilnya tidak langsung tampak indah. Namun materi dasar adalah pondasi. Tanpa memahami materi dasar, alhasil mentok sana sini.
So, bagi yang belum paham bagaimana menggunakan regex.. silakan dibaca dan dipahami materi ini yak.
ReGex
ReGex merupakan kepanjangan dari Regular Expression.
Perlu diperhatikan saja, regex tiap bahasa pemrograman itu agak berbeda-beda. Meski terlihat sama, tapi ada aja bedanya.
Karena lumpia framework berjalan pada bahasa pemrograman javascript, jadi kata kuncinya adalah regex javascript.
Definisi
Ā
Ā
Definisinya regex adalah.. Hmm cari aja deh di google hehe.
Karena bukan perkuliahan yang perlu dibahas secara spesifik dan tuntas, kita cukup ambil poin-poin pentingnya saja di sini yak.
Kalau versi saya sih simple saja, yakni buat nangkap atau ngambil karakter (text) dengan pola tertentu.
Kenapa REGEX?
Mungkin awalnya rumit, tapi setelah mengalami sendiri ketika ada kasus yang komplek harus dikelola.
Maka regex ini menjadi kunci dalam pembuatan bot (proses menangkap, memfilter, mengubah, dan atau menyajikan data) spesifik.
Bahkan hampir setiap penggunaan pada lumpia framework adalah berdasarkan regex.
Coba mari kita perhatikan, bila menggunakan gaya umum untuk mendapatkan seluruh angka dari teks:
umur 21 tahun, berangkat jam 13:00 WIB
bakal ribet memecah-mecahnya.
Dengan mengenal regex, akan terasa mudah mendapatkannya.
Tips
BELAJAR-lah REGEX sekali, maka ‘kan bisa mengolah teks dengan mudah selamanya.
… karena regex adalah kunci.
Syntax
Yuk, kita mulai..
Rumusnya selalu diawali dan diakhiri dengan garis miring: /pola/ kemudian dilanjutkan simbol flag jika ada.
/pola/flag
Pemahamanan
Maksud pola adalah pola yang akan kita tangkap pada sebuah teks, misalnya kita akan deteksi kalimat yang ada kata halo nya. Maka penulisannya adalah: /halo/
Sementara flag adalah kondisi tertentu yang diinginkan, misalnya tidak membedakan huruf besar dan huruf kecil pada pola, maka bisa pakai flag i
Sehingga: /halo/i maka ketika user mengetik Halo, halo, haLO, atau HALO dimana saja posisinya, boleh di depan tengah atau belakang, semuanya tetap terdeteksi.
Penerapan
Bagaimana penerapan nya pada bot Telegram yang menggunakan lumpia?
Gunakanlah method hear atau hears untuk mendeteksinya.
Tanda khusus yang memiliki arti spesial pada regex. Ga semua harus dihapali, tapi ini yang sering dipakai ya:
^ caping atas artinya diawal kata / kalimat
$ dolar, artinya diakhir kalimat
. titik berarti sembarang karakter, kecuali ganti baris
* artinya 0 karakter atau lebih (banyak)
+ artinya 1 karakter atau lebih (banyak)
? artinya 0 atau 1. Misal: https? artinya boleh http atau https
\b penanda satu kata penuh
{m,n} artinya minimal m dan maksimal n, misal A{1,3} artinya huruf A minimal 1 dan maksimal 3
[] grup karakter ATAU sebanyak 1 aja, misal [abc] boleh a, b atau c.
[^abc] grup yang BUKAN berisi itu di dalamnya
| karakter ATAU
\w huruf alphabetnumeric. Senilai pola: [a-zA-Z0-9_]
\n ganti baris
\s spasi
\0 karakter null
\d artinya digit atau angka, senilai pola [0-9]
(...) tanda kurung, berarti hasilnya digrup
(?:...) digrup tapi tidak dimasukkan dalam tangkapan
(?<nama>...) digrup dan diberi nama
Masih banyak tanda khusus, namun itu yang bakal sering kita pakai ya.
Flag
Flag yang sering dipergunakan:
iignore case untuk tidak membedakan huruf besar dan kecil
gglobal mencari semua pola yang cocok
mmultiline cari di semua baris
u support karakter unicode
Masih ada beberapa flag, namun diawal kita perlu mengenal 3 itu saja dulu. Untuk pendahuluan yang mudah dihapal dan sering dipakai.
Escape
Karena karakter / sudah dipakai sebagai penanda regex. Maka jika ingin menuliskan karakter itu harus di escape penulisannya, dengan karakter backslash \.
Karakter-karakter spesial yang harus di escape adalah semua karakter yang telah disebutkan diatas.
Misalnya untuk menangkap user mengetik apa kabar?, maka penulisan polanya adalah:
/apa kabar\?/
tanpa di escape, tanda tanya (?) akan untuk penangkapan ada huruf r atau tidak.
Contoh lainnya, misalnya:
titik: menjadi \.
buka kurung: \(
plus: \+
dst
Use Case
Biar lebih aktual dan lebih dapat feel pemahamannya, langsung saja kita menuju beberapa contoh, kasus, dan implementasinya.
Ping
Ini contoh simple sekaligus untuk menunjukkan escape karakter khusus.
Misal:
User: /ping
Bot : Pong!
Karena kita inginkan pola yang ditangkap adalah ada garis miringnya, maka itu harus di escape.
//ping/i
/\/ping/i
Penjelasan:
Garis miring / untuk /pingHARUS di escape dengan backslash : \/
Tidak membedakan huruf besar dan kecil dengan flag i
Jika tulisan ping hanya boleh diawal teks, maka tandai dengan caping ^, sehingga menjadi: /^\/ping/i
terakhir, jika hanya kata ping saja, tidak boleh ada teks lain, maka akhiri dengan tanda $, sehingga finalnya menjadi: /^\/ping$/i
Kasus lain, ada yang ingin menangkap dengan angka saja. Misalnya kebutuhannya disuruh memasukkan umur.
User: umur 21 tahun
Bot : 21
Akan kita tangkap angka 21 nya sesudah user mengetikkan dengan diawali kata umur
Pola nya adalah:
/umur (\d+)/i
Artinya yang akan kita tangkap dengan grup kurung () adalah \d adalah angka saja, dengan terserah panjangnya asalkan minimal 1 karakter angka (makna tanda +).
var pola =/^!echo (.*),\s*(\d\d-\d\d-\d{4})$/i;
bot.hears(pola, ctx => {
ctx.reply("Kamu lahir di "+ctx.match[1]+", tanggal "+ctx.match[2]);
}
Dengan pola penulisan tanggal sederhana ini, secara umum bisa ditangkap dan mudah dipahami.
Namun, ada yang ingin lebih memfilternya atau membuat lebih detail.
Contoh pola kompleksnya:
var pola =/^!echo (.*),\s*((0?[1-9]|[12][0-9]|3[01])-(0?[1-9]|1[012])-\d{4})/i;
Yang ini ga usah diartikan haha.. Cuma buat pelengkap saja agar paham banyak cara menangkap sekaligus mevalidasinya.
Validasinya adalah tanggal tidak boleh lebih dari 31, dan bulan tidak boleh lebih dari 12.
Multiline
Pada beberapa kasus, ada yang ingin menangkap berbaris-baris pesan.
Contoh ini dapat kita temui pada kasus bot hastags.
User:
!echo Puisi Rahasia
Aku akan menulis
sebuah puisi rahasia
tapi ini rahasia ya
rahasia sekali
Maaf, ini rahasia.
Selesai.
Contohnya seperti itu. Bagaimana menangkapnya?
Ada banyak cara atau metode. Namun, cara yang saya sukai adalah dengan menangkap pesan statisnya (!echo), kemudian membuangnya. Dengan demikian, pesan dinamisnya akan kita dapatkan akhirnya.
Pesan statisnya dikit, jadi itu saja yang ditangkap. Maka pesan statis dibuatkan group.
Pola:
/^(!echo )/i
Dan kodenya seperti ini kira-kira:
bot.on(/^(!echo )/i, ctx =>{
// buang pola yang di dapatkan dengan menggantinya dengan karakter kosong atau tidak ada
let pesan = ctx.message.text.replace(ctx.match[1],'');
ctx.reply(pesan);
})
Dengan cara demikian, kita akan mendapatkan isi pesan secara penuh bebas diisi karakter apa saja.
Sapaan Halo
Agar bot terkesan ramah, kadang perlu kita buat bot sapaan.
Kadang ga cukup kata halo, ada yang yang nulisnya macam-macam: halo, hallo, hai, dan seterusnya.
Level 1:
Data semua kata yang memungkinkan dipakai:
pola /(halo|hallo)/i
Artinya, pola yang akan ditangkap kata halo, atau hallo yang letaknya dimana saja maka bot akan meresponnya.
Kodenya seperti ini kira-kira:
var pola =/(halo|hallo|helo|hello|hai|hay)/i;
bot.hears(pola, ctx => {
ctx.reply('Halo juga!');
}
Mari kita tingkatkan dan kembangkan secara bertahap.
pola /halo+/i
pesan ditangkap: halo, haloo, haloooo … huruf o bisa panjang
o minimal 1, maksimal banyakkkk
pola /hall?o+/i
pesan ditangkap: mirip level 2, hanya bisa doble l. Halo, hallo, hallooo.. dst
l kedua, boleh ada boleh tidak.
pola /h[ae]ll?o+/i
pesan ditangkap: bisa halo, helo, hallo, hello, halooo.. dst
huruf a atau e, pilih salah satu. Tapi tidak keduanya.
pola /(h[ae]ll?o+|h[ae]i+)/i
pesan ditangkap: mirip dengan level 4, ditambahkan kata hai, hei, haii, heii
Disapu jagat, semua huruf ditambahkan +
pola /(h+[ae]+l+o+|h+[ae]i+)/i
Lain-lain
Ada banyak contoh kasus lainnya. Namun, silakan banyak-banyak mencoba sesuai dengan kasus masing-masing.
Karena regex itu ilmu praktek dan latihan, jadi teman-teman harus mencobanya sendiri.
Sekadar buat tambahan referensi, tak perlu diambil hati.. copas aja kalau butuh hehe.
Jika ingin live dan biasanya tanggapan juga lebih cepat, sangat disarankan bergabung pada group Telegram @botIndonesia.
Penutup
Jangan lupa tinggalkan komentar, agar dunia mengenalmu, yang telah bersilaturrahim ke sini.
Dan sekaligus mungkin ingin memberikan masukan dan saran. Silakan yak!
šš¼ Semoga bermanfaat …
3.4 - Deeplink / Referal
Kuliah singkat mengenal deeplink dan implementasinya
Materi ada pada video, belum sempat dibuat berupa tulisan.
Tidak lagi seperti monster: 90% sumber daya tersedia, membuat bot Telegram menjadi mudah.
4.1 - Pengantar
Sekilas tentang Lumpia Framework
Pengantar
Apa ini?
Lumpia Framework atau kita sebut saja lumpia adalah sebuah framework Google Apps Script untuk mempermudah pembuatan bot api pada Telegram.
Google Apps Script atau kita sebut GAS saja, menyediakan fitur library untuk menyematkan sumber kode pihak lain untuk mempermudah membangun sebuah aplikasi.
Lumpia Framework bekerja pada fitur modul library yang tersedia pada Google Apps Script.
Pendahuluan
Library Google Apps Script (GAS) untuk Telegram edisi ke-3, merupakan suksesi dari GAS Library sebelumnya, yakni GASLib edisi 1 dan edisi 2 Lib v2 yang telah berhasil banyak dimanfaatkan.
Terinspirasi dari Telegraf yang dirasa cukup praktis dan efektif pada penggunaan sehari-hari. GASLibv3 membuat karakteristiknya sendiri, lantaran coding pada GAS memiliki banyak keterbatasan seperti tidak support proses (true) async, promise, deteksi tipe blob / stream, tidak banyak paket ready yang bisa langsung diberdayakan, dan berbagai kendala lainnya.
Namun, tidak perlu bekecil hati, framework GASLibv3 ini insyaAllah, lebih dari cukup guna kebutuhan sebuah proyek dalam skala kecil hingga menengah. Apalagi ditambah dukungan komunitas Grup Telegram @botIndonesia yang cukup baik menjadikan kamu tidak bingung harus pergi kemana untuk sharing.
Pada edisi ini, terdapat perubahan cukup besar dan cukup signifikan secara struktur, konsep, dan penggunaan. Tidak lagi seolah sebuah library namun menjadi sebuah framework sempurna dan modern untuk bot telegram. Dengan demikian, harapannya, penggunaan bisa menjadi lebih produktif untuk kebutuhan pekerjaan, kesenangan, maupun tools pembantu lainnya.
Fitur
Semakin simple lagi dan lagi
Konsep modern, terdapat middleware untuk melakukan hook message
Support untuk penyediaan plugin yang dapat disisipkan pada middleware
Tidak ribet memikirkan pondasi kodingan, sehingga bisa lebih berfokus pada proses flow proyek bot kamu
Dokumentasi bagus, mudah dipelajari dan diikuti
Terdapat panduan dan tutorial, secara tertulis maupun video
Sumber kode terbuka, yang dapat diperiksa, diteliti, dan dipelajari oleh siapapun
Didukung oleh komunitas telegram @botindonesia yang cukup aktif.
Pros
Menggunakan bahasa pemrograman javascript yang telah dikenal sangat luas, banyak literasi dan dukungan komunitas luas. Sampai saat ini masih terus dikembangkan.
Integrasi dengan seluruh service yang disediakan Google (Drive, Docs, Translate, Map, Bigdata, dan ratusan service lainnya).
Bisa dijadikan service restful guna diintegrasikan lebih luas dengan proyek-proyek lainnya
Mendukung remote database (oracle, mysql, mariadb, nosql: mongodb, dynamodb, firebase, dlsb), internal (user service properties) ataupun “psedo” seperti spreadsheet.
Masih berstatus aktif dalam pengembangan
Cons
Sebagaimana halnya melekat pada service Google Apps Script, maka melekat pula kelemahannya pada framework ini. Misal diantaranya, tidak support proses async, terdapat pembatasan fetch, dan limitasi lainnya.
Pesan user yang berupa text dan trigger /start akan dieksekusi (ditangkap keduanya), yang didahulukan adalah jenis broadcast (bot.on), meskipun seandainya codingan diatas dibalik, diletakkan dibawahnya trigger (bot.cmd).
Bisa dianggap sebagai fitur, tapi juga bisa dianggap sebagai bugs juga.
tidak ada versi librarynya, karena dibangun secara langsung
ketikda dikonversi menjadi library, berubah nama menjadi bakpia dan lumpia.
Versi
Nama
Seperti halnya android, kita mengenal Kit Kat, Oreo, dlsb.
Maka, kode library ini diberi kode penamaan nama makanan yang ada di pasar. Jadi kalau dibahas jadi enak, kita ngobrolin makanan hehe..
Nomor
Penomoran versi
Misalnya v3.1
Versi mayor adalah versi 3
Dimana nomor 3 adalah generasi atau edisi ke-3 dari Library GAS untuk Telegram ini. Versi ini tidak berubah, atau setidaknya tidak akan berubah dalam jangka dekat bilamana belum ada edisi baru lagi.
Versi minor adalah 1
Versi minor adalah versi build. Yang akan terus bertambah nilainya lantaran hasil snapshot dari release versi pada GAS.
Jika terdapat nomor minor yang lompat (tidak ada), berarti dicabut rilisnya. Bisa jadi dikarenakan gagal / cacat, atau kesalahan teknis release.
Mengaktifkan logging secara detail dipergunakan saat debugging.
Verbose hanya berjalan pada mode panel editor pada GAS ketika menjalanan sebuah fungsi ke doPost atau handleUpdate().
Di bot tidak ada perbedaan apa-apa. Matikan mode verbose ini jika sudah tahap produksi, agar tidak terlalu banyak script bekerja.
default: false;
lumpia.verbose =true;
version
Untuk mengetahui versi lumpia yang sedang dipergunakan.
Syntax: lumpia.version
Hasil berupa tipe data object (json) bersifat informasi.
field
keterangan
active
versi yang aktif saat ini
number
selalu 3, sesuai generasi yang direlease
build
nomor saat di build, terus bertambah
name
nama code library
full
penyebuatan secara penuh
group
informasi grup
url
informasi url
bot.cmd(['ver', 'versi', 'version'], ctx => {
let version = lumpia.version;
let pesan =`š¤ Bot ini dibangun menggunakan <b>${version.name}</b> <code>v${version.number}.${version.build}</code>`;
pesan +=`\n\nā Sumber bersama belajar <b>Bot Telegram Indonesia</b>`let keyboard = [
button.url('š Docs', 'https://lumpia.js.org'),
button.url('š„ @botindonesia', 'https://t.me/botindonesia')
]
ctx.replyWithHTML(pesan, {
reply_markup: markup.inlineKeyboard(keyboard)
});
})
4.5 - Bot
Base variable bot sebagai object base dari lumpia
RESUME
Resume method dan params yang dipergunakan oleh bot.
Adalah variable umum (kamu boleh menggantinya jika mau), yang berupa object gabungan segala middleware, method atau fungsi-fungsi, dan data-data penunjang lainnya.
Seperti halnya pada sistem lainnya (Ruby, Go, NodeJS, PHP, dsb), menggunakan bot sebagai variable untuk menghandlenya.
bot menjadi sebuah object sebagai perwakilan atas bot Telegram dengan ‘jiwa’ token-nya.
Token bot adalah identitasnya. Sehingga misalnya, botnya adalah belarGASbot dengan token 123:abc. Maka ketika kita coding, menyebut bot adalah si belajarGASbot nya (yang telah disambungkan dengan identias token).
Amsal
Sebagai permisalan dalam kehidupan ini, adalah sebagai berikut:
botfather adalah ortu yang melahirkan bot
Ada permintaan nama, karena belum pernah ada.. kemudian diberilah nama belajarGASBot
Selanjutnya mendapatkan token sebagai nomor identitas (Akta Lahir) nya.
bot dikalungkan token sebagai tanda peserta. Yakni di deklarasikan, diumumkan.. Wooi si bot ini adalah pengenal untuk belajarGASbot
Sehingga, menyebut bot adalah menyebut object yang telah ditentukan tersebut.
Sebagaimana manusia, bot memiliki fungsi atau istilahnya disebut method.
Kalau manusia bisa makan, minum, jalan-jalan, kencan, dan lainnya. Maka bot memiliki method untuk mengirim pesan, kirim gambar, suara, kick orang, dan lain lain.
Mengenal Method Bot
Contoh fungsi dari telegram.. yakni mengirim pesan. Maka, cara mengaksesnya adalah:
bot.telegram.sendMessage(chat_id, text)
Terdapat 3 field pada susunan diatas:
bot penyebutan / pemanggilan bot kita
telegram method atau fungsi dari/untuk/ke Telegram
sendMessage menjalankan fungsi untuk mengirim pesan.
Fungsi kirim pesan (sendMessage) sendiri memiliki kelengkapan minimal 2 syarat agar terkirim:
chat_id adalah ruangan obrolan
text adalah isi pesan yang akan dikirim.
Misalnya, mau berkirim pesan ke ruangan (grup) yang memiliki id -10010000001, maka:
maka bot akan mengirim pesan Halo Brok! ke ruangan ber kode id -10010000001.
Darimana kode ruangan (chat_id) ini berasal? Chat ID ditentukan oleh telegram. Kita tidak bisa menentukan sendiri kodenya. Namun kita bisa mengetahui ID nya dengan beberapa cara yang (insyaAllah) nanti akan dijelaskan pada halaman lainnya.
Implementasi GAS
// token bot dari bapak bot
const token ='123:abc';
// adminbot variable untuk chat_id: boleh id kamu sendiri, boleh id grup
const adminbot =213567634; // ini adalah id saya, @hasanudinhs
// inisiasi bot
const bot =new lumpia.init(token);
// fungsi mengirim pesan
function sendMessage() {
let result = bot.tg.sendMessage(adminbot, 'halo mas brok');
Logger.log(JSON.stringify(result, null, 2));
}
Kemudian jalankan fungsi tersebut pada Google Apps Script. Cara menjalankannya, bisa disimak pada materi menjalankan fungsi.
Jika berhasil, pesan kamu akan terkirim. Dan pada program, mendapatkan log sendMessage.
A PNG image with the thumbnail, must be up to 128 kilobytes in size and have width and height exactly 100px, or a TGS animation with the thumbnail up to 32 kilobytes in size
deleteStickerFromSet
Use this method to delete a sticker from a set created by the bot.
Use this method to get current webhook status. Requires no parameters. On success, returns a WebhookInfo object. If the bot is using getUpdates, will return an object with the url field empty.
telegram.getWebhookInfo()
getChat
Use this method to get up to date information about the chat (current name of the user for one-on-one conversatio
ns, current username of a user, group or channel, etc.).
Use this method to get a list of administrators in a chat. On success, returns an Array of ChatMember objects that contains information about all chat administrators except other bots. If the chat is a group or a supergroup and no administrators were appointed, only the creator will be returned.
Use this method to set the score of the specified user in a game. On success, if the message was sent by the bot, returns the edited Message, otherwise returns True. Returns an error, if the new score is not greater than the user’s current score in the chat.
Pass True, if the high score is allowed to decrease. This can be useful when fixing mistakes or banning cheaters
getGameHighScores
Use this method to get data for high score tables. Will return the score of the specified user and several of his neighbors in a game. On success, returns an Array of GameHighScore objects.
Use this method to ban a user in a group, a supergroup or a channel. In the case of supergroups and channels, the user will not be able to return to the chat on their own using invite links, etc.
Informs a user that some Telegram Passport elements they provided contains errors. The user will not be able to re-submit their Passport to you until the errors are fixed (the contents of the field for which you returned the error must change).
Koleksi method bantuan guna keperluaan saat development
Inisiasi
Untuk inisiasi awal
const helper = lumpia.helper;
// atau
const Helper = lumpia.helper;
Silakan menggunakan huruf besar atau kecil untuk konstantanya, sesuaikan sendiri dengan kebiasaan masing-masing.
Helper
Koleksi method untuk membantu saat development.
clearHTML
membersihkan text dari tags html (meng-escape), sehingga tidak terjadi error saat berada pada parse_mode HTML.
Format:
clearHTML(text)
let text ='Bilangan 12 < 23';
let pesan = helper.clearHTML(text);
clearMarkdown
membersihkan text dari tags markdown (meng-escape), sehingga tidak terjadi error saat berada pada parse_mode markdown.
Format:
clearMarkdown(text)
let text ='Hitungan 2 * 3 adalah 6';
let pesan = helper.clearMarkdown(text);
forEach
seperti forEach pada javascript, namun bisa dipergunakan untuk objek (JSON).
Format:
forEach(object, callback);
callback memiliki 2 parameter:
contain
index
var data = [ 'satu', 'dua', 'tiga']; // contoh tipe array
var data = { satu:1, dua:2}; // contoh tipe json
helper.forEach(data, (isi, index) => {
console.log(index, isi);
});
isIn
Memerika apakah suatu nilai terdapat pada sebuah array
Format:
isIn(list, index)
let admin = [ 123, 456 ];
let id = msg.from.id;
if (helper.isIn(admin, id)) {
console.log('Dia adalah admin!');
}
random
membuat hasil acak untuk bilangan atau array.
Format:
random(list);
random(min, max);
params:
list bertipe array
min dan max bertipe integer
let list = ['aku', 'kamu', 'dia'];
helper.random(list) // hasil acakan dari aku, kamu, atau dia
helper.random(0,100) // hasil acakan antara angka 1 - 100
textBlob
membuat text bertipe blob
Format:
textBlob(namaFile, text)
params:
namaFile tanpa ekstensi, otomatis akan ditambahkan .txt
text bertipe string
let blob = helper.textBlob('namaFile', 'Hasanudin H Syafaat');
Output
Tipe output pada Google Apps Script dalam mode web app.
Secara umum dapat dipergunakan untuk merespon fungsi pada doPost(e).
Ada 3 yang tersedia:
outputText(text) menghasilkan keluaran bertipe text
outputJSON(data) menghasilkan keluaran bertipe JSON, biasanya cocok untuk pembuatan REST API
outputHTML(html) menghasilkan keluaran bertipe HTML, biasanya cocok untuk bertipe website biasa
nama
alias: name
menghasilkan format nama user, baik plain text ataupun html.
Format:
name(object);
return:
first
last
fullname
username
html
let nama = helper.name(ctx.from);
console.log(nama.fullname);
typeCheck
mengecek tipe suatu variable
Format:
typeCheck(data);
let data = [ 1, 2, 3];
let tipe = helper.typeCheck(data);
console.log(tipe) // result: array
if (tipe ==='array') console.log('Data bertipe Array!');
compactOptions
membersihkan objek dari null / undefined.
Format:
compactOptions(data);
let options = { satu:1, kosong:null, tidak:undefined };
compactOptions(options);
hasProp
Memeriksa apakah objek tertentu memiliki properti dengan nama tertentu.
bantuan untuk pembuatan keyboard inline, kompabilitas Lib V1/2.
method
params
keterangan
text
text, data, hide
jika ditekan menghasilkan callback data
inline
text, data, hide
alias dari method text diatas
query
text, data
bounding ke switch_inline_query jika ditekan, akan memilih jendala chat yang mana sebagai tujuan
queryChat
text, data
bounding ke switch_inline_query_current_chat jika ditekan, pada text box memunculkan username dan text isian. Digunakan untuk bot inline
url
text, url, hide
jika ditekan akan menuju ke url
Default untuk hide adalah false.
Sample belum dibikin (lagi M š¤£)
Silakan tinggalkan komentar saja jika ingin membantu melengkapi dokumentasi…
5 - Bot Father
Penjelasan tentang bapak bot
Halaman khusus tentang bot father alias bapak bot di Telegram.
5.1 - Pengantar
Penjelasan sekilas tentang bot father
Berbeda dengan dunia kenyataan, bahwa siapa pun lahir adalah dari seorang ibu. Maka di Telegram, semua bot api di-“lahir”-kan (dibuat / didaftarkan) dari seorang bapak. Bapak Bot dalam bahasa Inggris adalah Bot Father.
Jadi jika ingin membuat bot, pertama kali yang harus dilakukan adalah mendaftarkan secara administratif ke bapak bot.
Di situ akan ditanya (memasukkan) terlebih dahulu 2 hal yang paling dasar, yakni nama dan username bot. Informasi lainnya (deskripsi, foto, pengaturan, dll) bisa menyusul.
Definisi
@botFather adalah official bot (bot resmi) dari Telegram, yang berfungsi untuk membuat bot baru, mengelola (menejemen) bot yang sudah ada, ataupun menghapus.
Dari sini lah semua bot api telegram berawal mula.
Centang Biru
Karena ini adalah bot terpenting pada Telegram, maka bot ini memiliki tanda verifikasi.
Pastikan jika berinteraksi dengan @botFather yang memiliki tanda centang birunya.
Administratif
Jangan lupakan, saat sudah coding membuat bot masih ada bapak bot untuk menseting dan administrasinya.
5.2 - Mendaftar Bot
Mendaftar dan mendapatkan token bot api
Untuk memulai membuat bot api, kamu wajib punya token bot.
Langkah yang harus dilakukan untuk mendapatkannya adalah dengan mendaftarkan bot ke @botfather.
Berikut ini langkah-langkah mendapatkan token pada botfather :
Cycle bot dari grup: keluarkan bot, lalu masukkan lagi
Biasanya cara ini sudah cukup.
Primary
Jika bot masih belum menerima respon, jadikan bot sebagai admin group.
Debugging
Untuk memastikan bot bisa menerima pesan atau tidak. Aktifkan mode debug pada lumpia:
lumpia.DEBUG =true;
Jika bot menerima pesan, namun tidak merespon. Berarti ada kesalahan koding.
Enable Privacy
Caranya sama saja dengan disabled diatas. Pada pilihan klik tombol Enable.
6 - Google Apps Script
Penjelasan mendetail tentang Google Apps Script
Menjelaskan tentang pengoperasikan Google Apps Script dan referensinya.
6.1 - Proyek Baru
Pembuatan Proyek Baru
Untuk preferensi bahasa, silakan disesuaikan sendiri ya. Karena meski dalam bahasa indonesia, kenyataannya google masih campur aduk bahasanya, belum sepenuhnya 100% tertranslate.
Rekomedasinya menggunakan preferensi sesuai bahasa aslinya.
Buka Proyek
Ada beberapa cara untuk membuka proyek baru pada Google Apps Script.
Who has access to the app: pilih anyone, even anonymous
Kemudian, terakhir klik tombol Deploy
5. URL Web App
Setelah deploy, akan di dapatkan URL Web App.
URL ini yang akan dipasangkan pada webhook.
6.3 - Perizinan
Perizinan aplikasi Google Apps Script
Bilakan mana Google Apps Script meminta otorisasi, lantaran baru pertama kali mengakses satu atau beberapa service tertentu maka kamu perlu meninjau dan memberikan izin.
Misalnya, pertama kali mengakses atau menjalankan:
fetch ke situs luar, telegram termasuk situs di luar google. Maka harus diizinkan agar dapat berjalan.
mengakses service spreadsheet, google drive, dll
mengakses tambahan layanan baru
dan beberapa tinjuan izin lainnya, bergantung skup nya
Kemudian kamu bisa memeriksanya, dan mempertimbangkannya apakah memberinya izin atau membatalkan dan memeriksanya ulang.
1. Permintaan Otorisasi
2. Pilih akun
Pilih akun yang telah login sebelumnya.
3. Lanjutan
Pilih atau klik, tulisan lanjutan. Posisinya sangat kecil.
4. Tetap Buka
Tetap buka aplikasi, meski mendapatkan peringatan oleh Google. Peringatan ini bersifat normatif, karena akan mengakses service baru agar berhati-hati.
5. Izinkan
Terakhir, kamu harus memberinya izin untuk melanjutkan.
7 - Library
Daftar Library yang berkaitan dengan GAS
Banyak library yang tersebar untuk melengkapi proyek GAS kita. Sehingga kita tidak perlu susah-susah membuild sendiri.
Jika kamu punya library menarik lainnya, silakan diinformasikan pada kolom komentar ya.
Katagori
Kita buat dalam 2 katagori, yang bertipe General (umum) dan bertipe Plugins.
Ditambahkan 1 lagi, yakni kode sumber terbuka - yang menggunakan lumpia framework.
7.1 - Umum
Library dapat dipergunakan secara umum untuk proyek GAS
Pra-Kata
Tidak semua library dimasukkan. Yang paling memiliki korelasi dan paling bermanfaat secara umum dipergunakan akan dimasukkan.
Silakan memberikan saran atau masukkan via komentar dibawah.
List
Berikut ini daftar Library yang dapat membantu proyek GAS kalian
This is a Google Apps Script library for supporting Document service, Docs API, Spreadsheet service, Sheets API, Slides service and Slides API. The aim of this library is to compensate the processes that they services cannot achieve.
This is a Google Apps Script library for creating, updating and exporting Google Apps Script project of the standalone type using Drive API. In this case, Apps Script API is not used.
Mustache is a logic-less template syntax. It can be used for HTML, config files, source code - anything. It works by expanding tags in a template using values provided in a hash or object.
We call it “logic-less” because there are no if statements, else clauses, or for loops. Instead there are only tags. Some tags are replaced with a value, some nothing, and others a series of values.
Harapannya suatu saat dapat membuat domain khusus untuk ruang pembelajaran bot Indonesia. Guna memajukan dan memperkaya referensi dan semangat anak-anak muda untuk belajar pemrograman melalui sarana bot telegram.
Nama domain khusus juga dapat menjadikan pencirian dan identitas. Memiliki brand, dan kemudahan dalam penyebutan. Dapat dijadikan sebuah rumah besar berisi ruang-ruang belajar dan sekat-sekat ilmu lainnya.
Mohon maaf bila berasa personalisasi. Saat ini tidak ada budget, sehingga di sub-kan pada domain pribadi lumpia.banghasan.com
curl -X POST \
-H 'Content-Type: application/json'\
-d '{"chat_id": "123456789", "text": "This is a test from curl"}'\
https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage
const bot =new lumpia.init(token, { log_id:12345 });
function doPost(e) {
bot.doPost(e);
}
bot.cmd('ping', (ctx, next) => {
let time_start =Date.now();
let res = ctx.replyIt('..pong!');
let time_stop =Date.now();
let time_delta = (time_stop - time_start) /1000; // mili detik
let time =new Intl.NumberFormat('id').format(time_delta); // jadiin detik, sekaligus di format
let msg_id = res.result.message_id;
bot.telegram.editMessageText(ctx.chat.id, msg_id, null, `<b>Pong!</b> Proses <code>${time}</code> detik.`, { parse_mode:'html' });
})