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

Discord开发:如何在DM中获取消息?已尝试方法无效求助

解决Discord DM消息获取与反应问题

核心问题分析

你的代码存在两个关键问题:

  • messages.fetch()是异步Promise操作,直接调用.react()会因Promise未完成而报错
  • 直接通过message.author.messages获取消息的方式不符合Discord API规范,必须先获取DM频道实例

修正方案

1. 异步处理+正确获取DM频道

确保命令函数为异步函数,先获取用户的DM频道,再从中获取消息并添加反应:

// 命令函数需声明为async
async function yourCommandHandler(message, args) {
  let id = args[0];
  let react = args.slice(1).join(' ');

  try {
    // 获取或创建与用户的DM频道
    const dmChannel = await message.author.createDM();
    // 从DM频道中获取指定ID的消息
    const fetchedMessage = await dmChannel.messages.fetch(id);
    // 为消息添加反应
    await fetchedMessage.react(react);
  } catch (error) {
    console.error('操作失败:', error);
    message.reply('无法找到指定消息或无权限操作,请检查消息ID是否正确,且该消息是与机器人的DM内容');
  }
}

2. 必须注意的API限制

  • 机器人仅能获取它参与过的DM消息:即机器人自身发送的消息,或用户直接发给机器人的消息,无法获取用户与其他账号的DM内容,这是Discord的安全限制
  • 消息ID需准确:确保传入的id是DM频道内存在的有效消息ID
  • 反应格式正确:自定义表情需用<:表情名:表情ID>格式,普通表情直接使用emoji字符即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:25:20