Discord Gateway获取全部事件对应的Intents数值是多少
解决方案
你当前设置的intents: 513是GUILDS (1 << 0 = 1)与GUILD_MESSAGES (1 << 9 = 512)的组合,仅覆盖了服务器基础变更、服务器消息相关事件,没有包含反应、线程等事件对应的intent权限。
Discord的intent采用位掩码规则,每个事件组对应一个2的幂次数值,将你需要的所有事件组对应数值相加,即可得到最终的intents值。
核心事件组对应数值表
- 反应相关事件
MESSAGE_REACTION_ADD/MESSAGE_REACTION_REMOVE对应GUILD_MESSAGE_REACTIONS,数值为1 << 10 = 1024 - 线程相关事件对应
GUILD_MESSAGE_THREADS,数值为1 << 17 = 131072 - 成员加入/退出/更新事件(特权intent)对应
GUILD_MEMBERS,数值为1 << 1 = 2 - 成员在线状态变更事件(特权intent)对应
GUILD_PRESENCES,数值为1 << 2 = 4 - 消息内容读取权限(特权intent)对应
MESSAGE_CONTENT,数值为1 << 15 = 32768 - 私聊消息/反应/线程事件对应
DIRECT_MESSAGES/DIRECT_MESSAGE_REACTIONS/DIRECT_MESSAGE_THREADS,数值分别为4096、8192、16384 - 语音状态、邀请链接、表情贴纸等其他事件组,可按需查找对应数值累加
适配你需求的配置示例
仅需补充反应、线程事件的话,直接在原有513基础上累加对应数值即可:513 + 1024 + 131072 = 132609
如果需要开启全量所有事件(含特权intent),完整数值为327679
let payload = { op: 2, d: { token: "bot token", intents: 132609, // 需全量事件可改为327679 properties: { $os: "linux", $browser: "chrome", $device: "chrome", }, }, };
注意:所有标记为特权intent的事件组,必须先在Discord开发者平台对应应用的Bot设置页手动开启对应开关,超过100台服务器的机器人还需向Discord提交特权intent申请,否则即使设置了对应intents值也无法接收事件。
内容的提问来源于stack exchange,提问作者BlackdestinyXX
相关产品推荐
相关产品推荐

