当成员对消息做出反应时,有什么方法可以获取信息?

时间:2020-04-26 02:10:05

标签: discord.js

我正在Discord.js中编写一个Discord机器人。我想做到这一点,以便当成员加入服务器时,他们必须对某个通道中的消息做出反应才能获得角色。但是由于某种原因,如果在我打开僵尸程序之前发送了一条消息,则该消息是否响应,并且仅检测到该僵尸程序打开后的消息,它不会检测到它。

这是我首先尝试的代码:

bot.on("messageReactionAdd", (reaction, users) => {

    console.log("reaction");

    if (reaction.message.channel.name == "rules") {
        console.log("rules")
    } else {
        console.log("not rules");
    }

});

它告诉通道反应正在发生,并且是否对消息做出了反应,但前提是该消息是在漫游器启动后发送的。

无奈之下,我接下来尝试了这段代码:

bot.on("messageReactionAdd", () => {

    console.log("reaction");

});

它与其他代码具有相同的作用。

即使消息是在启动漫游器之前发送的,我也希望它能够检测到反应。

2 个答案:

答案 0 :(得分:0)

messageReactionAdd可处理缓存的消息,这意味着当机器人启动时,对此的解决方案很少。

第一个选项:<message>.createReactionCollector()

第二个选项:使用该消息手动设置缓存

第三个选项。在机器人连接上发出新消息

第四个选项。使用命令代替诸如.agree

之类的反应

刚刚找到一个可能有用的链接:https://github.com/AnIdiotsGuide/discordjs-bot-guide/blob/master/coding-guides/raw-events.md

另外,此线程可能有用:Why messageReactionAdd do nothing discord.js

答案 1 :(得分:0)

如果你想使用比上面更简单的方法,你可以使用Partials。我不是最擅长解释事情的人,但是当没有为事件提供足够的数据时,会给出部分,即使一切都是正确的(如果我错了,请纠正我)。

无论如何,如果您想将它们添加到您的代码中,您需要替换您的 Client 实例。 你希望你的看起来像这样:

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

玩得开心!

相关问题