【发布时间】:2020-09-14 10:51:03
【问题描述】:
我正在尝试查找我所有公会的公会所有者 ID,以便在给定时间向他们发送直接消息。我目前的实现,我已经知道所有的公会ID,只是遍历它们:message.client.guilds.cache.get(guildID).ownerID 这目前工作并且很好,但我想知道当我增加我的公会数量时它的稳健性。我目前仅在 2 个公会上进行测试,但可能会达到 1000 个以上。
本网站上的许多较旧的教程和问题都建议不需要使用message.client.guilds 的.cache 属性,而只需像message.client.guilds.get(desired_property) 这样获得所需的属性但是当我尝试按照他们的建议进行操作时,我得到了一个错误。 This 问题与我遇到的问题有类似的问题,但是当我使用 message.client 的 .cache 属性时修复了它,这解决了我以前的问题。然后我想我找到了原因,因为this 对类似问题的回答告诉我all user objects have been cached
当我拥有超过 1000 个公会时,这意味着什么? 不用担心分片,这是我以后可以考虑的事情。
我对缓存的工作原理有一个松散的理解,但是当我进入更多公会时,这是否会崩溃,因为并非所有公会都会被缓存,因此当我使用 message.client.guilds.cache.get(guildID).ownerID 时,我只会获得那些的 ownerID已经被缓存的公会还是机器人一直在缓存的所有公会?如果当机器人开始拥有数千个公会时这不会总是返回所有的 ownerID,因此可能不是所有的公会都被缓存,有没有办法可以修复它,所以它总是会全部返回?
【问题讨论】:
标签: javascript caching discord.js future-proof