部署 Discord.js 机器人
在 Daki Hosting 上部署 Discord.js(Node.js)机器人的分步指南。
本指南将带你在 Daki Hosting 上部署一个 Discord.js 机器人 — 从创建服务器,到机器人上线并安全地读取其令牌。
你将学到
- 如何为你的机器人创建 Node.js 服务器
- 如何上传你的代码
- 如何配置安装命令、启动命令和 Docker 镜像
- 如何使用
.env文件安全地设置机器人令牌 - 如何启动机器人并验证其运行正常
前提条件
- 一个 Daki 账户(Free Tier 或付费)— 参见创建账户与登录
- 一个带有机器人令牌的 Discord 机器人,在 Discord 开发者门户 中创建
- 你的机器人源代码,包括在
package.json中声明了discord.js和dotenv依赖的文件
Discord 机器人会向外连接到 Discord 的服务器,不需要入站端口。这意味着 Discord 机器人在 Free Tier 和付费套餐上都能运行。如果你的机器人还需要处理 HTTP 请求(例如斜杠命令交互或 Webhook),则需要付费套餐,因为公网可访问的端口仅在付费套餐中提供。参见网络与端口分配。
部署
创建 Node.js 服务器
- 在 free.daki.cc 登录 Free Tier Dashboard,或在 billing.daki.cc 登录 Billing Panel。
- 创建新服务器,并选择 Node.js Egg。
- 为你的服务器命名(例如
MyDiscordBot)。
完整流程参见创建你的第一个免费服务器。
访问门户
通过 SSO 登录 门户(在控制台的 Account 页面或你的 Billing Panel 服务页面点击 Open Portal),或直接访问 portal.daki.cc。参见门户概览。
上传机器人代码
方式 A — 上传 ZIP(最简单):
- 在本地将你的项目文件夹压缩为
.zip文件。 - 在门户中进入 Files 标签页,点击 Upload。
- 右键点击
.zip文件,然后点击 Extract。
方式 B — 使用 SFTP(无大小限制): 使用 Settings 标签页中的 SFTP 凭据进行连接,然后直接上传你的文件夹。参见文件管理器。
不要将
node_modules文件夹包含在上传内容中 — 它会由安装命令自动安装。请务必包含你的package.json和package-lock.json。- 在本地将你的项目文件夹压缩为
配置 Startup 标签页
打开 Startup 标签页,并配置以下三个字段:
1. Docker Image — 选择你的机器人所需的 Node.js 版本(例如 Node.js 22 或 Node.js 24)。如果不确定,Node.js 24 LTS 是安全的默认选择。避免选择标记为 EOL 的版本,它们不再接收安全更新。
2. Install Command — 设置为自动安装依赖:
Shellnpm install3. Startup Command — 设置为启动机器人的命令:
node index.js— 如果你的入口文件是index.jsnode bot.js— 如果你的入口文件是bot.jsnpm start— 如果你的package.json中有start脚本
你可以根据项目结构自由调整这些命令。
完整说明参见启动设置。
通过 .env 文件添加机器人令牌
机器人需要 Discord 令牌才能连接。将其保存在服务器的
.env文件中,这样它就永远不会出现在你的源代码里。- 在 Files 标签页中,点击 New File,并将其命名为
.env。 - 添加你的令牌:
.env
BOT_TOKEN=your_discord_bot_token_here - 点击 Save。
在机器人代码中,使用
dotenv加载它:JavaScriptrequire('dotenv').config(); const { Client, GatewayIntentBits } = require('discord.js'); const client = new Client({ intents: [GatewayIntentBits.Guilds] }); client.once('ready', () => { console.log(`Logged in as ${client.user.tag}`); }); client.login(process.env.BOT_TOKEN);确保
dotenv已列在你的package.json依赖中,这样安装命令才会将其安装。关于使用
.env文件的更多信息,参见环境变量。- 在 Files 标签页中,点击 New File,并将其命名为
启动你的机器人
常见问题
Error: Cannot find module 'discord.js'
你的依赖没有被安装。请检查你的 package.json 是否将 discord.js 列为依赖,并确认 Startup 标签页中的安装命令为 npm install。重启服务器以触发安装。
Error: Cannot find module 'dotenv'
将 dotenv 添加到你的 package.json 依赖中,然后重启服务器以重新安装。
Error: An invalid token was provided
.env 文件中的机器人令牌不正确或缺失。进入 Files 标签页,打开 .env,并检查其值。确保没有多余的空格、引号或换行。
机器人启动后不久便断开连接
这通常是缺少 Gateway Intents 导致的。在 Discord 开发者门户中,为你的机器人应用启用所需的特权 Intents(例如 Message Content Intent),并确保你的代码请求了这些 Intents。
服务器启动后立即崩溃
打开 Console 标签页并阅读错误信息。常见原因:启动命令错误(文件名拼写错误)、Node.js 版本错误,或缺少 node_modules。参见故障排查。