id为的discord.js V12 userinfo命令

id为的discord.js V12 userinfo命令,discord.js,Discord.js,嘿,我目前正在做的事情,你可以做,用户,它将显示该用户的用户信息 if(args.length < 1) { var user = message.author; } else { var user = client.users.cache.get(args[0]); } if(!user || user == undefined) return message.channel.send("**Error:** An er

嘿,我目前正在做的事情,你可以做,用户,它将显示该用户的用户信息

if(args.length < 1) {
        var user = message.author;
    } else {
        var user = client.users.cache.get(args[0]);
    }

    if(!user || user == undefined) return message.channel.send("**Error:** An error occurred!");
if(args.length<1){
var user=message.author;
}否则{
var user=client.users.cache.get(args[0]);
}
如果(!user | | user==未定义)返回message.channel.send(“**错误:**发生错误!”);

但是“用户”总是没有定义,我不知道为什么我想你会在命令中提到某个人。这不起作用的原因是
client.users.cache.get
不接受提及,只接受成员ID

相反,你应该做的是从信息中得到提及。您可以通过访问类来实现这一点

如果您想要/需要使用ID,那么您的代码将正常工作。如果希望使用名称,则需要使用
find()
方法

client.users.cache.find(u => u.username === args.join(' '));

注意:我们
join(“”)
这里的参数用于多单词名称。还要注意的是,只有拼写正确的名称才有效,这意味着大写很重要。

我认为您应该使用
message.guild.members.cache
而不是
client.users.cache
。我在这里使用了问号运算符,下面是它的用法:

condition ? value_if_condition_is_true : value_if_condition_is_false
我还删除了
user==undefined
,因为它的功能与
完全相同!用户

const memberMention = message.mentions.members.first();

var user = args[0] ? message.guild.members.cache.get(args[0]) : memberMention ? memberMention : message.author;

if (!user) return message.channel.send("**Error:** An error occurred!");

原因
user
始终未定义,因为您将其调用到范围之外

if(args.length<1){
var user=message.author;//用户变量仅在此“if”块中有效
}否则{
var user=client.users.cache.get(args[0]);//用户变量仅在此“else”块中有效
}
如果(!user | | user==未定义)返回message.channel.send(“**错误:**发生错误!”);
相反,您应该在主
if else
块中包含代码,或者通过不使用变量声明关键字来声明
用户
变量全局

if(args.length<1){
user=message.author;//用户变量仅在此“if”块中有效
}否则{
user=client.users.cache.get(args[0]);//用户变量仅在此“else”块中有效
}
if(!user)返回message.channel.send(“**错误:*”发生错误!”);
console.log(user.tag)
//进一步的代码在这里。。。

我还为您清理了一些冗余:
如果(!user)
也包含
未定义的
,那么不需要包含
| | user==未定义的

您所说的
参数[0]
是什么意思。它是一个ping对象还是一个用户的id?我认为在else部分中,您希望找到一个提到的用户。为此,您必须使用
message.indications.user.first
。虽然这肯定是有用的信息,但我并不认为它能够回答用户为什么会提出
未定义的问题。当然,由于他指定他提供用户ID,我并不认为他提到了任何人。这个问题与变量范围有关。为什么有必要这样做?如果
args[0]
返回一个虚假值,您可以假定他们没有提供任何内容,因此
message.indetries.members.first()
将无效。澄清一下:我希望玩家输入一个玩家id
const memberMention = message.mentions.members.first();

var user = args[0] ? message.guild.members.cache.get(args[0]) : memberMention ? memberMention : message.author;

if (!user) return message.channel.send("**Error:** An error occurred!");