You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Discord机器人Kick.js模块,仅允许Mod角色使用踢人命令

限制Discord踢人命令仅Mod角色可执行的修改方案

你的当前Kick.js命令对所有用户开放,要实现仅拥有Mod角色的用户才能使用,只需要在代码开头添加角色权限检查逻辑即可,以下是具体的修改后的代码和细节说明:

修改后的完整代码

module.exports = {
    name: 'kick', //command name
    run : async(client, message, args) => {
        // 第一步:查找服务器中的Mod角色(请替换成你实际的角色名称)
        const modRole = message.guild.roles.cache.find(role => role.name === 'Mod');
        // 如果服务器里没找到这个角色,直接提示
        if (!modRole) return message.channel.send('服务器中未找到「Mod」角色,请先创建该角色或修改代码中的角色名称!');

        // 第二步:检查执行命令的用户是否拥有Mod角色
        if (!message.member.roles.cache.has(modRole.id)) {
            return message.channel.send('你没有权限执行这个命令!只有拥有Mod角色的成员才能使用踢人功能。');
        }

        // 原有的机器人权限检查逻辑
        if (!message.guild.me.hasPermission('KICK_MEMBER')) return message.channel.send('I do not have permission to use this command :joy: ');
        
        // 原有的目标成员检查与踢人逻辑
        const Member = message.mentions.members.first()
        if (!Member) return message.channel.send('Please specify a member to kick.....');
        await Member.kick({ reason: args.slice(1).join(" ")})
        message.channel.send(`${ Member.user.tag} was kicked from the server!`)
    }
}

关键修改点说明

  • 角色查找逻辑:通过message.guild.roles.cache.find定位你的Mod角色,这里用角色名称匹配,如果你担心角色名称被修改导致失效,建议换成角色ID匹配(更稳定),比如把查找条件改成role.id === '123456789012345678'(替换成你实际的Mod角色ID)。
  • 用户权限检查:通过message.member.roles.cache.has(modRole.id)判断当前执行命令的用户是否持有Mod角色,没有的话直接返回权限不足提示,拦截后续操作。
  • 检查顺序:把角色权限检查放在最前面,这样无权限用户会被第一时间拦截,避免不必要的逻辑执行。

内容的提问来源于stack exchange,提问作者28_ShahmeerKhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 13:17:41