Cara terbaik memahami membuat chat bot adalah langsung dengan contoh program. Program bot sederhana ini akan menjawab chat dengan mengembalikan apapun yang diketik oleh pengguna.
Bot ini akan berjalan hingga kita menekan tombol Ctrl+C.
Program ini juga bisa menjadi dasar dari pengembangan bot ke kebutuhan lainnya. Source program diambil dari echobot2.py
Code
import logging
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO)
logger = logging.getLogger(__name__)
# Define a few command handlers. These usually take the two arguments update and
# context. Error handlers also receive the raised TelegramError object in error.
def start(update, context):
"""Send a message when the command /start is issued."""
update.message.reply_text('Hi!')
def help(update, context):
"""Send a message when the command /help is issued."""
update.message.reply_text('Help!')
def echo(update, context):
"""Echo the user message."""
update.message.reply_text(update.message.text)
def error(update, context):
"""Log Errors caused by Updates."""
logger.warning('Update "%s" caused error "%s"', update, context.error)
def main():
updater = Updater("TOKEN", use_context=True)
dp = updater.dispatcher
dp.add_handler(CommandHandler("start", start))
dp.add_handler(CommandHandler("help", help))
dp.add_handler(MessageHandler(Filters.text, echo))
dp.add_error_handler(error)
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
Pembahasan Code
Import library yang diperlukan, yaitu logging dan telegram library. Lalu buat object logging.
import logging
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
# Enable logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO)
logger = logging.getLogger(__name__)
Program akan menjalankan code dibawah, yang akan memanggil fungsi main(). Untuk penjelasan code lihat komentar.
if __name__ == '__main__':
main()
def main():
"""Start the bot."""
# Buat object update dan gunakan bot's token dari hasil registrasi.
# pastikan parameter use_context=True
updater = Updater("TOKEN", use_context=True)
# ambil dispatcher handlers
dp = updater.dispatcher
# menambahkan handler untuk command, untuk menjawab chat message start dan help
dp.add_handler(CommandHandler("start", start))
dp.add_handler(CommandHandler("help", help))
# untuk message noncommand, pada code ini hanya mengembalikan chat
dp.add_handler(MessageHandler(Filters.text, echo))
# error logging
dp.add_error_handler(error)
# Menjalankan bot
updater.start_polling()
# bot akan berjalan hingga tombol Ctrl-C ditekan atau process menerima SIGINT,
# SIGTERM or SIGABRT.
updater.idle()
# fungsi untuk handling command dan message.
# Membutuhkan 2 arguments, update and context.
def start(update, context):
"""pesan yang dikirimkan ketika menerima command /start"""
update.message.reply_text('Hi!')
def help(update, context):
"""pesan yang dikirimkan ketika menerima command /help"""
update.message.reply_text('Help!')
def echo(update, context):
"""mengembalikan pesan yang sama kepada user"""
update.message.reply_text(update.message.text)
# Error handlers raised TelegramError object saat terjadi error.
def error(update, context):
"""Log Errors yang disebabkan Updates object."""
logger.warning('Update "%s" caused error "%s"', update, context.error)
Program diatas adalah program dasar dari bot telegram. Kita dapat mengembangkan sesuai dengan tujuan bot dari program diatas. Misalnya membaca isi situs tertentu lalu mengembalikan pada user, atau membaca isi data dari database mysql, atau bahkan dihubungkan dengan chat bot AI untuk menjawab pertanyaan seperti layaknya manusia.