Giới thiệu
Trong kỷ nguyên tự động hóa, việc Tạo bot Telegram tự động trả lời tin nhắn Python không chỉ giúp bạn tiết kiệm thời gian mà còn đảm bảo phản hồi khách hàng/người dùng 24/7. Giải pháp này sử dụng mô hình lập trình bất đồng bộ (Async/Await), giúp bot xử lý hàng nghìn tin nhắn cùng lúc mà không bị treo.
Chuẩn bị
Chúng ta sẽ sử dụng thư viện python-telegram-bot (phiên bản v20.x trở lên) – thư viện mạnh mẽ và phổ biến nhất hiện nay.
Cài đặt thông qua pip:
pip install python-telegram-bot
Lưu ý: Bạn cần lấy TOKEN từ @BotFather trên Telegram trước khi bắt đầu.
Phân tích Logic
- Khởi tạo (Initialize): Kết nối bot với Telegram API qua Token.
- Lắng nghe (Polling): Bot liên tục kiểm tra xem có tin nhắn mới gửi đến hay không.
- Bộ lọc (Filters): Phân loại tin nhắn (chỉ nhận text, ảnh, hoặc lệnh cụ thể).
- Phản hồi (Action): Thực thi hàm trả lời tương ứng với logic đã định nghĩa.
Hướng dẫn Code (Step-by-step)
Bước 1: Khai báo thư viện và Logging
Chúng ta cần logging để theo dõi trạng thái hoạt động của bot.
import logging
from telegram import Update
from telegram.ext import ApplicationBuilder, ContextTypes, MessageHandler, filters, CommandHandler
# Cấu hình log để debug khi có lỗi
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO
)
Bước 2: Viết hàm xử lý tin nhắn
Đây là “bộ não” của bot, nơi bạn quyết định bot sẽ trả lời gì.
async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
try:
# Lấy nội dung tin nhắn từ người dùng
user_text = update.message.text
user_id = update.message.from_user.id
# Logic phản hồi đơn giản (Có thể thay bằng AI hoặc Database)
reply_text = f"Bot đã nhận được tin nhắn: '{user_text}' từ ID: {user_id}"
# Gửi phản hồi
await update.message.reply_text(reply_text)
except Exception as e:
print(f"Lỗi xử lý tin nhắn: {e}")
Bước 3: Thiết lập lệnh khởi động (/start)
Tạo thiện cảm với người dùng bằng một câu chào chuyên nghiệp.
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("Chào mừng! Tôi là Bot tự động. Hãy gửi gì đó cho tôi!")
Xử lý lỗi thường gặp
- Invalid Token: Kiểm tra lại Token lấy từ BotFather, đảm bảo không có khoảng trắng.
- Network Timeout: Do mạng yếu hoặc bị chặn bởi Firewall/VPN. Nên dùng Proxy nếu chạy trên Server quốc tế bị chặn.
- Conflict: Chỉ chạy 1 script bot tại một thời điểm. Nếu chạy 2 nơi cùng 1 Token, bot sẽ báo lỗi
Conflict.
Kết luận & Source code toàn văn
Dưới đây là mã nguồn hoàn chỉnh, sạch sẽ và có thể chạy ngay lập tức. Bạn chỉ cần thay YOUR_TOKEN_HERE bằng Token của mình.
import logging
from telegram import Update
from telegram.ext import ApplicationBuilder, ContextTypes, MessageHandler, filters, CommandHandler
# 1. Cấu hình Token và Logging
TOKEN = 'YOUR_TOKEN_HERE'
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO
)
# 2. Hàm xử lý lệnh /start
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("🚀 Bot tự động đã sẵn sàng! Gửi tin nhắn cho tôi nhé.")
# 3. Hàm xử lý tin nhắn văn bản
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
try:
text_received = update.message.text
# Logic phản hồi tùy biến
response = f"✅ Hệ thống đã ghi nhận: {text_received}"
await update.message.reply_text(response)
except Exception as e:
logging.error(f"Error in echo handler: {e}")
if __name__ == '__main__':
try:
# Khởi tạo ứng dụng bot
application = ApplicationBuilder().token(TOKEN).build()
# Thêm các Handler (Bộ xử lý)
application.add_handler(CommandHandler('start', start))
application.add_handler(MessageHandler(filters.TEXT & (~filters.COMMAND), echo))
print("--- Bot đang chạy... Nhấn Ctrl+C để dừng ---")
# Bắt đầu nhận tin nhắn
application.run_polling()
except Exception as e:
print(f"❌ Lỗi khởi động Bot: {e}")
Mẹo nhỏ: Để bot chạy 24/7, bạn nên treo code này trên một VPS (Ubuntu) và sử dụng công cụ screen hoặc pm2 để quản lý tiến trình. Chúc bạn thành công!
See more: Tạo bot Telegram tự động trả lời tin nhắn Python.
Discover: Python Trick.
