Program Dasar Chat Bot Telegram

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.

Sharing is caring:

Leave a Comment