Membuat Kalkulator pada Bot Telegram (GAS II-05)

3 menit saja |

Lagi nyantai bikin tambahan-tambahan materi yang ringan-ringan saja ya. Satu tambahan kecil, mungkin berguna. Yakni, triger untuk bot telegram fungsi kalkulator. Yuk, mari simak..

Pendahuluan

Mumpung belum kena kesibukan padat, jadi kita buat yang ringan-ringan aja ya. Memperbanyak studi kasus ceritanya :-D

Bukankah makin banyak contoh, jadi semakin mudah memahami dan belajar nya? So, Lets Go!

Pra-Materi

  1. Custom Command - Regex Dasar
  2. Random Text Kalimat dan Angka

Kalkulator

Ga perlu dijelaskan lagi apa itu kalkulator.. intinya bot membantu menghitung sederhana.

Prinsip pada pengayaan kali ini adalah masih menggunakan kekuatan regex. Plus cara jawabnya kita padukan dengan

Namun, biar seru kita buat ala bot AI (artificial intelligence) atau kecerdasaran buatan, atau sistem pakar lah ya.

Gambaran nya:

User: tolong dunk hitung 5/2
Bot : aku hitungin yaa.. hasilnya: 2.5
User: Mumet nih, bantu hitung -7*3
Bot : Hmm, mikir... jawabnya: -21 !

Nah seperti itu, sedikit tampak keren lah yaw?

Level 1 - Awal

var pola /hitung (\d+[-+*\/]\d+)/i

Penjelasan:

  • kata kuncinya adalah kata hitung. Ada kata itu, trus pola berikutnya sesuai, baru di proses.
  • \d+ artinya angka berapa pun, 1 digit atau lebih. Pokoknya angka
  • [-+*\/] untuk menangkap simbol matematik. Salah satu diantara dalam kurung kota tersebut - + * / : pengurangan, penambahan, perkalian, atau pembagian.
  • trus dilanjutkan \d+ seperti sebelumnya maknanya.

Level 2

Angka bisa plus bisa minus.. jadi perlu ditambahkan kemungkinan itu.

var pola /hitung ([-+]?\d+[-+*\/][-+]?\d+)/i

Sehingga user bisa request: hitung -5*-3

Penjelasan:

  • [-+]? boleh ditambahkan simbol minus - atau plus + di depan angka

Level 3

User dibolehkan menghitung lebih dari 1 operator.

User: hitung 3+2+1

Mulai agak rumit ini yah..

var pola /hitung ([-+]?\d+([-+*\/][-+]?\d+)+)/i

Tambahkan grouping didalamnya, trus dikasih + yang artinya operator dan angka nya boleh berulang lebih dari 1.

Bagaimana, mulai mumet? Berarti otak mulai bekerja.. loading

Level 4

Saya tambahkan operasi non group.. group baru di level 3, kita buang (tidak dimasukkan cocok).

var pola /hitung ([-+]?\d+(?:[-+*\/][-+]?\d+)+)/i

Tambahannya hanya ada di ?:, membuang/tidak memasukkan ke dalam hasil grouping.

Tidak wajib di level 4 ini.

Level 5 - Akhir

Di akhir ditambahkan kemungkinan user menambahkan spasi.

User: tolong hitung 1+ - 2- 3*3 / -2

Spasi bisa saja lebih dari satu, bisa juga tidak ada. Maka pergunakan \s*

Sedangkan spasi yang minimal ada 1 buah, menggunakan \s+

Dan hasil akhir nya adalah:

var pola = /hitung\s+([-+]?\s*\d+(?:\s*[-+*\/]\s*[-+]?\s*\d+)+)/i

Bagaimana sekarang? Tambah mumet? Semoga engga. Tapi langsung pules haha..

Coding

Setelah dapat pola kalkulatornya, kita buat codingannya ya. Masukkan semua pengetahuan yang sudah ada pada materi sebelum-sebelumnya.

var pola = /hitung\s+([-+]?\s*\d+(?:\s*[-+*\/]\s*[-+]?\s*\d+)+)/i;
if (cocok = pola.exec(msg.text) ) {
    var hasil = eval(cocok[1]);
    var daftarPesan = [
        "Aku bantu hitung ya, hasilnya adalah: " + hasil,
        "Hmm sulit euy, tapi tebakanku: " + hasil,
        "Hmm, mikir... jawabnya: "+hasil+" !",
        "Jawabannya adalah ... " + hasil,
        hasil + " ! Benerkaaan?"
        // silakan ditambah-tambahi sendiri 
    ]
    var pesan = tg.util.random(daftarPesan);
    return tg.sendMsg(msg, pesan);
}

Video

Yang bingung dengan penjelasan via blog, bisa simak di videonya:

Penutup

Demikian yak pengayaan kalkulator sederhana. Kalau ingin mengembangkan lebih komplek lagi silakan. Misalnya menambahkan formula sin, cos, tan, pangkat, kuadrat, dlsb.

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