部署 Python 机器人
在 Daki Hosting 上部署 Python Discord 机器人(discord.py 或 py-cord)的分步指南。
本指南将带你在 Daki Hosting 上部署一个 Python Discord 机器人 — 从创建服务器,到安全地读取机器人令牌并让机器人上线。
你将学到
- 如何为你的机器人创建 Python 服务器
- 如何上传你的代码
- 如何配置安装命令、启动命令和 Python 版本
- 如何使用
.env文件安全地设置机器人令牌 - 如何启动机器人并验证其运行正常
前提条件
- 一个 Daki 账户(Free Tier 或付费)— 参见创建账户与登录
- 一个带有机器人令牌的 Discord 机器人,在 Discord 开发者门户 中创建
- 你的机器人源代码,包括列出所有依赖的
requirements.txt(例如discord.py或py-cord,以及python-dotenv)
Discord 机器人会向外连接到 Discord 的服务器,不需要入站端口。这意味着 Discord 机器人在 Free Tier 和付费套餐上都能运行。如果你的机器人还运行 HTTP 服务器(例如用于 Webhook 或 Web 仪表板),则需要付费套餐,因为公网可访问的端口仅在付费套餐中提供。参见网络与端口分配。
部署
创建 Python 服务器
- 在 free.daki.cc 登录 Free Tier Dashboard,或在 billing.daki.cc 登录 Billing Panel。
- 创建新服务器,并选择 Python Egg。
- 为你的服务器命名(例如
MyPythonBot)。
完整流程参见创建你的第一个免费服务器。
访问门户
通过 SSO 或直接访问 portal.daki.cc 登录 门户。参见门户概览。
上传机器人代码
方式 A — 上传 ZIP(最简单):
- 将你的项目文件夹压缩为
.zip文件。 - 在门户中进入 Files 标签页,点击 Upload。
- 右键点击
.zip文件,然后点击 Extract。
方式 B — 使用 SFTP(无大小限制): 使用 Settings 标签页中的 SFTP 凭据直接上传文件夹。参见文件管理器。
请在项目根目录中包含
requirements.txt。安装命令会使用它来安装你的依赖。- 将你的项目文件夹压缩为
配置 Startup 标签页
打开 Startup 标签页,并配置以下三个字段:
1. Docker Image — 选择你的机器人所需的 Python 版本(例如 Python 3.13)。如果不确定,Python 3.13 是安全的默认选择;只要你的所有库都支持,更新的版本也可以使用。避免选择标记为 EOL 的版本,它们不再接收安全更新。
2. Install Command — 设置为自动安装依赖:
Shellpip install -r requirements.txt3. Startup Command — 设置为运行机器人的命令:
python main.py— 如果你的入口文件是main.pypython bot.py— 如果你的入口文件是bot.pypython -m mypackage— 如果你的项目以包的形式组织
你可以根据项目结构和需求自由调整这些命令。
完整说明参见启动设置。
通过 .env 文件添加机器人令牌
将你的 Discord 机器人令牌保存在服务器的
.env文件中,这样它就永远不会出现在你的源代码里。- 在 Files 标签页中,点击 New File,并将其命名为
.env。 - 添加你的令牌:
.env
BOT_TOKEN=your_discord_bot_token_here - 点击 Save。
确保
python-dotenv已列在你的requirements.txt中,然后在代码中加载该文件:Pythonfrom dotenv import load_dotenv import os import discord load_dotenv() TOKEN = os.environ.get("BOT_TOKEN") intents = discord.Intents.default() client = discord.Client(intents=intents) @client.event async def on_ready(): print(f"Logged in as {client.user}") client.run(TOKEN)关于使用
.env文件的更多信息,参见环境变量。- 在 Files 标签页中,点击 New File,并将其命名为
启动你的机器人
常见问题
ModuleNotFoundError: No module named 'discord'
你的依赖没有被安装。请检查 requirements.txt 中是否列出了 discord.py 或 py-cord,并确认 Startup 标签页中的安装命令为 pip install -r requirements.txt。重启服务器以触发安装。
ModuleNotFoundError: No module named 'dotenv'
将 python-dotenv 添加到你的 requirements.txt 中,然后重启服务器。
discord.errors.LoginFailure: Improper token has been passed
.env 文件中的令牌不正确或缺失。在 Files 标签页中打开 .env 文件,仔细检查其值。删除多余的空格或引号。
PrivilegedIntentsRequired error
你的机器人请求了未在 Discord 开发者门户中启用的 Intents。请在你的机器人应用设置中启用所需的特权 Intents(例如 Message Content Intent),并确保你的代码请求的是相同的 Intents。
服务器启动后立即崩溃
阅读 Console 中的错误输出。常见原因:启动命令错误(文件名拼写错误或路径错误)、缺少 requirements.txt,或缺少某个包。参见故障排查。