Bỏ qua để đến nội dung

Chạy bot Python

Trang này dùng ví dụ một bot Discord viết bằng discord.py, nhưng cách làm áp dụng cho mọi script Python khác như bot Telegram hay API FastAPI. Bạn cần một server loại Python.

Mỗi lần bạn bấm Start trong dashboard, server làm lần lượt ba việc:

  1. Cài các gói ghi trong biến Additional Python packages (nếu có).
  2. Nếu có file requirements.txt (tên file đặt ở biến Requirements file), server chạy pip install -r requirements.txt.
  3. Chạy file chính ghi trong biến App py file, mặc định là app.py.

Thư viện được cài vào thư mục .local ngay trong server, nên bạn không cần tạo virtualenv hay tải thư viện lên.

  • app.py
  • requirements.txt
  • .env
app.py
import os
import discord
from dotenv import load_dotenv
load_dotenv()
client = discord.Client(intents=discord.Intents.default())
@client.event
async def on_ready():
print(f"Đã đăng nhập: {client.user}", flush=True)
client.run(os.environ["DISCORD_TOKEN"])
requirements.txt
discord.py
python-dotenv
.env
DISCORD_TOKEN=token-cua-ban
  1. Mở dashboard, chọn server rồi vào trang Tệp.

  2. Kéo thả các file vào trang, hoặc nén cả thư mục thành .zip, tải lên rồi chọn Giải nén trong menu của file đó. Bỏ các thư mục venv, __pycache__ ra trước khi nén.

  3. Vào trang Startup. Kiểm tra ô App py file đúng tên file chính, và chọn phiên bản Python trong ô Docker image nếu cần. Zyhost có Python từ 3.7 tới 3.14.

  4. Quay về Console và bấm Start. Lần đầu server cài thư viện nên sẽ lâu hơn một chút. Thấy dòng Đã đăng nhập: … là bot đã online.

Muốn lấy code từ GitHub thay vì tải tay, cách làm giống hệt server Node.js, xem Lấy code từ GitHub.

ModuleNotFoundError: No module named 'discord' nghĩa là thiếu thư viện trong requirements.txt. Lưu ý tên gói khi cài có thể khác tên khi import, ví dụ cài discord.py nhưng import discord, cài python-dotenv nhưng import dotenv.

python: can't open file '/home/container/app.py' nghĩa là ô App py file không khớp với tên file thật. Sửa lại trong Startup.

Lỗi khi cài thư viện thường do phiên bản Python không hợp với thư viện. Đọc dòng lỗi của pip trong Console, rồi đổi Docker image sang phiên bản Python mà thư viện hỗ trợ.

Bot chạy được một lúc rồi tắt thường do hết RAM, còn chậm dần thường do hết CPU-giờ. Xem thêm ở CPU-giờ là gì.