@user 的 discord.js 排名命令

Posted

技术标签:

【中文标题】@user 的 discord.js 排名命令【英文标题】:discord.js rank command for @user 【发布时间】:2020-09-26 02:18:19 【问题描述】:

我的 rank 命令运行良好,我一直在尝试将功能添加到 !rank @user。如您所见,我在那里有代码来获取提到的用户,所以它会显示提到的用户名和个人资料图片,但我的观点(因为它们是从 message.author 请求的)我只是不确定我应该如何从提到的用户的数据库。任何帮助或建议都会很棒,谢谢!

(我的数据库是 SQLite)

const member = message.mentions.members.first() || message.member || message.guild.members.cache.get(args[0])
    score = bot.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,
      ;
  
    let curxp = score.points;
    let curlvl = score.level;
    let nxtLvlXp = curlvl * 300;
    let difference = nxtLvlXp - curxp;
    const embed = new Discord.RichEmbed()
      .setTitle("XP / LEVEL")
      .setDescription(member.user.tag)
      .setThumbnail(member.user.displayAvatarURL)
      .setColor(cyan)
      .addField('**' + "Level" + '**', curlvl, true)
      .addField('**' + "XP" + '**', curxp, true)
      .setFooter(`$difference XP til next level up`, bot.user.displayAvatarURL);

    return message.channel.send( embed );

【问题讨论】:

【参考方案1】:

你几乎已经拥有它了

为什么不使用message.author.id 作为第一个参数,为什么不直接使用提供最终成员的成员变量?

您还应该在 message.member 之前添加 message.guild.members.cache.get(args[0]),因为除非在 DM 频道中,否则 message.member 将始终存在。

const member = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member;
score = bot.getScore.get(member.id, message.guild.id);

【讨论】:

以上是关于@user 的 discord.js 排名命令的主要内容,如果未能解决你的问题,请参考以下文章

为我的 discord.js 机器人创建一个排名列表

DISCORD.JS |我将如何执行升级和降级命令

discord.js 命令处理程序错误

Discord.js 机器人的 Mass Role Assigner 命令

不和谐机器人 |使用 discord.js 和 MongoDB 进行排名(排行榜?)系统

角色反应 Discord Bot