【问题标题】:How to keep track of the number of times a user has been mentioned?如何跟踪用户被提及的次数?
【发布时间】:2019-04-16 04:30:16
【问题描述】:

在我的机器人中,我有一个消息计数器,用于存储用户在服务器中发送消息的次数。
我试图计算用户在服务器中被提及的次数。有谁知道我该怎么做?

【问题讨论】:

    标签: discord discord.js


    【解决方案1】:

    您可以使用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);
      }
    });
    

    【讨论】:

    • 感谢您的回复..我正在关注一个教程,我删除了关卡,我想在关卡中存储提及。这是积分或消息的代码:let score; if (message.guild) { score = client.getScore.get(message.author.id, message.guild.id); if (!score) { score = { id: ${message.guild.id} -${message.author.id}, user: message.author.id, guild: message.guild.id, points: 0, level: 1 } } score.points++; client.setScore.run(score); }你能在关卡中重写和存储提及
    • 工作完美..非常感谢
    • 您可以检查是否id != message.author.id。我已经更新了代码;)
    猜你喜欢
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    相关资源
    最近更新 更多