【发布时间】:2020-12-19 09:45:47
【问题描述】:
我正在尝试创建用户信息命令,但在显示人物头像时遇到了问题。我的命令应该对此作出回应:&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,也会发生同样的事情。但是,如果我在命令后面什么都不放(所以它会显示我的信息),它就可以工作。我试图获得的一个示例在附件中。
它在嵌入中正确显示,但前提是它显示我的,否则它会崩溃。有什么办法解决吗?
【问题讨论】:
-
使用一些 try/catch 块和一些日志记录,然后回来告诉我们崩溃的原因。
-
我唯一得到的是:userinfoget.displayAvatarURL is not a function
-
那么members.cache.get() 和mentions.members.first() 没有返回任何东西,或者没有按时返回任何东西。缓存查询几乎肯定是异步的。
-
@Nathan Hawks 我在记录 userinfoget 值时犯了一个错误,我把它放在了导致机器人崩溃的代码之后。现在我已经移动了它,它在所有 3 种情况下都以完全相同的形式记录它(例如 )。
标签: javascript node.js discord.js