【问题标题】:Is there a way I can get information from when a member reacts to a message?有什么方法可以让我从成员对消息做出反应时获取信息?
【发布时间】:2020-08-09 14:21:22
【问题描述】:

我正在用 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");

});

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

我希望它能够检测到响应,即使消息是在机器人启动之前发送的。

【问题讨论】:

    标签: javascript discord.js


    【解决方案1】:

    messageReactionAdd 适用于缓存消息,这意味着当机器人启动时,很少有解决方案。

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

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

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

    第四个选项。使用命令而不是像 .agree 这样的反应

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

    这个帖子也可能有用:Why messageReactionAdd do nothing discord.js

    【讨论】:

      【解决方案2】:

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

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

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

      玩得开心!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-03
        • 2013-03-26
        • 2020-12-14
        • 2021-06-24
        • 2019-10-06
        • 2020-08-17
        • 2021-02-24
        相关资源
        最近更新 更多