Discord 机器人寻找反应

Posted

技术标签:

【中文标题】Discord 机器人寻找反应【英文标题】:Discord bot look for reactions 【发布时间】:2021-10-04 15:42:26 【问题描述】:

所以很难解释我的情况,因为我是 discord.js 的新手,我已经尝试了好几个小时了

我需要我的机器人查看某个频道并查看工作人员(或任何人,因为普通用户无法添加反应)对“????”做出反应并记录下来。

后来我的最终目标是它看到这个并回复并向我的世界服务器发送命令。但我以后会弄清楚这一切。我只需要机器人看到对消息有某种反应

就像我说的我是新手,discord.js 的文档没有帮助,我能找到/做的就是:

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

client.once('ready', () => 
    console.log('Ready!');
);

const filter = (reaction, user) => 
    return reaction.emoji.name === '????' && user.id === Discord.Message.author.id;
;

const collector = Discord.Message.createReactionCollector(filter,  time: 15000 );

collector.on('collect', (reaction, user) => 
    console.log(`Collected $reaction.emoji.name from $user.tag`);
);

它会引发有关 Message.createReactionCollector 的错误

【问题讨论】:

欢迎,SO 不是免费的代码编写服务。你试过什么吗?如果是这样,请将该代码添加到您的问题中。 添加了图片。我没有要求某人编写我的代码,但我真的不明白这是如何工作的,我是 discord.js 的新手。更习惯为其他游戏创建插件 请不要发布代码图片。你可以阅读here为什么。将您的代码包含在代码块中,请参阅How do I format my posts using Markdown or html?。 它也抛出了那个错误,因为.createReactionCollector() 是一个实例方法。这意味着您需要在 Message 的实例上调用它。 【参考方案1】:

要使用ReactionCollector,您需要一个Message 的实例来创建收集器。

如果您没有特定消息并希望在全球范围内收集反应,您可以监听事件messageReactionAdd

client.on("messageReactionAdd", (reaction, user) => 

    // Ignore the bot's reactions
    if (client.user.id == user.id) return;

    // Look only for thumbs up reaction
    if (reaction.emoji.name != "?") return;

    // Accept reactions only from specific channel
    if (reaction.message.channel.id != "870115890367176724") return;

    console.log(`$user.tag reacted with ?.`);

);

请注意,这不适用于在机器人启动之前对发送的消息进行的反应。解决方案是启用Partial Structures。 (如果您正在处理部分数据,请不要忘记获取

【讨论】:

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

Discord 机器人反应数组

Discord 机器人消息不收集反应

当用户对 2 个反应做出反应时,机器人不会读取第二个反应.. discord.py

Discord 机器人有时会做出反应

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

(discord.py) 向不和谐机器人发布的嵌入添加反应