Discord 机器人消息不收集反应

Posted

技术标签:

【中文标题】Discord 机器人消息不收集反应【英文标题】:Discord bot message doesn't collect reactions 【发布时间】:2020-08-12 21:32:17 【问题描述】:

我正在尝试在收到反应后删除对我的机器人消息的反应,但由于某种原因,我遇到了一些我似乎无法追查其原因的行为。

我希望能够看到用户何时对回复消息作出反应,但我只看到机器人何时对他们自己的消息作出反应以及用户何时对用户消息作出反应。我运行我的代码(如下)并将“消息”发送到频道,在机器人回复后,我点击了我的消息和机器人消息的反应。以下是日志:

bot is ready
reaction by:  Lyon bot  on  reply
reaction by:  Lyon bot  on  reply
reaction by:  Lyon bot  on  reply
reaction by:  Lyon bot  on  reply
reaction by:  Virt  on  message
reaction by:  Virt  on  message

我希望能够看到reaction by: Virt on reply,但我从来没有看到它。

const Discord = require('discord.js');
const bot = new Discord.Client();

const token = '*******';

bot.on('ready', () => 
    console.log('bot is ready');
);

bot.on('message', message => 
    if (message.content === 'message') 
        message.channel.send('reply');
    

    message.react('????').then(() => message.react('????'));

    const filter = (reaction, user) => 
        return ['????', '????'].includes(reaction.emoji.name) && user.id === message.author.id;
    ;

    const collector = message.createReactionCollector(filter, );

    collector.on('collect', r => 
        console.log('reaction by: ', r.message.author.username, ' on ', r.message.content);
    );
);

bot.login(token);

【问题讨论】:

【参考方案1】:

您的过滤器似乎不正确,将其替换为:const filter = (reaction, user) => reaction.emoji.name === '?' || reaction.emoji.name === '?' && user.id === message.author.id;

【讨论】:

谢谢,这并没有完全解决问题,但它确实告诉了我问题的根源。

以上是关于Discord 机器人消息不收集反应的主要内容,如果未能解决你的问题,请参考以下文章

从特定消息中删除特定用户反应 - Discord.js

Discord.js 为 ReactionRole 添加一次反应收集器

Discord收集器反应过滤器设置最大限制的方式

对自己的消息做出反应的 Discord 机器人

如何让不和谐机器人使用 discord.py 向消息添加表情符号反应?

Discord Bot - 反应收集器/嵌入编辑