我昨天从 this post 创建了一个不和谐机器人从嵌入中导出字段,它工作正常,但今天不工作。我得到的错误是 TypeError: messages.array is not a function
我尝试卸载 Node 并重新安装,但无济于事。我将文件发送给 friend 运行,它运行良好,所以我的机器似乎有问题。我还尝试在我的 Windows 服务器上运行它,但没有看到任何错误,但机器人无法导出字段(我不打算使用我的服务器来运行机器人,仅用于故障排除)。有没有人见过这个错误和/或有解决方案?
更详细的错误(一条消息):
“xxxx@xxxx-mbp 嵌入机器人 % Node 主
/Users/xxxx/Downloads/embed bot/main.js:24
sum_messages.push(...messages.array());
^
TypeError:messages.array 不是函数
在lots_of_messages_getter (/Users/xxxx/Downloads/embed bot/main.js:24:39)
在 processTicksAndRejections ( Node :internal/process/task_queues:96:5)
在异步客户端。 (/Users/xxxx/Downloads/embed bot/main.js:36:20)"
async function lots_of_messages_getter(channel, limit = 10000) {
const sum_messages = [];
let last_id;
while (true) {
const options = { limit: 100 };
if (last_id) {
options.before = last_id;
}
const messages = await channel.messages.fetch(options);
sum_messages.push(...messages.array());
last_id = messages.last().id;
if (messages.size != 100 || sum_messages >= limit) {
break;
}
}
return sum_messages;
}
最佳答案
Messages
是 Collection , 没有 array
该对象的方法。
根据documentation您可以将其转换为常规数组,然后使用扩展运算符。
sum_messages.push(...Array.from(messages));
关于javascript - 循环解决 100 条消息获取限制在 1 天后不再起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71890200/