首页 >web前端 >js教程 >为什么我的 Discord 机器人的公会成员活动和功能不起作用?

为什么我的 Discord 机器人的公会成员活动和功能不起作用?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-19 09:00:14641浏览

Why Are My Discord Bot's Guild Member Events and Functions Not Working?

Discord 网关意图执行


问题:


对于某些用户,特定公会成员活动和功能突然停止运行。 GuildMemberAdd、GuildMemberRemove 和 GuildMemberUpdate 事件不再触发,用户缓存返回未定义或有限的结果。此外,GuildMemberManager.fetch() 超时。

原因:


Discord 最近强制执行了特权意图。以前,GUILD_PRESENCES 和 GUILD_MEMBERS 意图是可选的。但是,截至 2020 年 10 月 27 日,这些意图已默认禁用。

禁用特权的影响意图:&​​lt;/h3>

GUILD_PRESENCES:



  • 清空会员和用户缓存


  • 触发状态更新事件失败

  • 状态数据为空或未定义

  • 机器人感知所有公会成员为离线

  • Client.login() 与 fetchAllMembers 超时选项

GUILD_MEMBERS:



  • 清空会员和用户缓存< /li>

  • 超时GuildMemberManager.fetch() 和 UserManager.fetch()

  • 未能触发公会成员事件(GuildMemberAdd、GuildMemberRemove、GuildMemberUpdate、GuildMemberSpeaking、 GuildMembersChunk)

解决方案:



  1. 启用通过 Discord Developer 表达的意图门户:

    登录 Discord 开发者门户并导航到您的机器人页面。在“Bot”选项卡下,向下滚动以启用 GUILD_MEMBERS 和 GUILD_PRESENCES 意图。



  2. 通过discord.js 模块启用意图:

    使用 Discord.js v12 创建 Discord 客户端时,在 ClientOptions 的 ws 属性中指定特权意图。以下是一些示例:


    // 使用字符串<br>const client = new Discord.Client({ ws: {intents: 'GUILD_PRESENCES' }});<p>// 使用数组<br>const client = new Discord.Client({ ws: {intents: ['GUILD_PRESENCES', 'GUILD_MEMBERS'] }});</p><p>// 使用位域值<br>const client = new Discord.Client({ ws: {intents: 32509 }));</p><p>// 使用 Intents 类<br>const client = new Discord.Client({ ws: {intents: Discord.Intents.PRIVILEGED }});<br>const client = new Discord.Client({ ws: {intents : 新的 Discord.Intents(Discord.Intents.ALL) }});<br>

资源:


请注意,可能需要升级到 Discord.js v12 才能启用必要的意图。

以上是为什么我的 Discord 机器人的公会成员活动和功能不起作用?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn