javascript - 循环解决 100 条消息获取限制在 1 天后不再起作用

标签 javascript node.js function discord discord.js

我昨天从 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;
}

最佳答案

MessagesCollection , 没有 array该对象的方法。
根据documentation您可以将其转换为常规数组,然后使用扩展运算符。

sum_messages.push(...Array.from(messages));

关于javascript - 循环解决 100 条消息获取限制在 1 天后不再起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71890200/

相关文章:

javascript - jquery - 根据当前高度与限制切换 div 高度

javascript - 无法使用 jquery 更改 css 样式属性

javascript - Socket.io 全局发送函数 - Node.js

c++ - 在 C++ 故障中集成 Goempertz 函数

javascript - 在新窗口中加载新的 A 框架场景

javascript - 下载文件后如何执行一些javascript?

node.js - NodeJS aes gcm 无效套件类型错误

javascript - Node/Express 不会在 500 错误页面上加载 CSS

javascript - 在 while 循环内声明变量 javascript

r - 将 R Shiny 应用程序保存为函数,并将参数传递给 Shiny 的应用程序