获取过去消息的功能停止工作。有啥办法解决吗?
Posted
技术标签:
【中文标题】获取过去消息的功能停止工作。有啥办法解决吗?【英文标题】:Function that gets past messages stopped working. Any way to fix?获取过去消息的功能停止工作。有什么办法解决吗? 【发布时间】:2021-05-02 04:53:04 【问题描述】:我从另一个*** question 获得了这个功能。我通过将 channel.fetchMessages
更改为 channel.messages.fetch
将其修复为与 Discord.js v12 一起使用。该函数一开始工作并且一切都很好,但是当我启动我的程序时它开始显示这个错误:“TypeError:无法读取未定义的属性'id'”这个错误发生在第55行,即last_id = messages.last().id;
我根本没有改变功能,它只是停止工作。有什么想法吗?
async function lots_of_messages_getter(channel, limit = 6000)
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;
【问题讨论】:
【参考方案1】:因为sum_messages
永远不会大于或等于limit
,因为它不是一个数字,它必须是sum_messages.length
并且在收到if(messages.size === 0)
的消息后检查也不会受到伤害
async function lots_of_messages_getter(channel, limit = 6000)
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);
if (messages.size === 0)
break;
sum_messages.push(...messages.array());
last_id = messages.last().id;
if (messages.size != 100 || sum_messages.length >= limit)
break;
return sum_messages;
【讨论】:
谢谢,确实帮了我大忙,但我还是不明白它是如何工作的,然后就停止工作了。以上是关于获取过去消息的功能停止工作。有啥办法解决吗?的主要内容,如果未能解决你的问题,请参考以下文章
更新到 watchOS 6 后,滚动视图停止工作,有啥变化吗?