Discord. js бот Emoji реакции - как собрать первого пользователя, который реагирует вместо автора сообщения? - PullRequest
0 голосов
/ 01 мая 2020

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

По сути, я посылаю embed с реакциями, и он отлично работает, но если кто-то не реагирует в течение определенного времени, бот создает другую реакцию Emoji, и вот в чем проблема. Я хочу, чтобы он собрал самого первого человека, который реагирует на новые смайлики вместо автора сообщения. Вот эта часть кода:

.catch(collected => {
    message.channel.sendMessage("You run out of time, maybe someone else wants it?");

    const filter = (reaction, user) => {
    return ['?'].includes(reaction.emoji.name) && user.id === message.author.id;
    };

    embedMessage.react('?');

    embedMessage.awaitReactions(filter, {
      max: 1,
      time: 45000,
      errors: ['time']
    }).then(collected => {

    const reaction = collected.first();

    if (reaction.emoji.name === '?'){
      message.channel.sendMessage("Yay.");

    }    
  });    
});

Так что мне интересно, относится ли это к этой части:

return ['?'].includes(reaction.emoji.name) && user.id === message.author.id;

Я попытался заменить message.author.id на response.users , но это не похоже на работу.

1 Ответ

0 голосов
/ 02 мая 2020

Kian здесь,

Этот код должен работать для вас, я удалил проверку для user.id == message.author.id. Если это не работает, не стесняйтесь оставлять комментарии и плохо их исправлять.

.catch(collected => {
    message.channel.sendMessage("You run out of time, maybe someone else wants it?");

/*
 * I think that your error his here, you are trying to check if the user's id is the same
 * as the authors id, returning if it isnt, an easy way around this is to simply remove
 * "&& user.id === message.author.id".
 */

const filter = (reaction, user) => ['?'].includes(reaction.emoji.name);


// im going to leave everything under here alone
    embedMessage.react('?');

    embedMessage.awaitReactions(filter, {
      max: 1,
      time: 45000,
      errors: ['time']
    }).then(collected => {

    const reaction = collected.first();

    if (reaction.emoji.name === '?'){
      message.channel.sendMessage("Yay.");

    }    
  });    
});
...