簡體   English   中英

如何在 Discord.JS v13 中使用 awaitMessages

[英]How to use awaitMessages in Discord.JS v13

所以,我想等待來自用戶使用特定命令的消息。 我知道過濾器可能是錯誤的,但我現在不知道該如何處理。

我試過這樣的事情:

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

但是現在,我怎樣才能讓它工作呢? 因為我在谷歌上搜索了幾個小時,找不到解決這個問題的方法。 我只想從使用命令的同一用戶獲取消息(而且我只能從機器人獲取消息,僅此而已)。

這是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()它,或對消息做任何你想做的事情。

看看官方的 discordjs 指南

例子:

// `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`);
});

你的格式沒有錯你只需要改變過濾器的position!

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

並確保將'DIRECT_MESSAGES'放在意圖 function 上

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM