Discord.js:获取100多个存档线程



我一直在使用Discord bot命令来获取服务器上的所有存档线程。我目前正在接近100的极限,正在寻找绕过这个极限的方法。

这是我以前写的一篇帖子,可以从中获取多达100个线程。

我发现了这篇文章,他们制作了一个可以获取100多条消息的系统,但我还没能成功地将其转换为代码来获取100多个线程。不幸的是,在打印线程时,日期和顺序有点不一致,因此获取这些数据一直是一个挑战。

到目前为止,我只有100个线程的代码:

client.on('messageCreate',  async function (message) {
if(message.content === "!test"){
const guild = client.guilds.cache.get("GUILD_ID_HERE"); // number removed for privacy reasons
var textChannels = message.guild.channels.cache.filter(c => c.type === ChannelType.GuildText);
textChannels.forEach(async (channel, limit = 500) => {
let archivedThreads = await channel.threads.fetchArchived({limit: 100});
console.log(archivedThreads);
});
}
}

在我的最后一段代码中,我还将其打印到一个文本文件中,而不是控制台中,但我将额外的代码留在了这里,以使这些代码在调试时更加简化。

关于如何一次迭代并打印多组100个线程以绕过限制,有什么想法吗?

传递给Array.forEach的函数不等待,您可以在异步函数中使用for of运算符或经典的for循环在线程上等待同步执行。

var textChannels = message.guild.channels.cache.filter(c => c.type === ChannelType.GuildText);
async function fetchArchives(){
for (const channel of textChannels) {
let archivedThreads = await channel.threads.fetchArchived({limit: 100});
console.log(archivedThreads);
}
}

最新更新