You need to enable JavaScript to run this app. 如何修复Discord机器人运行时出现的DiscordAPIError: Unknown Message错误?
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Discord机器人运行时出现的DiscordAPIError: Unknown Message错误?

Discord图片频道自动清理纯文本机器人报错修复方案

现有代码存在的问题

  • 事件监听使用了discord.js v13版本后已废弃的message事件,新版本该事件已替换为messageCreate,会导致事件无法触发直接报错
  • message.member.send() 是异步操作,未添加错误捕获逻辑,当用户关闭了「允许服务器成员私信我」的权限时,会直接抛出未捕获异常导致机器人崩溃
  • 未做message.member非空校验,如果用户发完消息立刻退出服务器,message.member会返回null,调用send方法会直接报错
  • 未校验机器人自身是否拥有对应频道的「管理消息」权限,权限不足时调用message.delete()会抛出错误
  • 未在Discord开发者后台开启必要的消息内容权限,也未在客户端初始化时配置对应的意图,会导致无法接收消息事件

修复后的完整代码

// 客户端初始化部分示例(必须配置对应意图)
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds, // 服务器意图
    GatewayIntentBits.GuildMessages, // 服务器消息意图
    GatewayIntentBits.MessageContent // 消息内容意图
  ]
});

client.on("messageCreate", async message => {
    // 过滤机器人自身发的消息
    if (message.author.bot) return;
    // 白名单用户ID,配置后这些用户发的纯文本不会被删除
    const allowedUsers = ['853248522563485717'];
    // 图片频道的ID
    const imageChannelId = '841260660960395287';
    
    // 不是目标图片频道直接返回
    if (message.channel.id !== imageChannelId) return;
    // 白名单用户直接放行
    if (allowedUsers.includes(message.author.id)) return;
    // 带附件的消息直接放行
    if (message.attachments.size > 0) return;
    // 校验机器人是否有管理消息的权限,没有就直接返回避免报错
    if (!message.guild.members.me.permissionsIn(message.channel).has('ManageMessages')) return;

    try {
        // 成员存在时才发送私信提醒,私信失败静默处理不报错
        if (message.member) {
            await message.member.send("你不能在图片频道发送纯文本消息").catch(() => {});
        }
        // 删除违规消息
        await message.delete();
    } catch (err) {
        // 打印错误日志,不会导致机器人退出
        console.error('清理违规消息失败:', err);
    }
});

额外注意事项

配置代码前需要先进入Discord开发者平台的对应机器人设置页面,在「Privileged Gateway Intents」分类下开启Message Content Intent开关,否则机器人无法读取消息内容,不会触发消息事件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 20:54:01