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

TypeError: message.author is not a function报错及ban命令权限校验求助

问题原因及修复方案

1. 报错核心原因

  • message.author 是Discord.js中的User类型对象,不是可调用的函数,不需要加括号()调用,直接取值即可
  • 权限校验需要使用服务器内的成员对象message.member,而非全局用户对象message.author:message.author仅存储用户全局通用信息,没有服务器内的角色、权限数据,无法调用hasPermission方法

2. 正确逻辑实现

将const mod的赋值改为message.member即可完成权限校验,同时修正其他逻辑错误如下:

修正说明:

  • 修正mod的取值来源
  • 删除错误的!条件写法,统一走无权限分支提示
  • 补充未指定封禁目标的提示逻辑
module.exports = {
    name: 'ban',
    description: "该命令用于封禁指定成员",
    execute(message, args) {
        const target = message.mentions.users.first();
        // 正确获取当前消息发送者在本服务器的成员对象,用于权限校验
        const mod = message.member;
        
        // 先校验权限
        if (mod.hasPermission('BAN_MEMBERS')) {
            // 有封禁权限的情况
            if (target) {
                const memberTarget = message.guild.members.cache.get(target.id);
                memberTarget.ban();
                message.channel.send("用户已被封禁");
            } else {
                // 未@指定要封禁的用户
                message.channel.send("请@指定需要封禁的用户");
            }
        } else {
            // 无封禁权限的情况
            message.channel.send(`你无法执行封禁操作,你没有BAN_MEMBERS权限`);
        }
    }
}

注意:如果你使用的是Discord.js v13及以上版本,权限校验方法需要改为mod.permissions.has('BAN_MEMBERS')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:54:02