Lanjutan: Customisasi Reminder Sholat Bot Telegram (GAS II-13)
Setelah materi pengingat waktu sholat v2 kemarin dibuat, muncul banyak pertanyaan dan komentar. Beberapa hal perlu kita bahas lebih lanjut, agar lebih sesuai kebutuhan.
Pendahuluan
Pra-Materi
Ini adalah materi lanjutan Reminder Jadwal Sholat v2.
Jadi bagi yang belum praktek yang materi tersebut, dipersilakan mencoba dan menjalankan terlebih dahulu.
Kasus
Berikut ini beberapa kasus yang mungkin terjadi pada kalian:
- Ingin broadcast atau remindernya ke beberapa grup atau channel sekalian
- Jika hari jum’at, informasi
dzuhur
diganti menjadiSholat Jum'at
- Menambah reminder sendiri, misalnya untuk Sahur atau QL (qiyamul lail).
- Fitur auto hapus sesudah beberapa menit, agar tidak spamming
Sebenarnya masih ada beberapa kasus lagi, namun karena tidak banyak yang request jadi tidak saya masukkan di sini.
Yuk mari kita mulai menambahkan aksesorisnya dan menambal kasus tersebut.
+ Broadcast
Kita mulai dari penambahan atau modifikasi, agar broadcast bisa dilakukan dibeberapa grup sekaligus.
Cuma ada 2 yang harus diubah.
1. tujuanID
Isikan nilai dalam bentuk array.
Awalnya:
var tujuanID = -1234567891;
Ubah menjadi :
// menjadi array, multi grup/channel
var tujuanID = [ -1234567891 ] ;
Jika nanti dua grup atau lebih, tambahkan dibelakangnya:
// menjadi array, multi grup/channel
var tujuanID = [ -1234567891, -987654321 ] ;
2. sendMessage
Ubah fungsi kirim yang lama :
if (kirim) {
try {
tg.sendMessage(tujuanID, pesan, 'HTML')
} catch (e) {
tg.sendMessage(adminBot, e.message)
}
}
pada bagian tg.sendMessage(tujuanID, pesan, 'HTML')
tujuanID.forEach((id) => {
var res = tg.sendMessage(id, pesan, 'HTML')
})
Sudah, itu saja.
+ Sholat Jum’at
Caranya, kita tambahkan kode di atasnya kode pesan = pesan
.
kode bisa dilihat pada video youtube, agar ada pembeda blog dan video
+ New Reminder
Misalnya untuk menambah waktu sholat malam (Qiyamul Lail), Tahajud, waktu sahur, Waktu Belajar, atau waktu-waktu rutinitas lainnya.
Kita buat contoh adalah membuat reminder baru untuk Tahajud, jam 2.
Tutorial dan kode nya bisa dilihat pada video youtube juga
+ Anti Spamm (Auto Hapus)
Dikarenakan bot berpotensi mengirim spam terus menerus, maka untuk mencegahnya perlu dibuat atau pengubahan/penambahan coding.
Tambah Variable
Tambahkan variable baru sesudah baris seting zonaTime
:
// atur berapa menit pesan reminder akan dihapus
var menitHapus = 5
// ini tidak usah diubah, dicopas/diketik saja
var jadwalHapus = user.getValue('jadwalHapus');
jadwalHapus = jadwalHapus ? JSON.parse(jadwalHapus) : false;
Seperti ini kira-kira:
Tambahan Fungsi
Cari dan temukan :
// --- //-// --- //
// --- UNTUK PEMULA: cukup diatas itu saja yang diubah ---
// --- //-// --- //
kemudian tambahkan fungsi dibawah ini:
function tambahJadwalPenghapusan(chat_id, message_id) {
let date = new Date();
date.setMinutes(date.getMinutes() + menitHapus)
let waktu = Utilities.formatDate(date, 'GMT+7', "HH:mm")
let data =
{
waktu: waktu,
chat_id: chat_id,
message_id: message_id
}
if (!jadwalHapus) return user.setValue('jadwalHapus', JSON.stringify([data]));
jadwalHapus.push(data);
return user.setValue('jadwalHapus', JSON.stringify(jadwalHapus));
}
Seperti ini kira-kira:
Modif tampilkanJadwal
Ada 2 tempat yang harus di modif pada fungsi tampilkanJadwal
. Perhatikan dengan teliti ya.
1. sendMessage
Tambahkan:
tambahJadwalPenghapusan(res.result.chat.id, res.result.message_id)
sesudah:
var res = tg.sendMessage(id, pesan, 'HTML')
sehingga menjadi:
tujuanID.forEach((id) => {
var res = tg.sendMessage(id, pesan, 'HTML')
tambahJadwalPenghapusan(res.result.chat.id, res.result.message_id)
})
Seperti ini kira-kira:
2. rutin baru
Tambahkan dipaling akhir dari fungsi tampilkanJadwal()
, yakni sebelum tanda }
if (jadwalHapus) {
let indexHapus = []
tg.util.forEach(jadwalHapus, (data, index) => {
if (data.waktu == waktuSekarang) {
try {
tg.deleteMessage(data.chat_id, data.message_id)
} catch(e) {
// tidak perlu dicatch
}
indexHapus.push(index)
}
})
// dibuat terpisah, karena bisa jadi waktunya sama (multi tujuan ID)
if (indexHapus.length > 0) {
indexHapus.sort().reverse()
indexHapus.forEach((data) => {
jadwalHapus.splice(data, 1)
})
user.setValue('jadwalHapus', JSON.stringify(jadwalHapus))
}
}
Video
Silakan disimak di video nya jika bingung atau ingin lebih jelas dalam prosesnya.
Referensi
Sebagai referensi dan tambahan bacaan dan materi, silakan diperiksa sebagai berikut:
- Reminder Jadwal Sholat v2
- Format Date Time
- Materi Helo Bot
- Welcome Bot Lib V2
- Library GAS Telegram Versi 2
- Bot API Telegram
- Format Text / Parse Mode
- API myQuran
- Github - Source Code Reminder Waktu Sholat
Penutup
Jika ada pertanyaan silakan bergabung ke grup Telegram @botIndonesia bersama para coder lainnya kita saling sapa, diskusi, sharing dan silaturrahim.
Mohon maaf jika ada salah-salah kata ada khilaf, dan semoga bermanfaat.