使用 Node.js 和自动代码,6 分钟内构建一个 Discord 机器人
快速入门
它是如何运作的?
斜杠命令
更多提示
谢谢你!
本文将向您展示如何设置一个完全可定制的Discord机器人,您可以在 6 分钟(甚至更短时间!)内将其部署到您的公会中。此外,我还会提供一些实用技巧,帮助您在基本示例运行成功后进一步定制您的机器人。
我们将使用Autocode来完成 Discord API 身份验证、处理传入事件以及托管机器人 Node.js 代码等繁重工作——所有这些都是免费的。我们还提供了一个在线编辑器,所以你只需要一个 Discord 账号就可以开始使用了!
让我们开始吧!
快速入门
首先,请访问Autocode 上的Discord 入门应用页面。该机器人的源代码完全开源,如果您感兴趣,欢迎查看!
准备就绪后,请点击绿色的“免费安装”按钮。如果您还没有 Autocode 帐户,请先创建一个,然后为您的项目选择一个名称。
在下一个屏幕上,系统会提示您关联 Discord 帐户:
点击“链接”,然后在弹出的对话框中选择“链接新资源”,并按照说明链接 Discord 应用。这包括从Discord 开发者门户创建一个应用并将其安装到你的公会中,然后在提示时将应用的身份验证凭据粘贴到 Autocode 中。
最后,点击“安装应用”。就这么简单!如果你的公会设有#general频道,你会看到一条欢迎信息,确认安装完成。在消息中提及你的机器人@BotName,它就会回复你!
它是如何运作的?
Autocode 会使用您之前提供的机器人凭据监听来自 Discord 的事件。当收到事件时,Autocode 会触发关联了同一机器人的项目中的相应端点。
在这个例子中,Autocode 会触发functions/events/discord/bot_mention.js你刚刚安装的应用的端点。这个端点会调用Autocode 标准库中discord.channels API的 messages.create 方法,从而发送消息。以下是相关的代码:
// authenticates you with the API standard library
const lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN});
let messageResponse = await lib.discord.channels['@0.0.6'].messages.create({
channel_id: `${context.params.event.channel_id}`,
content: [
`Hey <@!${context.params.event.author.id}>! I'm a bot powered by Autocode.`,
`You mentioned me in a message, so here I am!`
].join('\n'),
embed: {
title: 'Guild Information',
type: 'rich',
color: 0x00AA00, // Green color
description: 'You could add some information here for guild members to view!',
fields: [{
name: 'Message Formatting',
value: [
'Check out this link for more details on formatting message embeds:',
'https://discord.com/developers/docs/resources/channel#embed-object-embed-structure'
].join('\n')
}, {
name: 'Setting up Slash Commands',
value: [
'Check out the README for this bot on Autocode for help setting up slash commands:',
'https://autocode.com/app/discord/basic-discord-example/'
].join('\n')
}]
},
tts: false
});
return messageResponse;
非常简单!自动代码会自动填充并定义一个context参数,其中包含来自 Discord 的传入事件的详细信息。我们可以像context.params.event上面那样访问这些数据。
斜杠命令
应用程序中的另一个端点,当触发functions/events/discord/command.js调用斜杠命令时,会发送一条包含当前公会中用户和机器人数量的消息:/member-count
但是,在此之前,我们需要在 Discord 中注册斜杠命令。幸运的是,使用 Autocode 内置的 Discord 斜杠命令生成器可以轻松完成此操作!
前往Discord 斜杠命令生成器,并链接您在安装过程中创建的同一个机器人。选择您安装机器人的公会,然后为命令命名member-count。同时,也请添加描述:
准备就绪后,点击“全部保存”。恭喜!您已在公会中创建了一个斜杠命令。在公会中输入命令即可试用/member-count。如果一切操作正确,您应该会看到……
哎呀,我们还有一件事要做!
设置特权意图
如果您查看该functions/events/discord/command.js端点的代码,您会发现它调用了discord.guilds API的 members.list 方法。Discord 将此 API 视为特权 API,因此要使用它,您必须手动授予您的机器人访问权限。
返回Discord 开发者门户并打开您的机器人设置。打开“机器人”面板,向下滚动直到看到“特权网关意图”设置:
启用名为“服务器成员意图”的开关,然后返回你的 Discord 服务器并再次运行该命令。你应该会看到正确的消息:
您现在已经完全设置好了入门应用程序!您可以随意修改其代码,还可以通过在 Autocode 中重新打开项目来添加其他 Discord 事件的新端点。
更多提示
在您继续建设的过程中,以下是一些您可能会觉得有用的额外提示:
查找你的公会ID
查找公会 ID(以及频道、用户和角色 ID)的一种方法是启用开发者模式。点击客户端左下角的齿轮图标打开用户设置,然后点击左侧边栏中的“高级”菜单项,并打开开发者模式开关:
启用后,退出设置,右键单击左侧边栏中包含您机器人的公会图标。出现的菜单中将包含一个新Copy ID选项:
选中它,公会 ID 就会复制到剪贴板。右键单击用户、频道和角色也会出现类似Copy ID选项。
格式化消息
使用discord.channels API可以轻松地在 Discord 上发布简单消息,Discord 甚至支持 Markdown 格式,方便进行格式化。但是,随着消息变得越来越复杂,以下是一些需要注意的技巧:
- 在消息中提及用户或机器人时,需要以特定方式用方括号将他们的 ID 括起来。例如
This message is tagging a user: <@!000000000000>: - Discord 会自动展开消息中的链接,您可以利用这一点轻松创建有用的通知。
- 在消息中添加丰富的嵌入内容可以显著提升其在频道中的辨识度。您可以参考示例应用端点中的消息,了解其功能,并查看Discord 文档中完整的嵌入对象字段列表。
- 嵌入代码的一个陷阱是
color参数——它接受的是数字,而不是字符串。要方便地将 RGB 颜色表示为该参数的数字,可以使用十六进制数(0x00AA00绿色不使用引号)而不是'#00AA00'. tts代表“文本转语音”——将其设置为 true 将使 Discord 向任何拥有正确设置的人朗读您的消息,因此在公会中与其他用户一起测试时要小心!
实用链接
- 使用 Autocode 构建 Discord 机器人的官方指南
- Discord 斜杠命令生成器
- 格式化 Discord 消息
- Discord消息嵌入结构
- Discord 斜杠命令
- Discord开发者门户
- 用于创建斜杠命令的 Discord/命令 API 页面自动编码
- 如何找到你的 Discord 公会 ID
谢谢你!
如果您有任何疑问、反馈,或者只是想聊聊天,欢迎加入 Autocode Discord!我们拥有一个不断壮大的社区,他们很乐意为您提供帮助。您可以在 autocode.com 网站顶部栏的“文档”>“加入 Discord”中找到邀请链接。
您也可以直接在 Twitter 上联系我,我的账号是 @Hacubu。想要了解更多 Autocode 的最新动态,请关注我们的 Twitter 账号@AutocodeHQ。下次见!
文章来源:https://dev.to/hacubu/build-a-discord-bot-in-6-minutes-with-node-js-and-autocode-4n2d









