/ping 斜杠命令的机器人:你只需注册一次命令,然后启动机器人并在你的服务器中使用它。如果这是你第一次创建机器人,建议在读到每个代码块时就直接复制。
为你的机器人创建一个文件夹,并使用
bun init 进行初始化。出现提示时选择默认选项。
terminal
将 Discord.js 添加到项目中。
terminal
你的机器人需要自己的账号,你需要在 Discord 的开发者门户中创建它。打开 开发者门户,登录,然后创建一个 Application。进入后,打开 Bot 选项卡来创建机器人用户。如果你遇到困难,Discord 的 设置教程 有截图可供参考。 从门户中复制两个值:
- Bot 选项卡中的 token。它是代码用于登录的密码,所以请像对待密码一样保密。
- General Information 选项卡中的 Application ID。Discord 使用它将你的命令绑定到这个应用。
机器人在被邀请到服务器之前,无法在服务器中执行任何操作。在门户的 OAuth2 部分,生成一个带有
bot 和 applications.commands 作用域的邀请链接,打开它,并将机器人添加到你管理的服务器中。斜杠命令需要 applications.commands 作用域,所以不要跳过它。最简单的起点是你自己用于测试的个人服务器,Discord 的 添加机器人指南 也有带截图的步骤说明。
你还需要服务器的 ID,才能在该服务器中注册命令。在 Discord 中,打开 Settings > Advanced > Developer Mode,然后右键单击服务器图标并选择 Copy Server ID。
将这三个值保存到
.env.local 中。Bun 会在启动时读取这个文件并将其加载到 process.env,因此你的代码里不会出现任何密钥。
.env.local
在提交任何内容之前,先将
.env.local 添加到 .gitignore 中。任何读取到 token 的人都可以控制你的机器人,所以它绝不能进入版本控制。
.gitignore
在任何人能使用命令之前,Discord 必须先知道这个命令。使用一个名为
deploy-commands.ts 的简短脚本注册 /ping。
terminal
接下来是机器人本体。将其保存为
bot.ts。
interactionCreate 就会运行;它会确认命令是否为 /ping,并回复 Pong!。
使用
bun run 启动机器人。
terminal
/ping。
Pong!。你已经拥有一个可工作的 Discord 机器人了。
要添加另一个命令,只需在
deploy-commands.ts 中定义它,再运行一次脚本,并在 bot.ts 中为它的名称添加一个 if 分支。Discord.js 文档 涵盖了命令选项、权限、按钮、嵌入消息以及 API 的其余部分。
当你部署时,不需要构建或打包步骤。Bun 会直接运行
bot.ts 及其导入的每个文件,因此你可以原样部署源码,并使用开发时相同的 bun run bot.ts 启动它。
deploy-commands.ts 会在你的测试服务器中注册 /ping,这在开发阶段是正确的作用范围。若要将机器人发布到它加入的每个服务器中,请改为全局注册:将路由改为 Routes.applicationCommands(DISCORD_CLIENT_ID)。全局注册不需要服务器,因此你也可以从脚本的检查和 .env.local 中移除 DISCORD_GUILD_ID。
为了让机器人保持在线,并在崩溃或重启后恢复运行,请在进程管理器下运行它。
systemd
将你的机器人作为 Linux 守护进程运行
PM2
使用 PM2 管理你的机器人