首页 > 解决方案 > 使用纯文本而不是提及来定义用户

问题描述

这是命令的代码:

if (command === "avatar") {
  let user = message.mentions.users.first() || message.author;
  let embed = new Discord.RichEmbed()
    .setAuthor(`${user.username}`)
    .setImage(user.displayAvatarURL)
    .setColor(0x842cfc);
  message.channel.send(embed),
}

此命令显示指定用户的头像,但现在,您必须标记指定用户(让他们收到通知)才能显示头像。现在命令是.avatar @someuser,但我希望命令是.avatar someuser,所以它没有提到它们。
另外,我很确定我需要以client.users.find()某种方式使用,但不知道如何使用。感谢您的任何帮助!

标签: javascriptnode.jsdiscorddiscord.js

解决方案


我会用Guild.members.find(). 由于其中包含成员,因此您需要检查用户编写的参数是否与.nickname或匹配.user.username。为了简化一些事情,我将使用.displayName而不是.nickname,以便我始终可以使用字符串。

// argument: the string after the command, I don't know how you're currently getting it
let user = message.guild.members.find(m => [m.displayName.toLowerCase(), m.user.username.toLowerCase()].includes(argument.toLowerCase()));

推荐阅读