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

如何对机器人已发送的消息添加表情反应?尝试代码未生效

问题分析与解决方案

你的代码没生效有两个核心原因:

  1. return语句提前终止了函数执行:一旦运行return message.channel.send(...),函数会立刻结束,后面的message.react('🙂')完全没机会执行。
  2. 消息对象搞混了:message.react()是给用户发的原始消息加表情,而不是机器人刚发送的那条测试消息。另外channel.send()是异步操作,你得等它完成,拿到机器人发送的消息对象后再做反应操作。

正确写法一:Async/Await(推荐,代码更直观)

先确保你的命令函数是async类型,等待消息发送完成后,对返回的消息对象添加反应:

async function execute(message) {
  // 等待机器人发送消息,获取发送后的消息实例
  const sentMessage = await message.channel.send(`Test message`);
  // 给机器人自己发送的消息添加表情
  await sentMessage.react('🙂');
}

正确写法二:Promise链式调用

如果你的环境暂不支持async/await,可以用then处理异步结果:

message.channel.send(`Test message`)
  .then(sentMessage => {
    // 拿到发送成功的消息后添加表情反应
    sentMessage.react('🙂');
  })
  .catch(err => {
    // 可选:捕获发送消息或添加反应时的错误
    console.log('操作出错:', err);
  });

额外提醒

  • 要确保机器人在服务器中有添加表情反应的权限(比如Add Reactions权限),不然代码逻辑正确也会执行失败。
  • 如果你用的是Discord.js v14及以上版本,核心思路不变,只是部分API细节可能需要调整,但拿到发送后的消息对象再添加反应的逻辑是通用的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 14:37:36