简体   繁体   English

Discord.js | 如何停止等待反应

[英]Discord.js | How to stop awaitReactions

So I have giveaway embed with a reaction.所以我有赠品嵌入反应。 After 10000 ms the giveaway ends and everything functions right. 10000 毫秒后,赠品结束,一切正常。 Now I want to stop the giveaway before 10000ms, because I added a 'giveaway end' command.现在我想在 10000 毫秒之前停止赠品,因为我添加了一个“赠品结束”命令。 And I have another question, if I have less reactions (without bot) than winners something like this happens: @x, @y, @z,,,,,(3 reactions and 7 winners).我还有一个问题,如果我的反应(没有机器人)比获胜者少,就会发生这样的事情:@x、@y、@z、、、、(3 个反应和 7 个获胜者)。 Can I cut that out?我可以把它剪掉吗?

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);
      });
    }); 

You should use a global var, setting true when giveaways start, setting false when stop, and condition to lock, maybe in the filter callback?.您应该使用全局变量,在赠品开始时设置为 true,在停止时设置为 false,并锁定条件,也许在过滤器回调中? also you should use a max setting in the option of message awaitReaction您还应该在消息 awaitReaction 选项中使用最大设置

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM