首页 > 解决方案 > 平衡他人

问题描述

我基本上是在尝试创建一个平衡命令(使用 quick.db)来检查自己和其他人,假设 -bal (我的余额弹出)但是当我用 -bal @(user) ping 某人时也显示了我目前的余额,这是一张图片:

在此处输入图像描述

我也尝试了很多方法,但似乎对我不起作用:/

这是代码:

let bal =
  db.fetch(`money_${message.guild.id}_${message.author.id}`) ||
  db.fetch(`money_${message.guild.id}_${message.mentions.users.first()}`);

if (bal === null) bal = 0;

let user = message.mentions.users.first().username || message.author.username;

const embed = new Discord.MessageEmbed()
  .setTitle('[ ' + user + "'s balance ]")
  .setDescription(bal);
message.channel.send(embed);

标签: javascriptdiscorddiscord.js

解决方案


bal声明变量时需要检查值的顺序。您基本上是在说,如果有 a message.authorthenbal的价值将是他们的平衡。由于总是有消息作者,因此您永远不会检查提到的用户。因此,您需要更改顺序。

或者,您也可以像我在下面所做的那样简化它。您可以创建一个新user变量,如果有提及的用户,则分配其值,如果没有,则分配作者。稍后,由于提到的用户和作者都有一个idand username,您可以简单地使用user.idand user.username

您还可以通过在 . 之后if (bal === null) bal = 0简单地使用逻辑 OR ( ||)来简化该部分db.fetch

let user = message.mentions.users.first() || message.author;
let balance = db.fetch(`money_${message.guild.id}_${user.id}`) || 0;

const embed = new Discord.MessageEmbed()
  .setTitle('[ ' + user.username + "'s balance ]")
  .setDescription(balance);
message.channel.send(embed);

推荐阅读