如何跟踪用户使用和提及的命令数量?

时间:2020-06-13 15:02:23

标签: javascript discord discord.js

我只是想知道是否有一种方法可以计算在Discord服务器中使用命令的次数如屏幕截图。 我是编码新手。我使用了discord.js 12.1.1 预先谢谢你!

enter image description here

upd。 例如, user1 拥抱 user2

用户1 拥抱了 N

用户2 已被拥抱 N

我如何计算消息作者拥抱用户的次数?

我试图将计数插入完成的代码中,但只考虑了提到的用户。

即使我没有提到任何人,该机器人也认为我提到了自己。.

我尝试了不同的方法,但是我的大脑已经爆炸了。.2天我无法理解自己的错误

我将let member更改为不同的值,但一次只能正常工作。-_-

别笑了,我尝试(

const Discord = module.require("discord.js");
const fs = require("fs");
const config = require(`../config.json`)
const hugs = require('../db.json');


module.exports.run = async (bot, message, args) => {
 let member = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member;
    let msg =
      member === message.member
        ? `${message.author} hugs everyone`
        : `${message.author} hugged ${member}`;
    let gif = [
      "IRUb7GTCaPU8E",
      "u9BxQbM5bxvwY",
      "3EJsCqoEiq6n6", 
    ];
    let selected = gif[Math.floor(Math.random() * gif.length)];

    let id = member.id || message.author.id
    let hugCount = hugs[id];

    if (!hugCount) {
      hugs[id] = 1;

    let embed = new Discord.MessageEmbed() 
    .setDescription(`${msg}`)
      .setColor("RANDOM")
      .setFooter(`${member.user.username} hugged for the first time.`) 
      .setImage(`https://media.giphy.com/media/${selected}/giphy.gif`);


      message.channel.send(embed);

    } else {
      hugCount = (hugs[id] = hugs[id] + 1);

      let embed = new Discord.MessageEmbed() 
      .setDescription(`**${msg}**`)
        .setColor("RANDOM")
        .setFooter(`${config.prefix}${module.exports.help.name} | ${member.user.username} has been hugged ${hugCount} times.`) 
        .setImage(`https://media.giphy.com/media/${selected}/giphy.gif`);

        message.channel.send(embed);
      return message.delete()
  }

fs.writeFileSync(
  "./db.json",
  JSON.stringify(hugs),
  (err) => console.log(err)
);

}

module.exports.help = {
  name: "hugg"
};

并且,如果可能的话,请帮助我-如何使用户编写消息(例如,!hug user2 “ hello” ),并在嵌入程序中显示漫游器消息

1 个答案:

答案 0 :(得分:2)

我想您只能拥有一些数据库,您可以在其中存储$( "#countries" ).autocomplete({ minLength: 0, autoFocus: true, appendTo: ".output-count", position: { my: "left top", at: "left bottom", of: ".test" }, focus: function( event, ui ) { $( "#project" ).val( ui.item.label ); return false; }, select: function( event, ui ) { $( "#countries" ).val( ui.item.label ); $( "#countries-id" ).val( ui.item.value ); $( "#countries-description" ).html( ui.item.label ); return false; }, source: function(request, response) { var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); response($.grep(projects, function(value) { value = value.label || value.value || value; return matcher.test(value) || matcher.test(normalize(value)); })); }, source: function(request, response) { var results = $.ui.autocomplete.filter(projects, request.term); response(results.slice(0, 10)); } })个用户和ID个用户执行命令的次数。

每当有人使用命令时,您只需将该人values的{​​strong>增加{strong} value

编辑#1

我认为这段代码

ID

可以简化为:

 hugCount = (hugs[id] = hugs[id] + 1);

我想的问题就在这里...基本上,您必须知道需要找谁。在这里,您得到的东西太多了,您无法确定里面有什么。

 hugCount = (hugs[id] + 1);

因此,我建议将其更改为其他变量...例如 let member = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member; let author ,您需要同时获取将它们保存在不同的变量中以保存它们的计数。

这意味着您将有 user1 个键入 let mentionedUser 的用户,您需要将其存储在!hug user2 "Hello" = let author中,对于{{ 1}} = user1
对于每个用户,您需要在数据库中具有2个不同的计数值(一个代表他们拥抱某人的次数,第二个他们被其他人拥抱了

我希望这会有所帮助。