
Bot Telegram là gì?
Bot Telegram là chương trình tự động chạy bên trong ứng dụng Telegram, có thể trả lời tin nhắn, gửi thông báo, thực hiện lệnh và tương tác với người dùng qua API chính thức của Telegram. Với Python, bạn có thể tạo bot Telegram chỉ với vài chục dòng mã nhờ thư viện python-telegram-bot, thư viện phổ biến nhất với gần 30.000 sao trên GitHub.
Từ bot thông báo tin tức, bot quản lý công việc đến bot đặt đồ ăn, khả năng ứng dụng gần như vô hạn. Bài viết này sẽ hướng dẫn bạn từng bước tạo bot Telegram bằng Python từ con số không, bao gồm cài đặt, viết mã, chạy thử và đưa bot lên máy chủ.

Chuẩn bị: tạo bot với BotFather
Bước đầu tiên là tạo bot trên Telegram thông qua tài khoản @BotFather. Gửi lệnh /newbot cho BotFather, đặt tên hiển thị cho bot, sau đó đặt username kết thúc bằng chữ bot như my_awesome_bot. BotFather sẽ trả về một chuỗi token dạng 123456789:ABCdef..., đây chính là chìa khóa API để bot của bạn giao tiếp với Telegram.
Hãy lưu token cẩn thận và không bao giờ đưa vào mã nguồn công khai hay commit lên GitHub. Thói quen tốt là lưu token vào biến môi trường và đọc từ đó trong chương trình.
Cài đặt thư viện python-telegram-bot
Thư viện python-telegram-bot yêu cầu Python từ phiên bản 3.10 trở lên và có thể cài bằng pip. Nên tạo môi trường ảo riêng cho dự án để tránh xung đột phiên bản thư viện:
python3 -m venv venv source venv/bin/activate pip install python-telegram-bot
Lưu ý quan trọng: từ phiên bản v20 phát hành năm 2023, thư viện đã bỏ API cũ dùng Updater và Dispatcher, thay vào đó là lớp Application hiện đại theo phong cách async. Nhiều bài hướng dẫn cũ trên mạng vẫn dùng cú pháp v13, vì vậy khi đọc bạn cần chú ý chuyển đổi cho phù hợp.

Viết bot Telegram đầu tiên
Một bot tối thiểu chỉ cần vài dòng mã. Ví dụ dưới đây tạo bot trả lời lệnh /start và lệnh /help:
from telegram.ext import Application, CommandHandler
async def start(update, context):
await update.message.reply_text("Xin chào! Tôi là bot Python.")
async def help_command(update, context):
await update.message.reply_text("Gõ /start để bắt đầu.")
app = Application.builder().token("TOKEN_CUA_BAN").build()
app.add_handler(CommandHandler("start", start))
app.add_handler(CommandHandler("help", help_command))
app.run_polling()
Chạy file bằng lệnh python bot.py, sau đó mở Telegram và gõ /start cho bot của bạn. Nếu nhận được câu trả lời, bot đã hoạt động thành công. Hàm run_polling() khiến bot chủ động hỏi Telegram mỗi vài giây xem có tin nhắn mới không, phù hợp cho giai đoạn phát triển và bot quy mô nhỏ.
Xử lý tin nhắn và bàn phím inline
Ngoài lệnh, bot có thể xử lý tin nhắn văn bản thường bằng MessageHandler với bộ lọc filters.TEXT. Bàn phím inline cho phép hiển thị nút bấm ngay trong tin nhắn, người dùng nhấn nút và bot xử lý qua CallbackQueryHandler. Đây là nền tảng để xây dựng các bot tương tác phức tạp như bot đặt hàng, bot khảo sát hay bot điều khiển thiết bị.
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import CallbackQueryHandler
async def menu(update, context):
keyboard = [[InlineKeyboardButton("Xem giá", callback_data="price")]]
await update.message.reply_text("Chọn chức năng:",
reply_markup=InlineKeyboardMarkup(keyboard))
async def button(update, context):
query = update.callback_query
await query.answer()
await query.edit_message_text("Giá Bitcoin: 100.000 USD")
Polling hay webhook?
Có hai cách để bot nhận tin nhắn từ Telegram: polling và webhook. Polling đơn giản, không cần địa chỉ công khai, phù hợp cho bot cá nhân và giai đoạn phát triển. Webhook nhanh hơn vì Telegram chủ động đẩy tin nhắn tới server của bạn, nhưng yêu cầu URL HTTPS công khai, thường kết hợp với Nginx và chứng chỉ SSL.
Khi bot chạy ổn định trên máy cá nhân, bạn có thể triển khai lên VPS với systemd, hoặc dùng các nền tảng miễn phí như Railway và Render. Với webhook, bạn dùng hàm run_webhook() thay vì run_polling() và cấu hình địa chỉ webhook công khai.
Ý tưởng bot Telegram hữu ích
- Bot thông báo: gửi cảnh báo khi server gặp sự cố, khi giá coin biến động hoặc khi có tin tức mới, dùng hàm
send_messagevới chat_id của bạn. - Bot RSS: định kỳ kiểm tra nguồn tin, so sánh nội dung mới và đẩy bài viết vào kênh Telegram tự động.
- Bot quản lý công việc: thêm, xóa, đánh dấu hoàn thành công việc qua tin nhắn, dữ liệu lưu trong file hoặc database.
- Bot dịch thuật: kết hợp API dịch tự động để dịch văn bản ngay trong hội thoại.
Điểm mạnh lớn nhất của Telegram bot là bạn không cần xây dựng giao diện người dùng: mọi thứ đều diễn ra trong ứng dụng Telegram quen thuộc, chạy được trên điện thoại lẫn máy tính.
Tổng kết
Tạo bot Telegram bằng Python là dự án phù hợp cho cả người mới học lập trình lẫn lập trình viên muốn tự động hóa công việc. Chỉ cần làm quen với BotFather, thư viện python-telegram-bot và vài khái niệm cơ bản về handler, bạn đã có thể xây dựng bot đầu tiên trong buổi tối. Từ đó, hãy mở rộng dần với bàn phím inline, webhook và triển khai lên server để bot chạy 24/7 phục vụ bạn bè và cộng đồng.
Tham khảo thêm
Tài liệu python-telegram-bot | Create a Telegram Bot using Python – GeeksforGeeks | How to Create a Telegram Bot using Python – freeCodeCamp | Deploying Python Telegram Bot trên Heroku – dev.to
