首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Discord.js:为什么"awaitMessages“在事件:"ready”中不起作用?

awaitMessages 是 Discord.js 中的一个功能,它允许你在指定的时间内等待用户的消息,并对这些消息进行响应。然而,这个功能在 "ready" 事件中不起作用的原因是因为 "ready" 事件是在 bot 加载并准备好与 Discord 服务器交互时触发的,而不是在用户发送消息时触发。

awaitMessages 需要在用户交互的上下文中使用,例如在监听 "message" 事件或在命令处理函数中。这是因为 awaitMessages 需要一个消息收集器(MessageCollector)来监听和收集用户的输入。

如果你想在 bot 准备好后立即等待用户的消息,你应该在 "ready" 事件处理器中设置一个监听器来等待 "message" 事件,然后在 "message" 事件处理器中使用 awaitMessages

以下是一个简单的示例代码,展示了如何在 "ready" 事件后等待用户的消息:

代码语言:txt
复制
const { Client, Intents } = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });

client.once('ready', () => {
    console.log(`Logged in as ${client.user.tag}!`);
    // 设置一个监听器来等待用户的消息
    client.on('messageCreate', async message => {
        if (message.author.bot) return; // 忽略其他 bot 的消息

        // 创建一个消息收集器
        const collector = message.channel.createMessageCollector({ time: 15000 });

        // 等待用户的消息
        collector.on('collect', collectedMessage => {
            console.log(`Collected ${collectedMessage.content}`);
            // 在这里处理用户的消息
        });

        // 当收集时间结束时
        collector.on('end', collected => {
            console.log(`Collected ${collected.size} items`);
            // 在这里处理收集结束后的逻辑
        });
    });
});

client.login('your-token-goes-here');

在这个示例中,当 bot 准备好后,它会监听 "messageCreate" 事件,并在收到用户的消息时创建一个消息收集器。这个收集器会等待用户在 15 秒内发送的消息,并对这些消息进行处理。

如果你在使用 awaitMessages 时遇到问题,可能是因为以下原因:

  1. 你没有正确地设置消息收集器的时间限制或过滤器。
  2. 你的 bot 没有正确的权限来读取消息或发送消息。
  3. 你的 bot 没有启用必要的 intents(如 GUILD_MESSAGES)。

确保你的 bot 有正确的权限,并且你已经启用了必要的 intents,这样 awaitMessages 才能正常工作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券