Discord.js |无法读取属性';显示名称';未定义的
我正在为一个朋友制作一个discord机器人,在我尝试发出unban命令之前,一切都正常。当我试图解开某人的枷锁时,它不起作用。然后我看了看错误。它显示: TypeError:无法读取未定义的属性“displayName” 在C:\Users\user\folder\u name\commands\unban.js:37:67 在处理和拒绝时(内部/process/task_queues.js:97:5) 未处理的承诺拒绝:TypeError:无法读取未定义的属性“displayName” 在C:\Users\user\folder\u name\commands\unban.js:37:67 在处理和拒绝时(内部/process/task_queues.js:97:5) 这是我的密码Discord.js |无法读取属性';显示名称';未定义的,discord,discord.js,Discord,Discord.js,我正在为一个朋友制作一个discord机器人,在我尝试发出unban命令之前,一切都正常。当我试图解开某人的枷锁时,它不起作用。然后我看了看错误。它显示: TypeError:无法读取未定义的属性“displayName” 在C:\Users\user\folder\u name\commands\unban.js:37:67 在处理和拒绝时(内部/process/task_queues.js:97:5) 未处理的承诺拒绝:TypeError:无法读取未定义的属性“displayName” 在C
const Discord = require('discord.js');
module.exports = {
name: 'unban',
description: 'unban user',
aliases: [],
cooldown: 0,
args: true,
usage: '<mention> [reason]',
guildOnly: true,
execute(message, args, client) {
console.log(message.content);
const embedMsg = new Discord.RichEmbed()
.setColor('#0000ff')
.setAuthor(message.author.username, message.author.displayAvatarURL)
.setThumbnail(message.author.displayAvatarURL)
.setTimestamp()
.setFooter('botname', client.user.displayAvatarURL);
let member = message.mentions.members.first();
if (!message.member.hasPermission('BAN_MEMBERS')) {
embedMsg.setDescription(`You don't have permission to unban!`);
return message.channel.send(embedMsg);
}
if (!args.length >= 1) {
embedMsg.setDescription('^unban takes at least one argument! the proper usage is ^unban <mention> [reason]');
message.channel.send(embedMsg);
}
if (args.length < 2) {
message.guild.unban(member).then(() => {
embedMsg.setDescription(`${member.displayName} has been succesfully unbanned`);
return message.channel.send(embedMsg);
}).catch((err) => {
embedMsg.setDescription(`Could not unban ${member.displayName}`);
console.log(err);
return message.channel.send(embedMsg);
});
return;
}
newargs = "";
for (var i = 1; i < args.length; i++) {
newargs += (args[i] + " ");
}
message.guild.unban(member).then(() => {
embedMsg.setDescription(`${member.displayName} has been succesfully unbanned for reason ${newargs}`);
return message.channel.send(embedMsg);
}).catch((err) => {
embedMsg.setDescription(`Could not unban ${member.displayName}`);
console.log(err);
return message.channel.send(embedMsg);
});
return;
}
}
const Discord=require('Discord.js');
module.exports={
名称:“unban”,
描述:“unban用户”,
别名:[],
冷却时间:0,
阿格斯:没错,
用法:“[原因]”,
吉登利:是的,
执行(消息、参数、客户端){
console.log(message.content);
const embedMsg=new Discord.RichEmbed()
.setColor(“#0000ff”)
.setAuthor(message.author.username、message.author.displayAvatarURL)
.set缩略图(message.author.displayAvatarURL)
.setTimestamp()文件
.setFooter('botname',client.user.displayAvatarURL);
让member=message.notices.members.first();
如果(!message.member.hasPermission('BAN_MEMBERS')){
embedMsg.setDescription(`You't have permission to unban!`);
返回消息.channel.send(embedMsg);
}
如果(!args.length>=1){
embedMsg.setDescription(“^unban至少接受一个参数!正确用法为“^unban[reason]”);
message.channel.send(embedMsg);
}
如果(参数长度<2){
message.guild.unban(成员)。然后(()=>{
embedMsg.setDescription(`${member.displayName}已成功解除绑定`);
返回消息.channel.send(embedMsg);
}).catch((错误)=>{
embedMsg.setDescription(`cannotunban${member.displayName}`);
控制台日志(err);
返回消息.channel.send(embedMsg);
});
返回;
}
newargs=“”;
对于(变量i=1;i{
embedMsg.setDescription(`${member.displayName}已成功解除绑定,原因是${newargs}`);
返回消息.channel.send(embedMsg);
}).catch((错误)=>{
embedMsg.setDescription(`cannotunban${member.displayName}`);
控制台日志(err);
返回消息.channel.send(embedMsg);
});
返回;
}
}
有人知道我做错了什么吗?方法返回一个承诺,所以用户没有属性displayName
,您需要使用.username
您可以使用user.id
进行unban,所以正确的方法是let member=message.indications.members.first()| | args[0]
此检查不正确,因为它没有停止代码执行
if(!args.length<2){
embedMsg.setDescription(“^unban至少接受一个参数!正确用法为“^unban[reason]”);
返回消息.channel.send(embedMsg);
}
这个部件代码在做什么?为什么是复制品
if(args.length<2){
message.guild.unban(成员)
.然后(()=>{
embedMsg.setDescription(`${member.username}已成功解除绑定`);
返回消息.channel.send(embedMsg);
})
.catch((错误)=>{
embedMsg.setDescription(`cannotunban${member.username}`);
控制台日志(err);
返回消息.channel.send(embedMsg);
});
返回;
}
编辑的代码
const Discord=require('Discord.js');
module.exports={
名称:“unban”,
描述:“unban用户”,
别名:[],
冷却时间:0,
阿格斯:没错,
用法:“[原因]”,
吉登利:是的,
执行(消息、参数、客户端){
const embedMsg=new Discord.RichEmbed()
.setColor(“#0000ff”)
.setAuthor(message.author.username、message.author.displayAvatarURL)
.set缩略图(message.author.displayAvatarURL)
.setTimestamp()文件
.setFooter('botname',client.user.displayAvatarURL);
let member=message.notices.members.first()| | args[0]
如果(!message.member.hasPermission('BAN_MEMBERS')){
embedMsg.setDescription(`You't have permission to unban!`);
返回消息.channel.send(embedMsg);
}
如果(!args.length<2){
embedMsg.setDescription(“^unban至少接受一个参数!正确用法为“^unban[reason]”);
返回消息.channel.send(embedMsg);
}
设newargs=args.splice(1,args.length).join(“”)
message.guild.unban(成员)
.然后(()=>{
embedMsg.setDescription(`${member.username}已成功解除绑定,原因是${newargs}`);
返回消息.channel.send(embedMsg);
})
.catch((错误)=>{
embedMsg.setDescription(`cannotunban${member.username}`);
控制台日志(err);
返回消息.channel.send(embedMsg);
});
}
}
它在discord.js的官方文档中说,unban方法返回一个成员对象
它之所以说“未定义”,是因为您试图访问的成员对象不在服务器/公会中。因此,您需要添加对该方法返回的成员对象的引用:
message.guild.unban('some user ID').then((member) => {
embedMsg.setDescription(`${member.username} has been succesfully unbanned for reason ${newargs}`);
return message.channel.send(embedMsg);
}
DiscordAPIError:无效的表单正文用户\u id:值“”不是雪花。位于C:\Users\user\bot\node\u modules\discord.js\src\client\rest\RequestHandlers\Sequential.js:85:15,位于C:\Users\user\bot\node\u modules\snekfetch\src\index。