【问题标题】:Discord bot mute command by mention提及的不和谐机器人静音命令
【发布时间】:2020-11-18 23:36:16
【问题描述】:

我想向机器人添加一些审核命令,但我被“静音”命令卡住了:

module.exports = {
    name: 'mute',
    description: 'command to mute members',
    execute(message, args){
        if(message.member.roles.cache.some(r => r.name === "Siren")){
            const role = message.guild.roles.cache.find(r => r.name === "Muted");
            const user = message.mentions.members.first().id;
            user.roles.add(role);
        }
    }
}

我不断收到错误:

TypeError: Cannot read property 'add' of undefined

我一直在阅读各种指南并浏览文档,但一直未能找到我在哪里犯了错误或什至是什么导致了这个错误。

【问题讨论】:

标签: javascript discord.js


【解决方案1】:

首先,您尝试将角色添加到成员 ID,而不是成员。如果消息中没有成员提及,您将得到空的提及集合并尝试获取未定义的 id,因为空集合的 message.mentions.members.first() 返回 undefined

其次,尽量不要使用角色名,使用角色ID,这样更安全。并将您的 if 代码从 if (statment) then do something 更改为 if (!statment) return reject reason 这将有助于避免不必要的代码嵌套。

module.exports = {
    name: 'mute',
    description: 'command to mute members',
    execute(message, args){
        if(!message.member.roles.cache.has('2132132131213')) return message.reply('You can`t use mute command')
            const role = message.guild.roles.cache.get('21321321312');
            if (!role) return message.reply('can`t get a role')
            const member = message.mentions.members.first()
            if (!member) return message.reply('Pls mention a member')
            member.roles.add(role).then(newMember => {
                message.channel.send(`successfully muted member  ${member.user}`)
            })
    }
}

【讨论】:

    猜你喜欢
    • 2020-07-13
    • 2021-07-04
    • 2019-02-02
    • 2018-07-21
    • 2018-11-10
    • 2017-05-31
    • 2019-07-28
    • 2021-10-21
    • 2022-01-15
    相关资源
    最近更新 更多