discord.js UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“可踢”

Posted

技术标签:

【中文标题】discord.js UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“可踢”【英文标题】:discord.js UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'kickable' of undefined 【发布时间】:2020-07-22 07:16:49 【问题描述】:

昨天我可以运行这个脚本。 今天我收到错误

(node:29568) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'kickable' of undefined

我正在运行版本“discord.js”:12.1.1 - 我希望有人能发现我在这里做错了什么......因为它让我发疯。

您可以在下面找到我的 kickuser.js - 脚本 + 我的 index.js 脚本 -> https://pastebin.com/7tLkuU5p

const Discord = require("discord.js");

module.exports.run = async (bot, message, args) => 

    if (message.member.hasPermission("KICK_MEMBERS")) 

        if (!message.mentions.users) return message.reply('You must tag 1 user.');

        else 

            const channel = message.guild.channels.cache.get(696692048543088691);
            const member = message.mentions.members.first();
            let reason = message.content.split(" ").slice(2).join(' ');

            if (member.kickable == false) return message.channel.send("That user cannot be kicked!")

            else 

                if (!reason) reason = (`No reason provided.`);

                await member.send(`You have been kicked from **$message.guild.name** with the reason: **$reason**`)
                    .catch(err => message.channel.send(`⚠ Unable to contact **$member**.`));

                await member.kick(reason);

                const kickEmbed = new MessageEmbed()
                    .setAuthor(member.user.tag, member.user())
                    .setThumbnail(member.user.avatarURL())
                    .setColor("#ee0000")
                    .setTimestamp()
                    .addField("Kicked By", message.author.tag)
                    .addField("Reason", reason);

                await channel.send(kickEmbed);

                console.log(`$message.author.tag kicked $member.user.tag from '$message.guild.name' with the reason: '$reason'.`);

            
        
     else 
        message.channel.send("You do not have permission to use kick.");
        return;
    



module.exports.help = 
    name: "kickuser"

我希望有人可以帮助我。 提前致谢。

【问题讨论】:

【参考方案1】:

message.mentions.users 总是评估为 true,因为它是一个对象,并且要检查消息是否有任何提及,您可以这样做:

    if(!message.mentions.members.first()) return message.reply('You must tag 1 user.');

代替:

    if(!message.mentions.users) ...

【讨论】:

踢用户原因(有效)踢用户没有理由(有效)但是当我不突出显示用户时,它会失败......然后我得到这个:(node:7948) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'send' of undefined 我猜问题可能出在你的第一个 if 语句中,我猜 message.mentions.users 总是评估为 true,因为它是一个对象,尝试使用 if(!message.mentions.members.first()) 而不是 if(!message.mentions.users),因为如果 !message.mentions.members.first() 是检查消息是否有任何提及的另一个选项 感谢if (!message.mentions.members.first()) return message.reply('You must tag 1 user.'); 已修复。谢谢!

以上是关于discord.js UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“可踢”的主要内容,如果未能解决你的问题,请参考以下文章

Discord 错误错误 Discord.js 中的无效令牌

Discord 仅识别 discord.js 中的“ping”命令

错误“const Discord = require(discord.js) ^ ReferenceError: discord is not defined”

(Discord 机器人)当用户加入 Discord 服务器(discord.js)时,如何发送欢迎消息?

Discord.js 和 discord.js-commando 防止命令在特定通道中运行

使用 Discord 按钮的建议命令 Discord.JS