Cách tạo bot Telegram tự động trả lời tin nhắn Python chuyên nghiệp

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

  1. Khởi tạo (Initialize): Kết nối bot với Telegram API qua Token.
  2. 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.
  3. Bộ lọc (Filters): Phân loại tin nhắn (chỉ nhận text, ảnh, hoặc lệnh cụ thể).
  4. 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

  1. Invalid Token: Kiểm tra lại Token lấy từ BotFather, đảm bảo không có khoảng trắng.
  2. 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.
  3. 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.

By admin

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *