我当前正在尝试获取公会中的所有消息,但是.fetchMessages
方法仅适用于特定渠道。
我已经尝试使用.forEach
函数,但这样做时遇到了多个错误。
async function intervalFunc() {
var mainGuild = client.guilds.get("562324876330008576");
var messagesArray = [];
await mainGuild.channels.forEach(channel => {
if (channel.type == "text") {
channel.fetchMessages({ limit: 20 }).then(msg => {
messagesArray.push(msg);
});
}
});
console.log(messagesArray.length)
//....
}
预期输出至少为几百,但输出0
。
答案 0 :(得分:0)
您需要将await
放在异步操作上:
async function intervalFunc() {
var mainGuild = client.guilds.get("562324876330008576");
var messagesArray = [];
for(channel in mainGuild.channels) {
if(channel.type == "text") {
const messages = await channel.fetchMessages({limit: 20});
messagesArray = [
...messagesArray,
...messages,
];
}
}
console.log(messagesArray.length);
}
因此,这里它将等待ferchMessages
以异步方式返回值,然后进行下一次迭代。