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



我只是想知道是否有办法计算命令在我的 Discord 服务器中使用了多少次,就像屏幕截图一样。 我是编码新手。我使用了不和谐.js 12.1.1 提前谢谢你!

在此处输入图像描述

上。 例如,用户1拥抱用户 2

用户 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">(,机器人在嵌入中显示消息

我想你可以有一些数据库,你可以在其中存储ID的用户,并values有人执行你的命令的次数。

每次有人使用命令时,您只需将那个人的value增加ID增加一。

编辑 #1

我认为这段代码

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 authorlet mentionedUser,您需要将它们都放在不同的变量中以保存它们的计数。

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

我希望这会有所帮助。

我在 Heroku 旁边使用 Redis 来跟踪一个命令被使用了多少次,

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

let member = message.mentions.members.first(( ||

message.guild.members.cache.get(args[0]( || message.member;

您尝试在此处检索谁的 ID?

即使我没有提到任何人,机器人也认为我提到了我自己。 let member = message.mentions.members.first(( ||message.guild.members.cache.get(args[0]( ||消息成员;

message.member是即使您不提及任何人,它也会获得您的ID的原因。

如何让用户编写消息(例如,!hug user2"hello"(和机器人在嵌入中显示消息

你的意思是应该嵌入"你好"吗?

最新更新