Cara Membuat Bot Telegram Dengan Menggunakan Bahasa Pemrograman Python

Telegram adalah aplikasi chatting yang mendukung banyak platform dan gratis lagi tapi anda membayar biaya internet anda hehe. Telegram menyediakan bot api untuk gunakan untuk membuat chat bot atau bot apapun yang kita inginkan contohnya buat yang bisa kita manfaatkan sebagai media posting kedalam channel pun bisa kita buat atau sebagai search engine kalo kita lagi males menggunakan browser dan langsung mengakses search engine tersebut dll, sesuai dengan keinginan anda. Nah saya akan membagikan pengalaman saya membuat bot telegram menggunakan bahasa pemrograman python versi 2.7 kenapa saya menggunakan versi tersebut karena secara default armbian jessie menggunakan python versi 2.7 dan saya pertama kali mengenal python ya versi 2.7 hehe. menurut hemat saya python 2.7 masih layak untuk dipake ngoding hehe. Saya ngoding menggunakan orange pi zero minipc, saya membuat bot sekedar proyek hobi saja ketika sedang butuh refreshing otak saja, oke sekarang kita membuat programnya hehe. membuat file dengan nama bot.py dengan menggunakan perintah di terminal nano bot.py atau vim bot.py atau gedit bot.py atau text editor manapun yang kamu suka, kemudian import library yang akan anda gunakan dalam pembuatan bot.

1
2
3
4
5
6
 import json
 import time
 import os
 import subprocess as terminal
 import urllib
 import urllib2

membuat fungsi untuk melakukan komunikasi dengan server bot api telegram untuk kita gunakan saat request perintah yang akan dikerjakan bot kita.

1
2
3
4
5
6
 TOKEN="YOUR_TOKEN_FROM_BOTFATHER"
 URL = "https://api.telegram.org/bot{}/".format(TOKEN)
 def get_url(url):
    response = urllib2.urlopen(url)
    content = response.read().decode('utf8')
    return content

membuat fungsi untuk mendapatkan json dari response yang di dapat oleh fungsi get_url

1
2
3
4
 def get_json_from_url(url):
    content = get_url(url)
    js = json.loads(content)
    return js

membuat fungsi untuk melakukan updates chat terakhir yang dilakukan pengguna dengan bot kita

1
2
3
4
5
6
 def get_updates(offset=None):
    url = URL+"getUpdates"
    if offset :
       url += "?offset={}".format(offset)
    js = get_json_from_url(url)
    return js

offset kita gunakan untuk membatasi request agar bot kita tidak melakukan flooding atau mengirimkan pesan yang sama secara berulang-ulang membuat fungsi untuk mendapatkan update_id yang terakhir yang akan kita gunakan untuk membuat offset

1
2
3
4
5
  def get_last_update_id(updates):
     update_ids = []
     for update in updates["result"]:
         update_ids.append(int(update["update_id"]))
     return max(update_ids)

membuat fungsi untuk mengirimkan balasan kepada pengguna bot

1
2
3
 def send_message(text, chat_id):
    url = URL+"sendMessage"
    resp = urllib2.urlopen(url, urllib.urlencode({'chat_id':chat_id , 'text':text})).read()

membuat fungsi untuk membuat file yang akan kita gunakan untuk menyimpan update_id yang terakhir bot lihat

1
2
3
4
 def create_file(text):
    f = open('/media/arba/data/mybot/idbot.txt', 'a')
    f.write(str(text))
    f.close()

open digunakan untuk membuka file yang akan kita pakai /media/arba bla-bla bisa kamu ganti dengan path yang kamu kehendaki opsi 'a' kita gunakan agar python membuat file tersebut jika file tersebut belum dibuat write dengan gunakan untuk menulis update_id yang terakhir dan fungsi close untuk menutup file membuat fungsi untuk digunakan membaca file yang telah kita buat

1
2
3
4
5
 def read_file():
    f = open('/media/arba/data/mybot/idbot.txt', 'r+')
    text=f.read()
    f.close()
    return text

read kita gunakan untuk membaca isi dari file tersebut membuat fungsi untuk menulis ulang update_id kedalam file tersebut dengan terlebih dahulu menghapus isi dari file tersebut

1
2
3
4
5
6
 def rewrite_file(text):
    f = open('/media/arba/data/mybot/idbot.txt', 'r+')
    f.seek(0)
    f.truncate()
    f.write(str(text))
    f.close()

membuat fungsi untuk melakukan seleksi terhadap perintah apa saja yang akan bot terima dari pengguna

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 def tanggap(updates):
    for update in updates["result"]:
       text = update["message"]["text"]
       chat = update["message"]["chat"]["id"]
       if "halo" in text :
           send_message("halo juga kak",chat)
       elif "aku" in text :
           msg = os.uname()[1]+" "+os.uname()[2]+" "+os.uname()[4]
           send_message(msg,chat)
       elif "boot" in text :
            p = terminal.Popen(['systemd-analyze'],stdout=terminal.PIPE,stderr=terminal.PIPE,stdin=terminal.PIPE)
            msg,err = p.communicate()
            send_message(msg,chat)

buat fungsi main yang akan kita gunakan untuk memanggil fungsi yang telah kita buat

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
 def main():
    last_update_id = None
    while True:
        if os.path.isfile('/media/arba/data/mybot/idbot.txt'):
        last_update_id = int(read_file())
        updates = get_updates(last_update_id)
        if len(updates["result"]) > 0:
           last_update_id = get_last_update_id(updates) + 1
        if not os.path.isfile('/media/arba/data/mybot/idbot.txt'):
           create_file(last_update_id)
        else:
           rewrite_file(last_update_id)
        tanggap(updates)
        time.sleep(0.5)

dan sebagai penutup tambahkan baris berikut ini untuk memanggil fungsi main

1
2
 if __name__ == '__main__':
    main()

demikianlah saya tuliskan pengalaman saya membuat bot telegram menggunakan bahasa pemrograman semoga bermanfaat dan bisa dipahami, tapi bila susah dipahami maka carilah blog lain yang lebih bisa menjelaskan dengan baik. Terima Kasih.