🇮🇩 Bot Whatsapp penunjang aktivitas kelas. Bot ini diciptakan agar grup kelas di Whatsapp tidak sebatas spam stiker saja (untung saya tidak gabung grup WA kelas). Bot ini merupakan versi Whatsapp dari Alel (bot discord) karena teman-teman sekelas habitatnya lebih memilih Whatsapp, dengan codebase dan design pattern yang tidak jauh berbeda dari Alel.
- bantuan | Lihat bantuan
- buatgrup <n*> | Buat kelompok sebanyak n anggota
- buatnama | Buat nama acak
- dosen <nama*> | Cari dosen
- harga <simbol*> | Cek harga koin
- hitung <ekspresi*> variabel1:nilai1,...? | Kalkulator perhitungan.
- info | Lihat info kuliah
- jadwal <hari?> | Lihat jadwal
- kbbi <kata*> | Mencari kata di KBBI
- koin <simbol*> | Cek info koin
- listmhs | Lihat daftar mahasiswa
- mhs <nama/nim*> | Cari mahasiswa
- pilihkan <n1,n2,..*> | Menentukan pilihan
- ping | Cek koneksi bot
- stiker | Konversi gambar ke stiker
- tl <id/en?> <teks*> | Terjemahkan teks ke en/id
- url <link*> <namaLink*> | Memperpendek URL
- wiki <katakunci*> | Pencarian wikipedia
- yt <url*> | Unduh video youtube
- ytmp3 <url*> | Unduh mp3 dari video youtube
Pengaturan utama terdapat pada folder config/settings.json
, ubah dan sesuaikan dengan data kelas kamu. Berikut detail tabel dan lokasi konfigurasinya.
Nama | Lokasi |
---|---|
Pengaturan dasar | config/settings.json |
Data mahasiswa | data/students.json |
Data dosen | data/lecturers.json |
Data jadwal | data/schedules.json |
Pengaturan pengingat | utils/crons.js |
Daftar perintah | commands/* |
Silakan isi sesuai data kelas, untuk keperluan API key bisa mendaftar lalu masukkan ke pengaturan. classGroupId
bisa diisi setelah dijalankan di local.
settings.json
{
"botPrefix": ".",
"campusName": "Universitas Bot Whatsapp",
"classGroupName": "Nama Group WA",
"classGroupId": "ID Group WA",
"className": "Teknik Informatika",
"classCode": "TI",
"classSemester": "Abadi",
"classCategory": "A",
"classTeacher": "Awal Ariansyah, S.arkas, M.ager",
"nomicsAPI": {
"endpoint": "https://api.nomics.com/v1/currencies/ticker?",
"key": "key=[API key dari nomics disini]&"
},
"libretranslateAPI": {
"endpoint": "https://translate.argosopentech.com/translate"
},
"wikiAPI": {
"endpoint": "https://id.wikipedia.org/w/api.php"
},
"youtubeDownloader": {
"endpoint": "https://api.fastfrom.com/download"
},
"youtubeMp3": {
"endpoint": "https://www.yt-download.org/api/button/mp3/"
},
"cuttly": {
"endpoint": "http://cutt.ly/api/api.php?",
"key": "key=[API key dari cuttly disini]&"
},
"kbbi": {
"endpoint": "https://kateglo.com/api.php"
}
}
Pengingat menggunakan cron dimana pengaturan waktunya memakai notasi asterisk.
Misal disini tertulis 30 9 * * 1 artinya setiap hari senin (1) jam (9) menit ke (30). Untuk lebih jelas cara membaca asterisk cron bisa mengunjungi https://crontab.guru/
crons.js
const Multimedia = new cron.CronJob(
"30 9 * * 1",
() => {
try {
bot.sendTextWithMentions(
classGroupId,
reminderText("Eksplorasi API whatsapp")
);
} catch (error) {
console.log(error);
}
},
null,
true,
"Asia/Jakarta"
);
Prasyarat keperluan:
- Node.js v.17.0.0
- No Whatsapp (jangan gunakan no utama), bisa masukkan ke dalam grup kelas
- Heroku CLI
- Akun Heroku, bisa mendaftar di heroku.com
- GIT
- NPM/Yarn
- Pastikan Node.js sudah terinstall dengan versi 17.0.0
- Download repositori ini atau clone, kemudian extract
- Masuk ke folder lalu buka menggunakan cmd
- Ketikkan
yarn install
ataunpm install
- Jalankan dengan
node main.js
- Scan QR untuk mendapatkan sesi
- Catat classGroupId yang keluar lalu salin ke settings.json
- Test bot dengan mengirim pesan ke No Whatsapp tersebut
- Pastikan heroku CLI telah terinstall
- Pastikan sudah memiliki akun heroku
- Silakan copy folder dari proyek local yang telah berhasil dijalankan, jangan copy folder node_modules dan logs!!
- Buka cmd lalu ketikkan perintah
heroku create
- Akan muncul perintah untuk login, silakan login menggunakan akun heroku
- Silakan jalankan kembali
heroku create
lalu catat nama proyek yang muncul, misalkan cryptic-dawn-48835 - Jalankan dua perintah berikut
heroku buildpacks:add --index 1 https://github.com/jontewks/puppeteer-heroku-buildpack -a cryptic-dawn-48835
heroku buildpacks:add --index 1 heroku/nodejs -a cryptic-dawn-48835
- Jalankan perintah berikut berurutan
git init
git add .
git commit -m "initial commit"
heroku git:remote -a cryptic-dawn-48835
git push heroku master
- Ingat cryptic-dawn-48835 hanyalah contoh nama proyek, silakan sesuaikan dengan yang kalian buat di heroku create
https://www.youtube.com/watch?v=JzfA-vYm7ZQ&t=40s
Catatan: Di video terdapat kekurangan file yaitu Procfile
, namun sudah saya tambahkan disini
Dikarenakan kesibukan author, maka terdapat fitur yang belum diimplementasikan seperti
- Konversi teks ke gambar tulisan tangan
- Konversi teks ke audio
- Kalkulator konversi mata uang, bilangan digital dan timezone
- Berita harian
Bagi yang ingin membuka PR untuk menambahkan fitur diatas sangat-sangat terbuka, silakan langsung PR saja tanpa open issue.