import loggingfrom telegram import Update, ForceReplyfrom telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
Ở bước này chúng ta sử dụng update , ForceReply, Updater, CommandHandler, MessageHandler, Filters, CallbackContext. Chức năng tương tự như tên gọi của nó. Ví dụ Update là cập nhật trạng thái mới nhất của bot. Lệnh Update này sẽ gọi api getUpdate của telegram Telegram Bot API. Tương tự như vậy cho các object khác chúng ta có thể đọc thêm tài liệu của PTB nhé.
Bước 3: Sau khi đã khai báo các thứ cần thiết thì chúng ta tiến hành tạo một số function(): cho bot để thực hiện một số việc.
def start(update: Update, context: CallbackContext) -> None:
"""Gửi tin nhắn khi có lệnh /start """
user = update.effective_user
update.message.reply_markdown_v2( fr'Hi {user.mention_markdown_v2()}\!', reply_markup=ForceReply(selective=True),)
Như vậy sau khi tạo hàm này xong, mỗi khi gõ /start thì telegram bot sẽ gửi một tin nhắn lại cho chúng ta với nội dụng là "Hi {tên bạn}".
Đây là hàm echo() dùng để gửi tin nhắn trở lại người dùng:
def echo(update: Update, context: CallbackContext) -> None:
"""Echo the user message."""
update.message.reply_text(update.message.text)
Các thông số truyền vào update.message.reply_text() chúng ta có thể tham khảo Document https://bit.ly/3dU3iBs
Các hàm khác chúng ta chỉ việc tạo ra để làm những việc chúng ta cần nhé. :)) Mình không hướng dẫn code như thế nào đâu nhé.
Bước 4: Sau khi có hàm rồi làm thế nào để bot hoạt động?
Chúng ta tạo một hàm main () để bot có thể chạy nhé. Chúng ta cần một CommandHandler để quản lý các command ở ví dụ này command mình sử dụng là start. Do đó chúng ta sẽ sử dụng dispatcher.add_handler(CommandHandler("start", start)) - có nghĩa là khi chúng ta gọi lệnh /start thì CommandHandler sẽ gọi hàm start() để chạy.
def main() -> None:
"""Start the bot."""
# Sử dụng TOKEN mà bạn đã lấy ở bài trước để thay vào chữ TOKEN màu đỏ để bot hoạt động nhé
updater = Updater("TOKEN")
# Get the dispatcher to register handlers
dispatcher = updater.dispatcher
# on different commands - answer in Telegram
dispatcher.add_handler(CommandHandler("start", start))
dispatcher.add_handler(CommandHandler("help", help_command))
# on non command i.e message - echo the message on Telegram
dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))
# Start the Bot
updater.start_polling()
# Run the bot until you press Ctrl-C or the process receives SIGINT,
# SIGTERM or SIGABRT. This should be used most of the time, since
# start_polling() is non-blocking and will stop the bot gracefully.
updater.idle()
if __name__ == '__main__':
main()
Bước 5: Chạy bot thì giống cách chạy file python khác. Chúng ta sử dụng lệnh python botname.py bằng terminal là được.
Chúng ta hoàn toàn tải Example bot này về để chạy thử thí nghiệm và tạo ra các chức năng hay ho cho bot nhé. Mình tạo các con bot rút gọn link và forward ảnh, video https://t.me/lhtvnbot, tải báo khoa học https://t.me/sci_download_bot phục vụ nhu cầu cá nhân.
Phần 3 hướng dẫn chạy telegram trên heroku: Hướng dẫn tạo telegram bot - Phần 3 chạy telegram bot trên server heroku (moinhat123.blogspot.com)