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

Discord.js V13 发送Embed消息时如何使用message.react添加表情反应

问题原因

  • message.react()是触发指令的用户消息(Message实例)的方法,不能写在MessageEmbed的链式构造逻辑中,Embed实例本身不具备react方法,你之前写在embed构造里的注释代码本身语法错误。
  • 原逻辑直接return了reply的执行结果,react调用如果放在return之后不会被执行,需要调整执行顺序。

解决方案

根据你的需求二选一即可:

方案1:对用户发送的指令原消息添加表情(和你注释里的旧逻辑效果一致)

let channel = message.member.voice.channel;

if (!channel) {
  // 先给用户的原消息加表情,非核心逻辑可以加catch吞掉异常避免打断主流程
  message.react('🙄').catch(err => {});
  // 再返回embed格式的回复
  return message.reply({
    embeds: [
      new MessageEmbed()
        .setColor('#FFA400')
        .setDescription(`>>> Please join a voice channel`)
        .setFooter(
          `Hey ${message.author.username}`,
          message.author.displayAvatarURL({ dynamic: true })
        ),
    ],
  });
}

方案2:对机器人发送的embed回复消息添加表情

注意外层执行函数需要添加async关键字才能使用await语法:

let channel = message.member.voice.channel;

if (!channel) {
  // 等待embed回复发送完成,拿到回复的消息实例
  const replyMessage = await message.reply({
    embeds: [
      new MessageEmbed()
        .setColor('#FFA400')
        .setDescription(`>>> Please join a voice channel`)
        .setFooter(
          `Hey ${message.author.username}`,
          message.author.displayAvatarURL({ dynamic: true })
        ),
    ],
  });
  // 给机器人自己发的embed回复添加表情
  await replyMessage.react('🙄');
  return;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:36:04