提及的不和谐机器人静音命令

Posted

技术标签:

【中文标题】提及的不和谐机器人静音命令【英文标题】: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

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

【问题讨论】:

身份证有效吗?看起来这有 happened to someone before 并且他们的 ID 由于某种原因无效。 【参考方案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`)
            )
    

【讨论】:

以上是关于提及的不和谐机器人静音命令的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的不和谐机器人命令不起作用

如何在文本中提及成员?不和谐机器人 python

在nodejs中定期检查?

为啥我的不和谐机器人只执行一次我的命令,而且只执行一次?

试图制作一个命令页面来列出我的不和谐机器人上的所有命令,但不知道如何[关闭]

TypeError:无法读取未定义的不和谐机器人 js 说命令的属性“加入”