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

Discord.js中调用unban方法出现TypeError错误的求助

问题排查与修复

错误原因

你遇到的TypeError: Cannot read properties of undefined (reading 'unban')根源有两个:

  1. 被封禁用户不在服务器成员缓存中:message.guild.members.cache.get(...)会返回undefined——被封禁用户已退出服务器,不会出现在成员缓存里,自然无法获取对象调用.unban()。
  2. API调用方式错误:unban是GuildMemberManager的方法(即message.guild.members),不是单个成员对象的方法;而且解封需要的是用户ID/用户对象,不是成员对象(被封禁者不属于服务器成员)。

修复后的代码

if (message.content.slice(2).toLowerCase().includes("unban")) {
    // 禁止DM内执行解封
    if (message.channel.type === 1) {
        const target = message.content.slice(7).trim().toLowerCase();
        message.reply({ content: target === '' ? "You can't unban blank in a dm" : "you can't unban in a dm" });
        return;
    }

    // 检查是否输入了解封目标
    const targetInput = message.content.slice(7).trim();
    if (!targetInput) {
        message.reply({ content: "you can't unban no one" });
        return;
    }

    // 检查权限
    if (!message.member.roles.cache.some(r => r.name === "Mod")) {
        message.channel.send(`⚠️ Error occurred ⚠️ The Error was: 'You dont have "Mod" role'`);
        return;
    }

    // 处理解封逻辑
    try {
        let target;
        // 优先处理@用户(注意用users而不是members)
        if (message.mentions.users.first()) {
            target = message.mentions.users.first();
        } else {
            target = targetInput; // 直接用用户ID
        }

        // 调用unban方法(统一通过guild.members.unban)
        await message.guild.members.unban(target);
        message.channel.send(`Unbanned ${target.tag ?? targetInput}`);
        if (!message.mentions.users.first()) message.delete();
    } catch (err) {
        message.channel.send(`⚠️ 解封失败:${err.message}`);
    }
}

关键修改说明

  • 替换mentions.members为mentions.users:被封禁用户不是服务器成员,无法通过mentions.members捕获,改用mentions.users获取用户对象。
  • 移除缓存查找逻辑:直接将用户ID或用户对象传给message.guild.members.unban(),无需从成员缓存中查找(缓存里根本没有被封禁用户)。
  • 增加错误捕获:用try/catch处理无效ID、无权限解封等异常情况,避免程序崩溃。
  • 简化冗余判断:合并重复的DM判断逻辑,让代码更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:25:55