为什么client.guilds.cache.size 只说“0"?在我的游戏状态中,即使它在 2 个服务器中?

2022-01-10 00:00:00 javascript discord.js

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

i have seen many people who had trouble with client.guilds.size but I switched to the recently suggested client.guilds.cache.size. In my playing status, it only says "WATCHING my prefix | 0 servers." same happens for trying to fetch the member count and channel count.

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.

This is the script I am using to achieve that. I already have an Eval command, that returns 2 aswell.

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

I can't seem to find a solution to this somehow. I hope you can help me, if you need anything, tell me!

推荐答案

你的问题是你的client在你抓取guilds集合之前没有登录

Your issue is that your client has not logged in before you grab the guilds collection

您需要将该代码放入您的 ready 事件中.

You need to place that code inside your ready event.

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}`)
})

相关文章