Tutorial Membuat Telegram Bot Tanpa Repot:
Google Spreadsheet dan Apps Script dalam Satu Sentuhan!
PENDAHULUAN
Chatbot adalah aplikasi berbasis percakapan yang sangat membantu untuk memberikan
informasi, menjawab pertanyaan, atau menjalankan tugas otomatis seperti pengecekan
jadwal. Dalam tutorial ini, kita akan membuat chatbot bernama “Mr. Bakti Schedule”, yang
membantu mahasiswa untuk mengetahui jadwal dosen dan menginput tugas. Bot ini akan
terhubung dengan Google Spreadsheet sebagai penyimpanan data dan Telegram sebagai
antarmuka pengguna.
Tujuan Tutorial
Tutorial ini bertujuan untuk membimbing pengguna dari awal hingga akhir dalam membuat
chatbot Telegram sederhana. Pada akhir tutorial, Anda akan bisa:
1. Membuat dan mengonfigurasi bot Telegram.
2. Menghubungkan bot dengan Google Spreadsheet menggunakan Google Apps Script.
3. Membuat fitur chatbot yang mendukung penginputan tugas, pengecekan jadwal, serta
bahasa multi-bahasa (Indonesia, Inggris, Belanda).
4. Menguji bot agar berfungsi dengan baik di Telegram.
Deskripsi Proyek
Proyek ini bertujuan untuk membangun sebuah chatbot yang dapat mempermudah mahasiswa
dalam berinteraksi dengan dosen mereka, terutama dalam hal mengelola informasi terkait
jadwal perkuliahan dan pengumpulan tugas. Chatbot ini diberi nama Mr. Bakti Schedule dan
dirancang khusus untuk dosen Pak Bakti Dwi Waluyo. Chatbot ini diintegrasikan dengan
platform Telegram serta terhubung dengan Google Spreadsheet untuk menyimpan dan
mengelola data yang diinput oleh mahasiswa. Penggunaannya yang fleksibel dan mudah
diakses membuat bot ini menjadi solusi yang efisien untuk mengotomatisasi tugas
administratif dalam lingkungan pendidikan. Berikut adalah fitur-fitur utama proyek ini yang
dibahas secara rinci:
1. Menyediakan Informasi Jadwal Dosen Berdasarkan Hari dalam Multi-bahasa
Salah satu fitur utama dari Mr. Bakti Schedule adalah kemampuannya untuk
memberikan informasi mengenai jadwal perkuliahan Pak Bakti berdasarkan hari yang
diminta oleh mahasiswa. Pengguna hanya perlu mengetikkan nama hari dalam salah satu dari
tiga bahasa yang didukung—bahasa Indonesia, Inggris, atau Belanda—seperti "Senin",
"Monday", atau "Maandag". Chatbot kemudian akan merespons dengan menampilkan jadwal
perkuliahan yang sesuai untuk hari tersebut dari berbagai latar belakang bahasa yang berbeda,
tanpa membatasi akses hanya pada satu bahasa. Mahasiswa bisa mengetik perintah atau nama
hari dalam salah satu dari tiga bahasa ini, dan chatbot akan merespons sesuai dengan bahasa
yang digunakan oleh mahasiswa.. Dengan adanya fitur ini, mahasiswa tidak perlu lagi
mencari informasi jadwal di tempat lain atau menghubungi dosen langsung, yang dapat
memakan waktu. Semuanya dapat diakses hanya dengan beberapa ketukan di aplikasi
Telegram.
Contoh Interaksi:
User mengetik “Senin”
Bot menjawab: “ SENIN
Mata Kuliah : Soi
Waktu : 08.00-10.00
Kelas : A”.
Fitur ini sangat bermanfaat karena memungkinkan mahasiswa untuk mengakses informasi
jadwal dengan cepat dan efisien, terutama jika mereka sedang terburu-buru atau tidak
memiliki akses ke sumber informasi lain. Selain itu dengan danya fitur multi-bahasa ini
sangat relevan jika ada mahasiswa asing yang juga mengikuti perkuliahan Pak Bakti atau jika
dosen mengajar di lingkungan internasional di mana bahasa Inggris dan Belanda sering
digunakan.
2. Penginputan Daftar Tugas dengan Format yang Terstruktur
Selain menyediakan jadwal, chatbot ini juga mendukung penginputan tugas oleh
mahasiswa. Fitur ini memungkinkan mahasiswa untuk mengirimkan tugas yang telah
diberikan oleh dosen dengan cara yang terstruktur dan rapi. Setelah mahasiswa mengetikkan
perintah /format, chatbot akan memberikan template atau format tugas yang harus diisi oleh
mahasiswa. Template ini meliputi detail penting seperti nama mahasiswa, NIM, kelas, mata
kuliah, serta deskripsi tugas yang harus dikumpulkan.
Setelah mengisi format tersebut, mahasiswa dapat mengirimkan tugas mereka
menggunakan perintah /submit. Data tugas tersebut kemudian disimpan secara otomatis di
Google Spreadsheet yang telah dihubungkan dengan bot. Spreadsheet ini hanya bisa diakses
oleh dosen Pak Bakti untuk keperluan pengecekan dan penilaian tugas.
Contoh Format Input Tugas:
/submit
Nama : [Nama Mahasiswa]
NIM : [Nomor Induk Mahasiswa]
Kelas : [Nama Kelas]
Mata Kuliah : [Nama Mata Kuliah]
Tugas : [Deskripsi Tugas]
Fitur ini dirancang untuk mempermudah pengumpulan tugas secara online, mengurangi risiko
tugas hilang atau terlewatkan, serta memastikan bahwa semua tugas tersimpan secara
terorganisir di spreadsheet.
3. Melihat Status Pengerjaan Tugas
Chatbot Mr. Bakti Schedule juga dilengkapi dengan fitur yang memungkinkan
mahasiswa untuk mengecek status tugas yang telah mereka kumpulkan. Mahasiswa hanya
perlu memasukkan NIM mereka, dan bot akan memberikan informasi apakah tugas yang
dikirimkan sudah diterima oleh dosen atau masih dalam proses pengecekan. Fitur ini sangat
membantu dalam memastikan bahwa semua tugas yang dikirimkan mahasiswa telah sampai
dengan benar ke pihak dosen, sehingga mereka tidak perlu khawatir apakah tugas mereka
sudah diterima atau belum.
Fitur ini juga mengurangi beban dosen dalam memberikan umpan balik secara manual
kepada setiap mahasiswa, karena status dapat dicek secara otomatis melalui bot.
Contoh Interaksi:
User mengetik NIM mereka: "5213151002".
Bot merespons: " Data tugas Anda telah disimpan. Terima kasih!."
Fitur ini memberikan transparansi dalam proses pengumpulan tugas dan membantu
mahasiswa untuk lebih teratur dalam mengelola tugas yang mereka kirimkan.
4. Fitur Bantuan
Untuk memastikan mahasiswa mendapatkan bantuan yang mereka butuhkan, bot ini
menyediakan fitur /help yang akan menampilkan informasi kontak dosen, Pak Bakti, jika ada
pertanyaan lebih lanjut atau informasi tambahan yang diperlukan oleh mahasiswa. Fitur ini
memudahkan mahasiswa untuk menghubungi dosen secara langsung jika mereka menghadapi
kendala atau membutuhkan penjelasan lebih lanjut tentang jadwal atau tugas.
Contoh Interaksi:
User mengetik: “/help.”
Bot merespons: "Untuk info lebih lanjut, silakan hubungi Mr. Bakti: CP:
081266990003."
Dengan fitur ini, chatbot tidak hanya membantu dalam hal informasi tugas dan jadwal, tetapi
juga menyediakan jalur komunikasi yang jelas antara dosen dan mahasiswa.
Prasyarat
Sebelum memulai, pastikan Anda telah memenuhi prasyarat berikut:
1. Perangkat Lunak yang Dibutuhkan:
1) Google Apps Script: Digunakan untuk menghubungkan bot dengan Google
Spreadsheet.
2) Bot Telegram: Diperlukan untuk menjalankan bot di platform Telegram.
3) Google Spreadsheet: Sebagai database tempat menyimpan daftar tugas.
2. Pengetahuan Teknis yang Diperlukan:
1) Dasar-dasar pemrograman JavaScript.
2) Pemahaman cara kerja API (dalam hal ini API Telegram).
3) Penggunaan Google Apps Script.
3. Alat yang Dibutuhkan:
1) Telegram: Buat akun Telegram jika belum punya.
2) Bot Telegram Token: Didapatkan dari @BotFather.
3) Google Account: Untuk membuat Google Spreadsheet dan mengakses Google Apps
Script.
PERSIAPAN LINGKUNGAN PENGEMBANGAN
Untuk membangun chatbot Mr. Bakti Schedule, Anda hanya perlu menggunakan Google
Spreadsheet sebagai penyimpanan data dan Google Apps Script untuk menjalankan kode
backend yang akan berkomunikasi dengan API Telegram. Kedua alat ini sudah terintegrasi
dalam ekosistem Google dan dapat digunakan secara gratis. Berikut adalah langkah-langkah
untuk mempersiapkan alat-alat yang diperlukan:
1. Membuat dan Mengkonfigurasi Google Spreadsheet
Google Spreadsheet akan digunakan untuk menyimpan data yang dibutuhkan oleh chatbot,
seperti jadwal mengajar Pak Bakti dan daftar tugas yang diinput oleh mahasiswa. Berikut
langkah-langkahnya:
1) Masuk ke Google Drive: Buka Google Drive dan login dengan akun Google Anda.
2) Buat Spreadsheet Baru: Klik tombol New dan pilih Google Sheets. Ini akan membuat
dokumen spreadsheet baru di Google Drive Anda.
3) Atur Struktur Data: Buatlah sheet dengan kolom-kolom yang diperlukan untuk
menyimpan informasi seperti jadwal dosen dan daftar tugas mahasiswa. Misalnya:
Untuk Jadwal, buatlah kolom seperti: Hari, Mata Kuliah, Waktu, dan Kelas.
Untuk Tugas, buatlah kolom seperti: Nama Mahasiswa, NIM, Kelas, Mata
Kuliah, Tugas, dan Status.
4) Dapatkan Spreadsheet ID: Setelah membuat spreadsheet, Anda perlu mendapatkan
Spreadsheet ID. Spreadsheet ID dapat ditemukan di URL dokumen Anda. Misalnya,
pada URL [Link]
FvzJgK_1SwPt0rT6RjASuQZTne1rki3cK8M4/edit?usp=sharing, bagian 1VXDjyl-
FvzJgK_1SwPt0rT6RjASuQZTne1rki3cK8M4 adalah Spreadsheet [Link]
Google Apps Script
2. Menyiapkan Google Apps Script
Google Apps Script adalah platform berbasis JavaScript yang digunakan untuk menjalankan
kode backend yang berinteraksi dengan Google Spreadsheet dan API Telegram. Berikut
adalah langkah-langkahnya:
1) Akses Google Apps Script: Kunjungi Google Apps Script dan login dengan akun
Google Anda.
2) Buat Proyek Baru: Klik tombol New Project untuk memulai proyek baru. Beri nama
proyek Anda, misalnya "Mr. Bakti Schedule Bot".
3) Izinkan Akses ke Spreadsheet: Pada proyek ini, Anda perlu memastikan bahwa skrip
dapat membaca dan menulis data ke Google Spreadsheet yang sudah Anda buat.
Gunakan kode seperti ini untuk menautkan spreadsheet:
var SheetID = "1VXDjyl-FvzJgK_1SwPt0rT6RjASuQZTne1rki3cK8M4"; // Ganti
dengan SheetID Anda
LANGKAH PEMBUATAN
Berikut langkah-langkah nya yaitu:
1. Memiliki akun Telegram yang sudah terdaftar.
2. Membuat Bot Telegram
Langkah pertama dalam membuat chatbot adalah membuat bot di Telegram. Berikut
langkah-langkahnya:
1) Buka aplikasi Telegram.
2) Cari @BotFather (Bot ini adalah layanan resmi Telegram untuk membuat bot).
Gambar 1. Ketik BotFather pada pencarian
3) Jika sudah klik start, dan pilih atau ketik /newbot untuk memulai pembuatan bot.
Gambar 2. Membuat Bot Baru
4) BotFather akan meminta Anda memberikan nama bot, ketikkan nama yang Anda
inginkan (misalnya "Mr. Bakti Schedule").
5) Setelah itu, Anda diminta untuk memberikan username bot yang unik (misalnya
"mr_bakti_schedule_bot").
6) Setelah selesai, BotFather akan memberikan Anda Token API yang sangat penting.
Simpan token ini karena Anda akan membutuhkannya untuk menghubungkan bot
dengan script di Google Apps Script.
Gambar 3. Membuat Username untuk mendapatkan Token API Telegram
3. Membuat Spreadsheet Google
Selanjutnya, Anda perlu membuat Spreadsheet untuk menyimpan data tugas mahasiswa:
1) Buka Google Sheets ([Link]
2) Buat spreadsheet baru, dan beri nama misalnya "schedule".
3) Pada Sheet1, Sheet2 (untuk Bahasa Inggris), dan Sheet3 (untuk bahasa Belanda),
buat kolom-kolom berikut di baris pertama, kemudian inputkan juga jadwal kuliah:
hari
matakuliah
waktu
kelas
Gambar 4. Kolom Jadwal Kuliah pada Spreadsheet
4) Buat kolom-kolom berikut di baris pertama:
Timestamp
Nama
NIM
Kelas
Mata Kuliah
Tugas
Status Pengerjaan
Chat ID
Gambar 5. Kolom pada Spreadsheet untuk Simpan Data
Spreadsheet ini akan digunakan sebagai database untuk menyimpan tugas mahasiswa yang
diinput melalui bot.
4. Menyiapkan Google Apps Script
Google Apps Script adalah platform berbasis JavaScript untuk mengelola berbagai layanan
Google, termasuk Google Spreadsheet. Dalam hal ini, kita akan menggunakan Apps Script
untuk:
a. Menghubungkan bot Telegram ke Google Spreadsheet.
b. Mengelola input tugas dari user.
Ikuti langkah-langkah berikut:
1) Di Spreadsheet yang Anda buat, klik Extensions di menu atas, kemudian pilih Apps
Script.
Gambar 6. Pilih Apps Script untuk Memulai Pemrograman
2) Hapus semua kode yang ada dan gantikan dengan kode berikut:
var token = "7628160453:AAGV55Bd5P3CK6Sn5REFeJgNrWl761qONdQ"; // Ganti
dengan token bot Anda
var SheetID = "1VXDjyl-FvzJgK_1SwPt0rT6RjASuQZTne1rki3cK8M4"; // Ganti dengan
SheetID Anda
var botHandle = "@MrBaktiSchedule_bot"; // Ganti dengan handle bot Anda
function doPost(e) {
var stringJson = [Link]();
var updates = [Link](stringJson);
// Pastikan bahwa pembaruan adalah pesan
if (![Link]) return;
var message = [Link];
var chatId = [Link];
var nama = [Link].first_name || "";
var text = [Link] ? [Link]() : "";
if (!text) return;
var query = [Link]();
// Daftar kata sapaan
var sapaan = ["halo", "hai", "hello", "hi", "selamat pagi", "selamat siang", "selamat
sore", "selamat malam"];
// Jika pesan adalah '/start', sapalah pengguna dan kirimkan pesan berurutan
if (query === "/start") {
var message1 = "Hallo " + nama + ", Selamat datang di Bot Mr. Bakti!";
var message2 = "Untuk melihat jadwal ketikkan nama hari! \nCth:
Senin/Monday/Maandag\n\nPilihan bahasa: Indonesia, English, dan Dutch.";
var message3 = "Untuk melihat format penginputan daftar tugas ketik /format";
// Kirim pesan-pesan secara terpisah, tetapi semuanya setelah perintah /start
sendText(chatId, message1);
sendText(chatId, message2);
sendText(chatId, message3);
return;
}
// Jika pesan adalah sapaan, kirimkan balasan sapaan
if ([Link](query)) {
var message1 = "Hallo " + nama + ", Bot siap membantu Anda.";
var message2 = "Untuk melihat jadwal ketikkan nama hari! \nCth:
Senin/Monday/Maandag\n\nPilihan bahasa: Indonesia, English, dan Dutch.";
var message3 = "Untuk melihat format penginputan daftar tugas ketik /format";
// Kirim pesan-pesan secara terpisah, tetapi semuanya setelah perintah /start
sendText(chatId, message1);
sendText(chatId, message2);
sendText(chatId, message3);
return;
}
// Jika pesan adalah '/help', kirimkan informasi kontak
if (query === "/help") {
var helpText = "Untuk info lebih lanjut, silahkan hubungi Mr. Bakti CP:
081266990003";
sendText(chatId, helpText);
return;
}
// Jika pesan adalah '/format', kirimkan format pengisian tugas dalam 3 pesan terpisah
if (query === "/format") {
var message1 = "Untuk menginput daftar tugas silahkan isi format dibawah ini:";
var message2 = "/submit (jangan dihapus)\n" +
formatLabel("Nama") + ": \n" +
formatLabel("NIM") + ": \n" +
formatLabel("Kelas") + ": \n" +
formatLabel("Mata Kuliah") + ": \n" +
formatLabel("Tugas") + ": \n";
var message3 = "Untuk melihat status pengerjaan silahkan input NIM anda! cth:
5213151002";
// Kirim pesan-pesan secara terpisah
sendText(chatId, message1);
sendText(chatId, message2);
sendText(chatId, message3);
return;
}
// Jika pesan diawali dengan '/submit', proses data pengisian tugas
if ([Link]("/submit")) {
var data = parseSubmitCommand(text);
if (data) {
var hasil = simpanDataTugas(data, chatId);
sendText(chatId, hasil);
} else {
sendText(chatId, "Format data tidak valid. Ketik /format untuk melihat contoh format
pengisian.");
}
return;
}
// Jika pesan adalah NIM, cari tugas berdasarkan NIM
if (/^\d{10}$/.test(query)) { // Anggap NIM memiliki 10 digit
var hasilTugas = CariTugasByNIM(query);
sendText(chatId, hasilTugas);
return;
}
// Cari data di semua sheet jika bukan perintah khusus
var hasilCari = CariDataDiSemuaSheet(query);
sendText(chatId, hasilCari);
}
// Fungsi untuk merapikan format dengan titik dua sejajar
function formatLabel(label) {
var maxLength = 15; // Panjang maksimum label untuk sejajar dengan titik dua
while ([Link] < maxLength) {
label += " "; // Tambah spasi agar label dan titik dua sejajar
}
return label;
}
// Fungsi untuk parse perintah /submit
function parseSubmitCommand(text) {
var lines = [Link]("\n");
if ([Link] < 2) return null;
var data = {};
for (var i = 0; i < [Link]; i++) {
var line = lines[i].trim();
if (i === 0) { // Baris pertama adalah /submit
continue;
}
var parts = [Link](":");
if ([Link] < 2) continue;
var key = parts[0].trim().toLowerCase();
var value = [Link](1).join(":").trim();
data[key] = value;
}
// Cek apakah semua field ada
var requiredFields = ["nama", "nim", "kelas", "mata kuliah", "tugas"];
for (var j = 0; j < [Link]; j++) {
if (!data[requiredFields[j]]) return null;
}
return data;
}
// Fungsi untuk menyimpan data tugas ke Sheet4
function simpanDataTugas(data, chatId) {
try {
var sheet = [Link](SheetID).getSheetByName("Sheet4");
var timestamp = new Date();
[Link]([timestamp, [Link], [Link], [Link], data["mata kuliah"],
[Link], "Belum Selesai", chatId]);
return "Data tugas Anda telah disimpan. Terima kasih!";
} catch (error) {
return "Terjadi kesalahan saat menyimpan data: " + [Link];
}
}
// Fungsi untuk mengambil data tugas dari Sheet4
function AmbilTugasSheet4() {
var rangeName = 'Sheet4!A2:G'; // Ambil data dari kolom A sampai G di Sheet4
var rows = [Link](SheetID, rangeName).values;
return rows || [];
}
// Fungsi untuk mencari tugas berdasarkan NIM
function CariTugasByNIM(nim) {
var rows = AmbilTugasSheet4();
var hasil = [];
for (var row = 0; row < [Link]; row++) {
var nimSheet = rows[row][2]; // NIM ada di kolom C (index 2)
if (nim === nimSheet) {
[Link]("Nama : " + rows[row][1] + "\n" + // Nama
"NIM : " + rows[row][2] + "\n" + // NIM
"Kelas : " + rows[row][3] + "\n" + // Kelas
"Mata Kuliah : " + rows[row][4] + "\n" + // Mata Kuliah
"Tugas : " + rows[row][5] + "\n" + // Tugas
"Status : " + rows[row][6]); // Status Pengerjaan
}
}
if ([Link] > 0) {
return [Link]("\n\n");
} else {
return "Data tidak ditemukan untuk NIM: " + nim;
}
}
// Fungsi untuk mengambil data jadwal dari sheet
function AmbilJadwal(sheetName) {
var rangeName = sheetName + '!A2:D'; // Ambil data dari kolom A sampai D (hari,
mata kuliah, waktu, kelas)
var rows = [Link](SheetID, rangeName).values;
return rows;
}
// Fungsi untuk mencari data di semua sheet
function CariDataDiSemuaSheet(query) {
var hasil = [];
// Mencari di Sheet1
var rowsSheet1 = AmbilJadwal('Sheet1');
var hasilSheet1 = CariDiSheet(rowsSheet1, query, 'Sheet1');
if (hasilSheet1) {
[Link](hasilSheet1);
}
// Mencari di Sheet2
var rowsSheet2 = AmbilJadwal('Sheet2');
var hasilSheet2 = CariDiSheet(rowsSheet2, query, 'Sheet2');
if (hasilSheet2) {
[Link](hasilSheet2);
}
// Mencari di Sheet3
var rowsSheet3 = AmbilJadwal('Sheet3');
var hasilSheet3 = CariDiSheet(rowsSheet3, query, 'Sheet3');
if (hasilSheet3) {
[Link](hasilSheet3);
}
// Gabungkan semua hasil dengan pemisah newline ganda untuk mencegah koma
return [Link] > 0 ? [Link]("\n\n") : "Data tidak ditemukan untuk query: " +
query;
}
function CariDiSheet(rows, query, sheetName) {
var hasil = [];
var adaData = false;
// Menentukan bahasa berdasarkan nama sheet
var bahasa = {
'Sheet1': {
'hari': "Hari",
'mataKuliah': "Mata Kuliah",
'waktu': "Waktu",
'kelas': "Kelas"
},
'Sheet2': {
'hari': "Day",
'mataKuliah': "Course",
'waktu': "Time",
'kelas': "Class"
},
'Sheet3': {
'hari': "Dag",
'mataKuliah': "Cursus",
'waktu': "Tijd",
'kelas': "Klas"
}
};
for (var row = 0; row < [Link]; row++) {
var hari = rows[row][0].toLowerCase();
// Jika query cocok dengan hari
if ([Link](query)) {
if (!adaData) {
var hariTemuan = [Link](0).toUpperCase() + [Link](1); // Capitalize hari
adaData = true;
// Tambahkan nama hari di bagian atas, tanpa tanda koma atau karakter tambahan
[Link]("<b>" + [Link]() + "</b>");
}
[Link](
formatLabel(bahasa[sheetName].mataKuliah) + ": " + rows[row][1] + "\n" +
formatLabel(bahasa[sheetName].waktu) + ": " + rows[row][2] + "\n" +
formatLabel(bahasa[sheetName].kelas) + ": " + rows[row][3]
);
}
}
// Gabungkan hasil dengan newline ganda jika ada data ditemukan
return [Link] > 0 ? [Link]("\n\n") : "";
}
// Fungsi untuk mengirim pesan ke chat Telegram
function sendText(chatid, text, replymarkup) {
var data = {
method: "post",
payload: {
method: "sendMessage",
chat_id: String(chatid),
text: "<pre>" + text + "</pre>", // Menggunakan <pre> untuk format monospace
parse_mode: "HTML",
reply_markup: replymarkup ? [Link](replymarkup) : undefined
}
};
[Link]('[Link] + token + '/sendMessage', data);
}
// Fungsi trigger yang dipanggil saat ada perubahan di Sheet4
function onEdit(e) {
var range = [Link];
var sheet = [Link]();
// Pastikan perubahan terjadi di Sheet4
if ([Link]() !== "Sheet4") return;
var row = [Link]();
var col = [Link]();
// Asumsikan Status Pengerjaan berada di kolom G (7)
if (col === 7) {
var status = [Link](row, 7).getValue(); // Ambil nilai status
var chatId = [Link](row, 8).getValue(); // Ambil Chat ID di kolom H (8)
var nama = [Link](row, 2).getValue(); // Ambil Nama di kolom B (2)
var tugas = [Link](row, 6).getValue(); // Ambil Tugas di kolom F (6)
// Kirim pesan ke mahasiswa jika ada Chat ID, status, nama, dan tugas
if (chatId && status) {
var message = "Halo " + nama + ", status pengerjaan tugas \"" + tugas + "\" Anda
telah diperbarui menjadi: " + status;
sendText(chatId, message); // Kirim notifikasi
}
}
}
// Fungsi untuk mengatur trigger onEdit
function createTrigger() {
var ss = [Link](SheetID);
[Link]('onEdit')
.forSpreadsheet(ss)
.onEdit()
.create();
}
3) Simpan kode ini dengan mengklik tombol Save dan beri nama proyek misalnya
"schedule".
4) Deploy Google Apps Script sebagai Web App. Berikut langkah untuk mendeploy
Google Apps Script:
i. Di menu Apps Script, klik Deploy > New Deployment.
ii. Pilih Web App sebagai jenis deployment.
Gambar 7. Pilih Type Web App
iii. Atur akses sebagai "Anyone" sehingga bot Telegram dapat mengaksesnya.
Gambar 8. Konfigurasi App Script sebagai Web App
iv. Salin URL Web App yang muncul setelah deployment selesai, karena Anda
akan menggunakannya untuk menghubungkan bot Telegram ke Google Apps
Script dengan mengaktifkan webhook.
Gambar 9. URL Web App
5) Menjalankan dan mengaktifkan fungsi webhook agar dapat mengirim pesan dan
menerima input dari Telegram. Untuk mengaktifkan webhook, anda harus
mengirimkan request API Telegram dengan formal URL seperti berikut:
[Link]
url=<YOUR_WEBHOOK_URL>
Gantilah <YOUR_API_TOKEN> dengan token API bot Anda yang diterima dari
BotFather dan <YOUR_WEBHOOK_URL> dengan URL web app dari Google Apps
Script yang telah Anda dapatkan. Jika berhasil maka akan muncul tampilan “Webhook
was set”
Gambar 10. Mengaktifkan Webhook
PENGUJIAN DAN HASIL
Untuk menguji bot yang telah Anda buat:
1. Buka aplikasi Telegram dan cari bot yang telah Anda buat.
Gambar 11. Tampilan Awal Chatbot Telegram
2. Ketik /start, bot akan menyapa Anda dengan nama Telegram Anda.
Gambar 12. Tampilan Perintah /start
3. Ketik /format untuk melihat format input daftar tugas.
Gambar 13. Tampilan Perintah /format
4. Salin format tugas, lalu lengkapi dengan data tugas Anda.
Gambar 14. Lengkapi Format
5. Jika sudah dilengkapi, kemudian kirimkan. Apabila sesuai maka data tugas akan berhasil
disimpan.
Gambar 15. Mengirimkan Format
6. Periksa Google Spreadsheet, apakah data yang Anda input sudah masuk dengan benar.
Gambar 16. Data Tersimpan pada Spreadsheet
7. Uji bot dengan mengetik NIM untuk melihat status pengerjaan.
Gambar 17. Tampilan Perintah Cek Status Pengerjaan
8. Apabila ada perubahan status pengerjaan maka akan otomatis masuk.
Gambar 18. Tampilan Perubahan Status Pengerjaan
9. Uji bot dengan mengetik nama hari seperti "Senin" atau "Monday" atau “Maandag untuk
melihat jadwal Pak Bakti.
Gambar 19. Tampilan Melihat Jadwal dalam Bahasa Indonesia
Gambar 20. Tampilan Melihat Jadwal dalam Bahasa Inggris
Gambar 21. Tampilan Melihat Jadwal dalam Bahasa Belanda
Jika semuanya berjalan lancar, maka bot Anda berhasil dibuat dan siap digunakan!