Получение подсчета конкретной реакции на сообщение - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь создать бота, который будет удалять сообщения с определенным количеством thumbsdown реакций. У меня проблемы с определением количества определенных реакций на сообщение.

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

Это то, что я имею до сих пор:

var msgarray = [];
const msgs = await message.channel.awaitMessages(msg => {
  msgarray.push(msg);
  for (i = 0; i < msgarray.length; i++) {
    // I'm not sure where to go from here, I want to make an if statement that checks
    // for a certain amount of thumbsdown reactions on the message
    if (msgarray[i].reactions) {
      // incomplete
    }
  }
});

Это мое первое программирование на javascript, поэтому я прошу прощения, если этот код не имеет большого смысла.

1 Ответ

0 голосов
/ 07 ноября 2018

TextChannel.awaitMessages() разрешается с помощью Collection, поэтому используемый вами параметр msg представляет собой не одно сообщение, а набор из нескольких сообщений.
Кроме того, было бы лучше проверять сообщения только тогда, когда они получают реакцию, используя событие messageReactionAdd, которое срабатывает каждый раз, когда кто-то добавляет реакцию.
Это должно выглядеть так:

// this code is executed every time they add a reaction
client.on('messageReactionAdd', (reaction, user) => {
  let limit = 10; // number of thumbsdown reactions you need
  if (reaction.emoji.name == '?' && reaction.count >= limit) reaction.message.delete();
});
...