Javascript 将过去的消息提取到文件中

Javascript 将过去的消息提取到文件中,javascript,node.js,discord,discord.js,Javascript,Node.js,Discord,Discord.js,我目前正在尝试向我的机器人添加一个功能,通过一个通道获取该通道中的所有消息,如果可能的话,将其输出到一个TXT文件中。我对JS和nodeJS有点初学者,但我已经开发这个机器人将近一年了,所以我对它的工作原理有了相当的了解,不过我还在学习 我目前已经设置好了它,所以当我在Discord中发送命令时,它将获取一个通道的最新100条消息,但目前不会输出到任何地方 client.on'message',message=>{ 如果message.content.toLowerCase=='fetchtes

我目前正在尝试向我的机器人添加一个功能,通过一个通道获取该通道中的所有消息,如果可能的话,将其输出到一个TXT文件中。我对JS和nodeJS有点初学者,但我已经开发这个机器人将近一年了,所以我对它的工作原理有了相当的了解,不过我还在学习

我目前已经设置好了它,所以当我在Discord中发送命令时,它将获取一个通道的最新100条消息,但目前不会输出到任何地方

client.on'message',message=>{ 如果message.content.toLowerCase=='fetchtest'{ client.channels.get.fetchMessages{limit:100} .thenmessages=>console.log`Received${messages.size}消息` .catchconsole.error; } };
我需要的帮助是弄清楚如何“循环”代码,以便它保存每100条消息,直到它命中第一条消息,并将其输出到一个文本文件中:format。是否有一个很好的指南可以遵循,或者我应该做什么的基本概述?提前谢谢

基本上,要以一种简单的方式执行此操作,您只需获取在第一个请求中返回的集合的第一条消息,获取其ID并将其用作ChannelLogsQueryOptions之前的参数值。它是您作为参数传递的对象,用于更改默认的消息获取限制

另外,为了帮助您理解其中的逻辑,我们提供了一些代码示例:

//异步函数来处理诸如同步代码之类的承诺 异步函数加载用户{ 设page=1;//第一页开始点 //无限循环,因为我们不知道API中的用户总数 whiletrue{ //请求我们的假API并获取返回的JSON的唯一属性,这对本例很重要 let userList=等待获取`https://reqres.in/api/users?page=${page}`。然后response=>response.json.data; //检查我们是否有空响应 ifuserList.length{ //这只是用于插入一些DOM元素的普通JavaScript,忽略它,只是为了给这个示例添加一些视觉输出 userList.forEach用户=>{ 让section=document.querySelector'section', userElement=document.createElement'p'; userElement.innerText=user.email; section.appendChild用户元素; }; }否则{ //如果我们确实得到了一个空响应,我们就会跳出这个循环,函数执行结束 打破 } //增加我们的页码,这样我们就可以获得新的数据,而不是执行相同的请求 page++; } } //执行上面声明的函数 装载机用户;
基本上,要以一种简单的方式实现这一点,您只需获取在第一个请求中返回的集合的第一条消息,获取它的ID,并将其用作ChannelLogsQueryOptions之前的参数值。它是您作为参数传递的对象,用于更改默认的消息获取限制

另外,为了帮助您理解其中的逻辑,我们提供了一些代码示例:

//异步函数来处理诸如同步代码之类的承诺 异步函数加载用户{ 设page=1;//第一页开始点 //无限循环,因为我们不知道API中的用户总数 whiletrue{ //请求我们的假API并获取返回的JSON的唯一属性,这对本例很重要 let userList=等待获取`https://reqres.in/api/users?page=${page}`。然后response=>response.json.data; //检查我们是否有空响应 ifuserList.length{ //这只是用于插入一些DOM元素的普通JavaScript,忽略它,只是为了给这个示例添加一些视觉输出 userList.forEach用户=>{ 让section=document.querySelector'section', userElement=document.createElement'p'; userElement.innerText=user.email; section.appendChild用户元素; }; }否则{ //如果我们确实得到了一个空响应,我们就会跳出这个循环,函数执行结束 打破 } //增加我们的页码,这样我们就可以获得新的数据,而不是执行相同的请求 page++; } } //执行上面声明的函数 装载机用户;