javascript - 我的 kick 命令让服务器中的任何人都可以踢某人
问题描述
我的不和谐机器人需要我的 kick 命令才能为版主和管理员工作。有没有人有更多的编码可以让它只有模组或管理员可以踢?
我对 kick 命令的编码:
client.on('message', (message) => {
if (!message.guild) return;
if (message.content.startsWith('!kick')) {
const user = message.mentions.users.first();
if (user) {
const member = message.guild.member(user);
if (member) {
member
.kick('Optional reason that will display in the audit logs')
.then(() => {
message.reply(`Successfully kicked ${user.tag}`);
})
.catch((err) => {
message.reply('I was unable to kick the member');
console.error(err);
});
} else {
message.reply("That user isn't in this guild!");
}
} else {
message.reply("You didn't mention the user to kick!");
}
}
});
解决方案
您可以GuildMember.hasPermission
用来检查用户是否具有特定权限。你可以在这里看到有效的权限标志,尽管我认为你会想KICK_MEMBERS
在这种情况下使用。
if (!message.member.hasPermission('KICK_MEMBERS'))
return message.channel.send('Insufficient Permissions');
您还可以通过某人拥有的角色限制访问,为此我敦促您阅读此现有答案
推荐阅读
- python - 如何根据熊猫数据框中的非连续索引列表替换值?
- php - ZF3 - 使用模块目录外部的部分
- html - Bootstrap 4 - 如何使列拉伸到父级的高度?
- python - 将 log.txt 文件转换为 JSON 文件
- javascript - 当答案是多个条件之一时,我该怎么做才能执行代码?
- sql - 如何在我的日期维度表中创建一个列,将日期列分类到这个特定的逻辑中?
- java - 如果 ArrayList 是有序的,ArrayList 的 contains() 方法是否工作得更快?
- python-3.x - 使用 python 获取斐波那契数列的第 n 个字符
- php - 从 MySQL 到 PHP 的布尔值 - 转换为 tinyint 并进行比较
- swift - 如何用手指移动毫不延迟地移动 CAShapeLayer