如何让discord.js读取用户回复 现有交互功能代码无法运行求助
你使用的最新版discord.js(v14及以上)调整了awaitMessages的传参规则,旧版将filter作为第一个参数的写法已经不被支持,这是代码无法运行的主要原因,同时原代码存在变量名冲突的隐患,按以下方式修改即可:
修改要点
- 移除
awaitMessages的第一个filter参数,将filter函数移入配置对象的filter属性中 - 将
awaitMessages成功回调的参数名从message改为collected,避免和外层触发指令的message变量冲突 - 确认你已在Discord开发者平台开启机器人的
Message Content Intent,并且机器人拥有对应频道的读消息、发消息权限
修正后代码
client.on('messageCreate', message => { // 忽略所有机器人发送的消息 if (message.author.bot) return; if (message.content === prefix + "start") { message.channel.send("Testing.. Type YES or NO").then(() => { message.channel.awaitMessages({ filter: m => m.author.id === message.author.id, max: 1, time: 30000, errors: ['time'] }) .then(collected => { const replyMsg = collected.first(); const input = replyMsg.content.toUpperCase(); if (input === 'YES' || input === 'Y') { message.channel.send(`Hello World!`); } else if (input === 'NO' || input === 'N') { message.channel.send(`Ping`); } else { message.channel.send(`Terminated: Invalid Response`); } }) .catch(() => { message.channel.send('Timeout'); }); }) } });
内容的提问来源于stack exchange,提问作者Bored
相关产品推荐
相关产品推荐

