提及的不和谐机器人静音命令
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`)
)
【讨论】:
以上是关于提及的不和谐机器人静音命令的主要内容,如果未能解决你的问题,请参考以下文章