【问题标题】:Why does client.guilds.cache.size only say "0" in my playing status even if it's in 2 servers?为什么client.guilds.cache.size在我的播放状态中只说“0”,即使它在2个服务器中?
【发布时间】:2020-09-10 18:42:01
【问题描述】:

我见过很多人对client.guilds.size 有问题,但我改用了最近建议的client.guilds.cache.size。在我的播放状态中,它只显示"WATCHING my prefix | 0 servers." 尝试获取成员数和频道数时会发生同样的情况。

let activities = [ `${client.guilds.cache.size} servers`, `${client.channels.cache.size} channels`, `${client.users.cache.size} users` ], i = 0;

setInterval(() => client.user.setActivity(`${prefix}help | ${activities[i ++ % activities.length]}`, { type: "WATCHING"}),`${process.env.INTERVAL}`)

这是我用来实现这一目标的脚本。 我已经有一个 Eval 命令,它也返回 2。

我似乎无法以某种方式找到解决方案。 我希望你能帮助我,如果你需要什么,请告诉我!

【问题讨论】:

  • 你在哪里有这个代码 sn-p?
  • 你是每次更新activities,还是只在程序开始时设置?
  • @Syntle 我尝试了多个位置,但 let activities 位于顶部,所有 const 都在其中,setInterval() 紧随其后。
  • @theusaf 它只在程序开始时设置...那我该如何更新呢?
  • 可以在区间函数中使用activities = [ `${client.guilds.cache.size} servers`, `${client.channels.cache.size} channels`, `${client.users.cache.size} users` ],也可以放在单独的区间上。基本上,当你改变你的状态时,继续获取缓存。

标签: javascript discord.js


【解决方案1】:

您的问题是您的client 在您获取guilds 集合之前尚未登录

您需要将该代码放在您的 ready 事件中。

client.on('ready', () => {
  let activities = [ `${client.guilds.cache.size} servers`, `${client.channels.cache.size} channels`, `${client.users.cache.size} users` ], i = 0;

  setInterval(() => client.user.setActivity(`${prefix}help | ${activities[i ++ % activities.length]}`, { type: "WATCHING"}),`${process.env.INTERVAL}`)
})

【讨论】:

  • 谢谢,成功了!我结合了你和 theusaf 的建议让它现在工作!谢谢。
猜你喜欢
  • 1970-01-01
  • 2022-01-13
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多