createReactionCollector не запускается

Я создаю бота, отправляя встраивание и собираю с него реакцию. После реакции бот редактирует свое вложение, чтобы показать всех пользователей, которые отреагировали.

Иногда это срабатывает, когда 2 или 3 пользователя быстро реагируют, особенно при запуске бота. Но после этого он больше не собирает реакций.

Бот размещен на Heroku и использует worker в procfile.

Я пробовал на локальном, но иногда он блокируется после 1 реакции пользователя.

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

function sendEmbed(message) {

    var users = [];

    message.channel.send(startingEmbed).then(async function(message){
    
    const filter = (reaction, user) => reaction.emoji.name === '????';
    const collector = message.createReactionCollector(filter, { max: 50, time: 3 * 24 * 60 * 60 * 1000 });

    collector.on('collect', async (reaction, user) => {
        
        var users = [];
        
        console.log(`Collected ${reaction.emoji.name} from ${user.tag}`);
        if (reaction.message.partial) await reaction.message.fetch();
        if (reaction.partial) await reaction.fetch();
        
        var result = false;
        for (var u in users) {
            if (users[u].name === user.username) {
                result = true;
                break;
            }
        }

        if(result == false) {
           
          var roll = {};
          roll.name = user.username;
          roll.value = random(); //Math.random() method
          users.push(roll);
          
          var description = '';
          users.forEach(element => {
              description += '???? ' + element.value + ' for ' + element.name + '\n';
          });
          
          var edittedEmbed = new Discord.MessageEmbed()
            .setColor('#0099ff')
            .addFields(
                { name: 'rolls', value: `${description}`, inline: true },
            );
        
          message.edit(edittedEmbed);
          
          console.log('newest user ' + roll.name + ' ' + roll.value);
          
          users.forEach(element => console.log('user table' + element.name + ' ' + element.value));
       }
    });

person aez    schedule 24.11.2020    source источник


Ответы (1)


nevermind, эта проблема вызвана Discord api. Это было исправлено добавлением GUILD_MEMBER в партиалы.

Как указано в документации: https://github.com/discordjs/discord.js/issues/4980#issuecomment-723519865

person aez    schedule 25.11.2020