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

Discord.js中EmbedBuilder与awaitMessages无响应问题求助

问题:Discord.js 消息收集器无响应,无法生成指定Embed

我编写了以下Discord.js代码,希望实现机器人先请求用户输入标题,再发送包含该标题的Embed:

const { EmbedBuilder } = require('discord.js');

module.exports = {
    name: 'embed',
    category: 'utility',
    //requirePermissions: ['ADMINISTRATOR'],
    run: async (message) => {
        message.channel.send("provide title:")
        const response = await message.channel.awaitMessages(
            m => m.author.id === message.author.id,
            {
            time: 60000,
            max: 1
            }
        );

            const title = response.first().content;
            let embed = new EmbedBuilder()
            .setTitle(title)
            .setColor(0xff9933)
            message.channel.send({embeds: [embed]})
        }}

实际运行时,机器人发送“provide title:”后就没有后续动作了,尝试使用消息收集器但问题仍未解决。

解决方法
  • 添加收集器异常处理
    原代码未处理用户超时未输入、未收集到有效消息的情况,一旦出现这类场景,response.first()会返回undefined,导致代码中断。需要先判断收集器是否获取到消息。

  • 确认机器人权限
    确保机器人在目标频道拥有读取消息历史、发送消息权限,同时频道没有设置限制机器人的权限规则。

  • 修复后的完整代码

const { EmbedBuilder } = require('discord.js');

module.exports = {
    name: 'embed',
    category: 'utility',
    run: async (message) => {
        // 发送请求输入的消息
        await message.channel.send("provide title:");

        try {
            const response = await message.channel.awaitMessages({
                filter: m => m.author.id === message.author.id,
                time: 60000,
                max: 1,
                errors: ['time']
            });

            const title = response.first().content;
            const embed = new EmbedBuilder()
                .setTitle(title)
                .setColor(0xff9933);
            
            await message.channel.send({ embeds: [embed] });
        } catch (err) {
            // 超时或未收集到消息时提示用户
            await message.channel.send("超时未输入标题,命令已取消。");
        }
    }
};

代码说明

  1. 用try/catch捕获收集器的超时错误,避免代码崩溃
  2. 明确指定errors: ['time'],让超时触发异常
  3. 所有异步操作添加await,确保执行顺序正确
  4. 增加错误提示,告知用户命令取消的原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:20:16