Discord.js报message2.react is not a function错误的排查咨询
Discord机器人反应身份组功能报错解决方案
报错TypeError: message2.react is not a function的本质是获取到的message2不是Discord.js的Message类实例,因此不存在react方法,并非通用逻辑编写错误,可按照以下顺序排查:
- 核对配置参数
检查配置中HELPERROLES_CHANNEL_ID、HELPERROLES_MESSAGE_ID两个值是否正确,避免错填、漏填字符,或是和其他频道、消息ID混淆。 - 校验频道类型
只有文本类频道支持消息操作,若HELPERROLES_CHANNEL_ID指向的是频道分类、语音频道、论坛频道等非文本类频道,拿到的channel2不存在messages集合,后续fetch操作无法返回正确的消息实例。可添加如下代码校验频道类型:const { ChannelType } = require('discord.js') // 拿到channel2后执行校验 console.log(`channel2类型编号:${channel2.type}`) if(channel2.type !== ChannelType.GuildText && channel2.type !== ChannelType.GuildNews) { console.log('channel2为非文本类频道,不支持消息操作') } - 检查权限配置
确认机器人在channel2对应频道拥有三个必要权限:查看频道、查看消息历史、添加反应。若使用v14及以上版本的Discord.js,需要额外在Discord开发者后台开启消息内容意图。 - 增加异常捕获定位问题
原代码缺少异常捕获逻辑,无法定位fetch操作的具体错误,可调整为如下写法:let message2 try { message2 = await channel2.messages.fetch(info.HELPERROLES_MESSAGE_ID) console.log(`获取到的message2实例类型:${message2.constructor.name}`) } catch(err) { console.log('message2获取失败,错误详情:', err) }
内容的提问来源于stack exchange,提问作者Denes Garda
相关产品推荐
相关产品推荐

