Как отслеживать количество упоминаний пользователя? - PullRequest
0 голосов
/ 13 ноября 2018

В моем боте у меня есть счетчик сообщений, который хранит количество раз, когда пользователь отправил сообщение на сервер.
Я пытался подсчитать, сколько раз пользователь упоминался на сервере. Кто-нибудь знает, как я могу это сделать?

1 Ответ

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

Вы можете использовать message.mentions.members (или message.mentions.users), чтобы увидеть упоминания в сообщении. Вы можете сохранить количество упоминаний для каждого пользователя: каждый раз, когда они упоминаются, вы увеличиваете количество.

var mention_count = {};

client.on('message', message => {
  for (let id of message.mentions.users.keyArray()) {
    if (!mention_count[id]) mention_count[id] = 1;
    else mention_count[id]++;
  }
});

Обратите внимание, что mention_count будет сбрасываться при каждой перезагрузке бота, поэтому не забудьте сохранить его в файле или в базе данных, чтобы не потерять его.

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

client.on('message', message => {
  if (!message.guild) return;
  for (let id of message.mentions.users.keyArray()) if (id != message.author.id) {
    let score = client.getScore.get(id, message.guild.id);
    if (!score) score = {
      id: `${message.guild.id}-${id}`,
      user: id,
      guild: message.guild.id,
      points: 0,
      level: 0
    };
    score.level++;
    client.setScore.run(score);
  }
});
...