当我的取消静音命令中没有提及时,discord.js bot 崩溃

时间:2021-05-31 06:28:55

标签: javascript discord.js

所以我做了一个静音和取消静音命令,静音的效果很好,我只需要添加一些东西,取消静音的也很好用,但是当没有提到的人(例如 q!unmute 而不是 q!unmute [ user]) 机器人崩溃了,我尝试了 catch 和那些东西,但我真的不明白它们是如何工作的,我对 js 很陌生,这是应该发送“你必须提及用户”错误的字符串:

if (!member) return message.channel.send("You have to mention a valid member");

这是剩下的代码:

module.exports = {
    name: 'unmute',
    description: 'unmutes a muted member',
    execute(message, args, Discord) {

        if (message.member.hasPermission('MANAGE_ROLES')) {

            const role = message.guild.roles.cache.find(role => role.name === 'Muted');
            const member = message.mentions.members.first();
            var unmuteChannel = message.guild.channels.cache.find(channel => channel.name.includes("modlogs"));

            const unmuteEmbed = new Discord.MessageEmbed()
            .addField("Unmuted user", member)
            .setFooter(`Unmuted by ${message.author.tag}`)
            .setTimestamp();

            
            member.roles.remove(role);
            message.channel.send(`${member} Has Been Unmuted`);
            unmuteChannel.send(unmuteEmbed); 
        
        if (!member) return message.channel.send("You have to mention a valid member");

        }
        
    }
}

希望能帮到你

2 个答案:

答案 0 :(得分:2)

在您的代码中,您正在检查提到的用户是否为空,但它位于函数的末尾。我认为在获得值之后放置 if 应该可以:

module.exports = {
    name: 'unmute',
    description: 'unmutes a muted member',
    execute(message, args, Discord) {

        if (message.member.hasPermission('MANAGE_ROLES')) {

            const role = message.guild.roles.cache.find(role => role.name === 'Muted');
            const member = message.mentions.members.first();
            if (!member) return message.channel.send("You have to mention a valid member");

            var unmuteChannel = message.guild.channels.cache.find(channel => channel.name.includes("modlogs"));

            const unmuteEmbed = new Discord.MessageEmbed()
            .addField("Unmuted user", member)
            .setFooter(`Unmuted by ${message.author.tag}`)
            .setTimestamp();

            
            member.roles.remove(role);
            message.channel.send(`${member} Has Been Unmuted`);
            unmuteChannel.send(unmuteEmbed); 
        }
        
    }
}

答案 1 :(得分:0)

移动

if (!member) return message.channel.send("You have to mention a valid member");

在您定义成员的下方。

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