【问题标题】:Discord.js | How to stop awaitReactions不和谐.js |如何停止等待反应
【发布时间】:2020-12-02 02:03:07
【问题描述】:

所以我有赠品嵌入反应。 10000 毫秒后,赠品结束,一切正常。现在我想在 10000 毫秒之前停止赠品,因为我添加了一个“赠品结束”命令。我还有一个问题,如果我的反应(没有机器人)比获胜者少,就会发生这样的事情:@x、@y、@z、、、、(3 个反应和 7 个获胜者)。我可以把它剪掉吗?

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

bot.channels.get(giveawayChannelid).fetchMessage(messageID)
      .then(message => {  
      const filter = (reaction, user) => {
        return reaction.emoji.name === '????' && user.id != bot.user.id;
      };
      
      message.awaitReactions(filter, {time: 10000, errors: ['time'] })
      .catch(collected => {
        const reaction = collected.first();
        winnersEnd=reaction.users.filter((user) => !user.bot).random(winners);
      });
    }); 

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    您应该使用全局变量,在赠品开始时设置为 true,在停止时设置为 false,以及要锁定的条件,也许在过滤器回调中? 您还应该在消息 awaitReaction 选项中使用最大设置

    【讨论】:

    • 它首先不起作用我不能有一个最大值,因为无穷大的家伙可以对获胜做出反应,其次当我将它锁定在过滤器中时,无论是真还是假,赠品不会在时间为零之前结束并且没有反应,而将被检测到
    • 好吧,如果我理解正确,您希望赠品在 10 秒后停止,或者当您通过另一个功能询问时。最后,您想要获取在开始和停止之间发生的反应列表。使用带有外部变量的过滤器应该有效吗?如果您只想检测停止后出现的反应,但又想对它们做其他事情,请不要在过滤器中使用 var 而是将其保存为收集的反应的属性,并稍后在 if 块中使用它。对你有帮助吗?
    猜你喜欢
    • 2021-10-27
    • 1970-01-01
    • 2020-11-16
    • 2021-06-18
    • 2021-02-27
    • 2020-11-18
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    相关资源
    最近更新 更多