Discord.js |无法读取属性';显示名称';未定义的

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

我正在为一个朋友制作一个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)

这是我的密码

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。