Một Telegram bot chỉ chạy khi laptop của bạn mở thì không thực sự đang chạy — nó đang demo. Để nó thực sự online, trả lời lúc 3 giờ sáng, sống sót qua các lần khởi động lại của bạn và các lần sập của chính nó, nó cần sống trên một máy chủ. Đây là toàn bộ con đường, từ đầu đến cuối, với các lệnh.
Tin vui trước: một bot là một khối lượng công việc tí hon. Nó chủ yếu ngồi nhàn rỗi chờ tin nhắn, nên cỗ máy rẻ nhất chạy nó tốt — không IP riêng, không tên miền, không gì cầu kỳ.
1. Lấy một token từ BotFather
Trong Telegram, nhắn @BotFather, gửi /newbot, chọn một tên và username. Nó trao bạn một token trông như 12345:AAH.... Đối xử với nó như một mật khẩu — bất kỳ ai có nó kiểm soát bot của bạn.
2. Một bot tối thiểu
SSH vào máy chủ, thiết lập Python và thư viện:
sudo apt update && sudo apt install -y python3-venv
mkdir ~/mybot && cd ~/mybot
python3 -m venv venv && source venv/bin/activate
pip install python-telegram-bot
Một bot trả lời — ~/mybot/bot.py:
import os
from telegram.ext import ApplicationBuilder, CommandHandler
async def start(update, ctx):
await update.message.reply_text("Alive and on a server. 🟢")
app = ApplicationBuilder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
Chú ý nó đọc token từ một biến môi trường — không hard-code. Điều đó quan trọng ở bước tiếp theo.
3. Phần thực sự giữ nó chạy: systemd
Nếu bạn chỉ chạy python bot.py, nó chết khoảnh khắc bạn đóng SSH. Một dịch vụ systemd là cái làm nó sống sót qua đăng xuất, sập, và khởi động lại. Tạo /etc/systemd/system/mybot.service:
[Unit]
Description=Telegram bot
After=network-online.target
[Service]
WorkingDirectory=/home/youruser/mybot
Environment=BOT_TOKEN=12345:AAH...your-token
ExecStart=/home/youruser/mybot/venv/bin/python bot.py
Restart=always
RestartSec=5
User=youruser
[Install]
WantedBy=multi-user.target
Rồi:
sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo systemctl status mybot # nên nói active (running)
journalctl -u mybot -f # log trực tiếp
Restart=always là dòng làm việc thật — sập, và nó trở lại trong 5 giây. enable nghĩa là nó lên sau một lần khởi động lại. Đó là toàn bộ khác biệt giữa "tôi đã chạy một bot một lần" và "bot của tôi đang lên."
4. Vì sao không tên miền hay các cổng mở
Bot dùng long polling — nó gọi ra tới Telegram để lấy các cập nhật, nên không gì cần tới vào. Không URL công khai, không quy tắc tường lửa đến, không IP riêng. Đây chính xác là vì sao một VPS NAT (IP dùng chung, SSH trên một cổng) là một ngôi nhà ổn và rẻ cho một bot. Webhook tồn tại cho khối lượng rất cao, nhưng bạn gần như chắc chắn không cần chúng để bắt đầu.
Các lưu ý trung thực
- Vệ sinh token: ở đây nó nằm inline trong tập tin unit để rõ ràng — ổn trên một cỗ máy khóa chặt, nhưng cho bất cứ gì chia sẻ, nạp nó từ một
EnvironmentFilechỉ-root thay vào đó, và đừng bao giờ commit nó vào git. Rò rỉ? Thu hồi trong BotFather, phát một cái mới. - Các bot nặng: nếu bot của bạn tự làm việc (tạo ảnh, một mô hình cục bộ), nó không còn tí hon — nâng kích cỡ tương ứng.
Đó là tất cả. Khóa cỗ máy lại trước với danh sách kiểm tra bảo mật, đặt dịch vụ vào, và bot của bạn ở lại online dù bạn có hay không. Trên một VPS thanh toán-crypto bạn có thể có nó chạy một phút sau khi bạn quyết định.
Bình luận
Chưa có bình luận nào. Hãy là người đầu tiên.