[英]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()
它,或對消息做任何你想做的事情。
例子:
// `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.