【问题标题】:How to use awaitMessages in Discord.JS v13如何在 Discord.JS v13 中使用 awaitMessages
【发布时间】:2021-10-29 00:37:50
【问题描述】:

所以,我想等待来自用户使用特定命令的消息。我知道过滤器可能是错误的,但我现在不知道该如何处理。

我尝试过这样的事情:

const msg_filter = m => m.author.id === message.author.id;
message.channel.awaitMessages(msg_filter, {
    max: 1
});

但是现在,我怎样才能让它工作呢?因为我google了几个小时,找不到解决这个问题的方法。我只想从使用该命令的同一用户那里获取消息(而且我只能从机器人获取消息,仅此而已)。

【问题讨论】:

    标签: javascript discord.js


    【解决方案1】:

    看看the official discordjs guide这个。

    例子:

    // `m` is a message object that will be passed through the filter function
    const filter = m => m.content.includes('discord');
    const collector = interaction.channel.createMessageCollector({ filter, time: 15000 });
    
    collector.on('collect', m => {
        console.log(`Collected ${m.content}`);
    });
    
    collector.on('end', collected => {
        console.log(`Collected ${collected.size} items`);
    });
    

    【讨论】:

    • 很确定这是一个消息收集器,而不是awaitMessages
    【解决方案2】:

    Here's a link to the documentation on TextChannel#awaitMessages

    但简而言之,awaitMessages 返回一个您必须解决的承诺,如下所示:

    const msg_filter = (m) => m.author.id === message.author.id;
    const collected = await message.channel.awaitMessages({ filter: msg_filter, max: 1 });
    
    // Or without async/await
    const msg_filter = (m) => m.author.id === message.author.id;
    message.channel.awaitMessages({ filter: msg_filter, max: 1 })
      .then((collected) => {
        // ...
      });
    

    和collected 将是Collection 的消息。由于您只收集 1 条消息,因此您可以使用 collected.first() 获取集合中的第一条(也是唯一一条)消息,然后从那里您可以得到它的 .content 或 .reply() ,或者做任何事情否则你想对消息做些什么。

    【讨论】:

    • 其实是`message.channel.awaitMessages({ msg_filter, max: 1 })`
    • 是的 mb - 我会更新它
    猜你喜欢
    • 1970-01-01
    • 2020-08-16
    • 2021-04-26
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 2021-11-09
    • 1970-01-01
    相关资源
    最近更新 更多