【问题标题】:messagereactionadd dont get triggeredmessagereactionadd 不会被触发
【发布时间】:2021-06-02 17:33:37
【问题描述】:

我对@9​​87654323@ 事件有疑问,它仅在discord 内部发送消息后才有效。 我还尝试在事件开始时添加console.log,但甚至没有被触发。

这是我的代码:

    module.exports = async (client, reaction, user) => {
    if(reaction.message.partial) await reaction.message.fetch();
    if(reaction.partial) await reaction.fetch();
    if(user.bot) return;

    if(reaction.message.channel.id === '837981337658589204') {
        reaction.users.remove(user);
        if(reaction.emoji.name === '????') {
            //code...
        }
    }

部分:

const client = new discord.Client({ partials: ['MESSAGE', 'REACTION']});

我已经尝试了这个网站上的所有方法,但仍然不起作用。

编辑:所有这一切的解决方案是在机器人页面like that 上激活特权网关意图。感谢@Toasty

【问题讨论】:

  • 您是否拼错了Discord.Client({ ... }) 或者您是否将其命名为小写“d”?
  • 我用小写的“d”来称呼它
  • 还有其他事件被触发了吗?
  • 是的,除此之外一切正常
  • 您的活动文件拼写正确吗?

标签: javascript discord discord.js


【解决方案1】:

我认为您不需要检查message 是否为partial,但如果reactionpartial。试试这个:

try {
   if(reaction.partial) await reaction.fetch();
   if(user.partial) await user.fetch();
} catch(err) {
   console.log('Error: ' + err);
}

official guide 中检查message 是否为partial,但此示例不是关于messageReactionAdd 事件


编辑/更新:

再次翻阅指南后,我想起了一件事:

尝试在“Bot”部分的“Privileged Gateway Intents”下的Discord Developer Portal 中启用Privileged Intents

如果您不明白我的意思,请查看this screenshot。只需启用这些,它现在就可以工作了。

【讨论】:

  • 在我看来问题不在事件内部。因为它根本没有触发,我认为它与bot缓存有关,如果它托管在vps上会不会有问题?编辑:我按照你说的试过了,但它不起作用
  • @Klyde Mine 也托管在 VPS 上,我从来没有遇到任何问题
  • 我不知道问题出在哪里,它与我的其他机器人完美运行的代码完全一样
  • 所以我根本不触发你的事件?
  • 没错,事件根本没有触发,只有在服务器内部执行了一个动作(例如发送消息)后才会触发
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多