我正在尝试执行用户信息命令,但是在显示人的化身时遇到了问题。我的命令应该对此做出回应:&profile {user ping/user ID}
。
因此,如果您执行&profile @user#0001
,它将显示user#0001
的信息。如果您执行&profile 123456789123456789
,它将显示ID为123456789132456
的用户的信息。如果您不提&profile
,便会显示有关您的信息。
每当我运行&profile
时,它都会毫无问题地发布嵌入内容。但是,如果我提及某人或输入某人的ID,则会崩溃。这是我的代码:
const { DiscordAPIError } = require("discord.js");
const Discord = require("discord.js");
module.exports = {
name: "profile",
description: "The bot will return the info about the user",
execute(message, args) {
let userinfoget =
message.guild.member(message.mentions.members.first()) ||
message.guild.members.cache.get(args[0]);
//var userinfoget = message.mentions.members.first();
//var patter = message.author;
//var randompatemote = Math.floor(Math.random() * 3) + 1;
if (!userinfoget) {
userinfoget = message.author;
}
console.log(`User = ${userinfoget}`);
const embed = new Discord.MessageEmbed()
.setTitle(`User info`)
.setColor("#DAF7A6")
.setAuthor(`${userinfoget.tag}`, userinfoget.displayAvatarURL())
.addFields({ name: `${userinfoget.tag}`, value: `Here will be the ID` });
message.channel.send(embed);
},
};
当我提到某人时,它会引发错误:
userinfoget.displayAvatarURL is not a function
如果我输入ID,也会发生同样的事情。但是,如果我在命令后面没有放置任何内容(因此它显示了我的信息),那么它将起作用。附件中是我要获取的示例。
它正确显示在嵌入中,但仅当它显示我的时,否则崩溃。有什么办法解决吗?
答案 0 :(得分:1)
我假设错误来自此行:
let userinfoget = message.guild.member(message.mentions.members.first()) || message.guild.members.cache.get(args[0])
Guild.member()
方法将User
对象转换为GuildMember
对象。
message.mentions.members.first()
(如果已定义)已经是GuildMember
对象。
您需要做的就是更改上述行:
let userinfoget = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.guild.member(message.author)
您现在可以删除以下行:
if (!userinfoget) {
userinfoget = message.author
};