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

Discord.js中awaitMessages/createMessageCollector无法捕获消息求助

Discord.js v14 问答机器人消息捕获问题修复

核心问题

Discord.js v14 已经彻底移除了 awaitMessages() 方法,你当前代码里还在调用这个已废弃的方法,这就是消息完全无法被捕获的根本原因。

修复后的代码

改用 v14 官方推荐的 createMessageCollector() 方法实现消息收集逻辑,功能和原有需求完全一致:

const quiz = require('./quiz.json');
const { SlashCommandBuilder } = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('quiz')
        .setDescription('quiz time!'),
    async execute(interaction) {
        const item = quiz[Math.floor(Math.random() * quiz.length)];
        const filter = response => {
            return item.answers.some(answer => answer.toLowerCase() === response.content.toLowerCase());
        };

        // 发送题目
        await interaction.reply({ content: item.question });

        // 创建消息收集器,设置过滤规则、最大收集数和超时时间
        const collector = interaction.channel.createMessageCollector({
            filter,
            max: 1,
            time: 30000
        });

        // 捕获到正确答案时触发
        collector.on('collect', msg => {
            interaction.followUp(`${msg.author} got the correct answer!`);
            collector.stop();
        });

        // 收集结束时触发(超时或已收集到目标数量)
        collector.on('end', collected => {
            if (collected.size === 0) {
                interaction.followUp('Looks like nobody got the answer this time.');
            }
        });
    },
};

额外确认项

  • 确保Discord开发者平台中,机器人的Privileged Gateway Intents里MESSAGE CONTENT INTENT已启用,服务器权限包含ViewChannel、SendMessages、ReadMessageHistory
  • 检查quiz.json格式是否正确,answers字段必须是字符串数组,示例格式:
[
    {
        "question": "What's 2+2?",
        "answers": ["4", "four"]
    }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:45:30