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

运行Discord.js的messageDelete事件时报Cannot read property 'content' of undefined如何解决

Discord机器人messageDelete事件报错修复方案

报错根因

你遇到的TypeError: Cannot read property 'content' of undefined错误由以下核心问题导致:

  • discord.js的messageDelete事件回调仅会传递1个参数:被删除的消息对象,你错误定义了2个入参(member, message),导致实际的消息对象被赋值给第一个参数member,第二个参数message为undefined,访问undefined的content属性就触发了报错。

其他附带逻辑错误

  • 代码中member.member.user.id属于冗余错误写法,消息对象本身自带author属性指向消息发送者
  • content是消息对象的属性而非方法,不需要加括号调用
  • 若未开启消息内容意图、未配置消息缓存,非实时缓存的消息删除时可能无法拿到完整内容,需要处理partial消息的情况

修复后的代码

// 首先确认客户端初始化时开启了必要权限与配置
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent, // 必须开启才能获取消息内容
  ],
  partials: [Partials.Message] // 配置后才能拿到未缓存的删除消息
});

// 修正事件回调参数定义
client.on("messageDelete", async (message) => {
  // 处理未缓存的partial消息,先拉取完整内容
  if (message.partial) {
    try {
      await message.fetch();
    } catch (err) {
      console.log("无法获取已删除的未缓存消息:", err);
      return;
    }
  }

  const aud = db.get(`auditchannel_${message.guild.id}`);
  if (!aud) return;

  const auditChannel = client.channels.cache.get(aud);
  if (!auditChannel) return;

  await auditChannel.send(`<@${message.author.id}> 的消息在 <#${message.channel.id}> 被删除`);
  console.log(message.content);
});

额外验证步骤

  • 确认discord.js版本为v14及以上,不同大版本的事件参数、意图配置规则存在差异
  • 确认Discord开发者后台中你的机器人应用已经开启了Message Content Intent权限
  • 若删除的是机器人自己发送的消息,检查机器人是否有对应权限可以读取自身消息内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:39:03