【问题标题】:Discord.js - guildMemberUpdate not being called except on Bot user changesDiscord.js - guildMemberUpdate 不会被调用,除非 Bot 用户更改
【发布时间】:2021-05-16 09:47:54
【问题描述】:

使用以下代码,guildMemberUpdate 事件根本不需要任何用户修改,除了机器人用户。什么可能导致了这种变化,我该如何解决这个问题?

VSC 与最新的 npm 安装 discord.js。在 Discord 上也启用了网关意图。

client.on('guildMemberUpdate', (oldMember, newMember) => {
  // Fire if user has a role
  if (newMember.roles.cache.some(r => r.name === "TEST_ROLE")) {
    try {
      // stuff
    } catch(err) {
      // stuff
    }
  }
})

【问题讨论】:

  • “崩溃”时是否有错误消息?
  • 我刚刚尝试过,除了给我发一条测试消息以确认它正在工作之外,没有其他内容。没有崩溃,当在机器人以外的其他用户上完成时,它什么也不做。有什么方法可以启用详细的日志记录?

标签: node.js azure visual-studio-code discord discord.js


【解决方案1】:

您似乎没有启用公会成员意图! 要启用,请转到: https://discord.com/developers/applications

现在点击您的机器人应用程序。

点击左侧面板上的“Bot”。

向下滚动直到看到“Privileged Gateway Intents”。

下面是两个切换开关。

切换“公会成员意图”并保存。

希望对您有所帮助!

延伸阅读:https://discord.com/developers/docs/topics/gateway

【讨论】:

  • 事实上,启用状态和公会成员意图能够恢复功能。奇怪的是,这两者是有联系的。您能否修改您的答案以反映这一点?
  • 必须切换特权网关意图才能查看公会成员/状态,因为这些是非常敏感的数据。你可以在这里阅读更多:blog.discord.com/the-future-of-bots-on-discord-4e6e050ab52e
猜你喜欢
  • 2021-04-30
  • 2020-05-16
  • 2018-09-17
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
  • 2021-02-16
相关资源
最近更新 更多