discord.js中通过消息ID添加反应失败,报错react不是函数
Discord.js 添加表情报错修复
我已经查阅过Stack Overflow上的相关问题,但现有解决方案均不适用。当前代码如下:
client.channels.fetch(`1025902604728934442`) .then(channel => { channel.messages.fetch(1027438839435907142).react("👍"); })
运行后出现以下错误:
(node:2760) 未处理的Promise拒绝警告:TypeError: channel.messages.fetch(...).react 不是一个函数 在 /index.js:76:53 (node:2760) 未处理的Promise拒绝警告:未处理的Promise拒绝。该错误要么是因为在没有catch块的异步函数内部抛出,要么是因为拒绝了一个未被.catch()处理的Promise。要在未处理的Promise拒绝时终止Node.js进程,请使用CLI标志 `--unhandled-rejections=strict`。(拒绝ID: 1) (node:2760) [DEP0018] 弃用警告:未处理的Promise拒绝已被弃用。未来,未处理的Promise拒绝将终止Node.js进程并返回非零退出码。
问题原因
channel.messages.fetch()是异步操作,返回的是Promise对象,不是Message实例,直接链式调用.react()自然会报错“不是函数”。- 原代码没有添加错误捕获逻辑,导致出现未处理的Promise拒绝警告。
修正代码
链式then写法
client.channels.fetch(`1025902604728934442`) .then(channel => { // 先等待消息获取完成 return channel.messages.fetch(1027438839435907142); }) .then(message => { // 获取到消息实例后再添加表情 message.react("👍"); }) .catch(error => { // 捕获并打印所有可能的错误 console.error("操作出错:", error); });
Async/Await写法(更易读)
async function addMessageReaction() { try { const channel = await client.channels.fetch(`1025902604728934442`); const message = await channel.messages.fetch(1027438839435907142); await message.react("👍"); } catch (error) { console.error("操作出错:", error); } } // 调用函数 addMessageReaction();
内容的提问来源于stack exchange,提问作者Altify
相关产品推荐
相关产品推荐

