cyl*_*iim 1 javascript bots node.js discord discord.js
我的不和谐机器人中有一个头像命令。当用户使用 时h.avatar,它会输出他们的头像,效果很好。每当他们尝试使用 时h.avatar @user,什么也没有发生。
这是我的代码:
} if (message.content.startsWith(config.prefix + "avatar")) {
if (!message.mentions.users.size) {
const avatarAuthor = new Discord.RichEmbed()
.setColor(0x333333)
.setAuthor(message.author.username)
.setImage(message.author.avatarURL)
message.channel.send(avatarAuthor);
let mention = message.mentions.members.first();
const avatarMention = new Discord.RichEmbed()
.setColor(0x333333)
.setAuthor(mention.user.username)
.setImage(mention.user.avatarURL)
message.channel.send(avatarMention);
Run Code Online (Sandbox Code Playgroud)
你有一个检查if (!message.mentions.users.size) {,只有当你没有提到某人时,它才会运行命令。您需要else {在代码中使用 an或执行以下操作:
if (message.content.startsWith(config.prefix + 'avatar')) {
const user = message.mentions.users.first() || message.author;
const avatarEmbed = new Discord.RichEmbed()
.setColor(0x333333)
.setAuthor(user.username)
.setImage(user.avatarURL);
message.channel.send(avatarEmbed);
}
Run Code Online (Sandbox Code Playgroud)
在const user = message.mentions.users.first() || message.author;试图获取这是中提到的用户,但如果没有找到合适的人将使用作者的使用。
这也可以像这样使用:
if (!message.mentions.users.size) {
message.channel.send('Nobody was mentioned');
return;
}
// continue command here, after guard clause
Run Code Online (Sandbox Code Playgroud)
小智 5
avatarUrl除非你定义了它,否则没有什么比它更好的了。
使用此代码获取用户的 url:
message.channel.send("https://cdn.discordapp.com/avatars/"+message.author.id+"/"+message.author.avatar+".jpeg");
Run Code Online (Sandbox Code Playgroud)
只需替换message.author为提到的用户即可