bot 命令的角色权限
Posted
技术标签:
【中文标题】bot 命令的角色权限【英文标题】:Role permission for bot command 【发布时间】:2020-08-09 10:21:51 【问题描述】:我必须定义一些东西或其他东西吗?我在网上某处看到了具有角色权限的那个东西。
message.member.roles.some is not a function
execute(message, args)
if(message.member.roles.some(role => role.name === 'Community Manager'))
if (!args.length) return message.channel.send(You didn't pass any command to reload, $message.author!);
const commandName = args[0].toLowerCase();
const command = message.client.commands.get(commandName)
|| message.client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));
if (!command) return message.channel.send(There is no command with that name or alias `$commandName`, $message.author!);
delete require.cache[require.resolve(./$command.name.js)];
try
const newCommand = require(./$command.name.js);
message.client.commands.set(newCommand.name, newCommand);
message.channel.send(Command `$command.name` was reloaded!);
catch (error)
console.log(error);
message.channel.send(There was an error while reloading a command `$command.name`:\n`$error.message`);
else
message.channel.send(You don't have the permission to execute that command.);
【问题讨论】:
【参考方案1】:他们将其更改为 message.member.roles.cache,您也可以使用 find 代替(可能会更好的性能,如果不是,它会相等,在这种情况下它仍然具有更好的可读性),
messsage.member.roles.cache.find(r => r.name === "Community Manager");
【讨论】:
你说得对,谢谢,但现在唯一的问题是,没有错误了,但是没有角色的测试帐户仍然可以执行重新加载命令,这应该是不可能的吧?你知道为什么吗? 看到其他代码我没看,为什么要重新加载命令?你有另一个命令来更新命令吗?至于为什么代码仍然在没有角色的测试帐户下运行,我不确定,您可以发送其余相关的代码吗? 啊抱歉我忘记了,已经修好了,我只是不小心使用了我的正常重载命令而不是有权限的命令以上是关于bot 命令的角色权限的主要内容,如果未能解决你的问题,请参考以下文章