Discord 网关意图:机器人可以接收什么
网关意图是机器人连接时声明的选项,告诉 Discord 它希望接收哪些组的实时事件。 没有请求某个意图的机器人,就根本不会收到那些事件,这既保护了数据隐私,也减少了流量。
网关是什么
机器人与 Discord 保持一个持续的连接,称为网关。通过它,Discord 会在事件发生时推送它们:发送了一条消息、一位成员加入、有人开始输入、一个语音频道发生了变化。如果没有限制,每个机器人都会收到每个服务器的每个事件。
意图就是过滤器。机器人在连接后发送的第一条消息中,会以一个数字的形式列出它想要的意图。之后 Discord 只会发送与之匹配的事件。
常见的意图
- Guilds(服务器):服务器、频道和角色被创建或修改。几乎每个机器人都会使用它。
- Guild messages(服务器消息):服务器频道中的消息。这些消息的文本需要一个特权意图,见下文。
- Guild voice states(服务器语音状态):谁加入或离开语音频道。音乐和语音工具需要它。
- Guild moderation(服务器管理):封禁和审核日志条目。
- Guild message reactions(服务器消息反应):反应被添加或移除。
有三个意图比较特殊:在线状态(presence)、服务器成员和消息内容。它们是特权意图,因为它们会暴露更多个人数据,较大的机器人需要额外的审批。
为什么它对服务器所有者很重要
当机器人在线但忽略消息、加入或语音变化时,缺少意图是一个常见原因。当机器人请求了一个未在其设置中开启的特权意图时,它也可能因错误代码 4014 而断开连接。文章机器人离线网关错误 4004 和 4014对此有所说明。
意图也是一种隐私信号。只请求其功能所需内容的机器人,更容易让人信任。
意图与 Noxyr
主 Noxyr 机器人由我们为你管理。如果你使用自己的应用设置了自定义机器人,则必须在 Discord 开发者门户中开启"服务器成员意图"和"消息内容意图",正如设置指南所说明的那样。欢迎消息和前缀命令等功能需要它们。如果自定义机器人离线,请从机器人离线指南开始排查。
更多细节请参阅特权网关意图详解。
检查你没有编写的机器人
如果你安装的机器人表现异常,请询问其开发者它使用哪些意图以及原因。好的机器人会在文档中列出它们。对于你自己的机器人,打开开发者门户,进入"机器人"页面,并将开关与代码所请求的内容进行比较。不匹配是首先要修复的问题。
常见问题
如果机器人没有请求某个意图,会发生什么?
Discord 不会向它发送对应的事件。机器人保持在线,但无法对这些事件作出反应。
我在哪里为自己的机器人开启意图?
在 Discord 开发者门户中打开你的应用,进入"机器人"页面,并开启它需要的特权意图。
所有意图都是特权意图吗?
不是。只有在线状态、服务器成员和消息内容是特权意图。其余的可以自由使用。