【问题标题】:DiscordJS online members count [duplicate]DiscordJS 在线会员数量 [重复]
【发布时间】:2021-01-12 21:01:37
【问题描述】:

我正在制作我的不和谐管理员机器人(仅适用于我的服务器),并且我正在尝试进行在线会员计数器。我试过这个:

client.guilds.cache.get(ids.serverID).members
  .filter(m => m.presence.status === 'online').size;

它给出了这个错误:

var online = client.guilds.cache.get(ids.serverID).members.filter(m => m.presence.status === 'online').size;
                                                           ^
TypeError: client.guilds.cache.get(...).members.filter is not a function
    at Client.<anonymous> (/home/cyril/Documents/ALPHA-Admin/main.js:40:62)
    at Client.emit (events.js:315:20)
    at PresenceUpdateAction.handle (/home/cyril/Documents/ALPHA-Admin/node_modules/discord.js/src/client/actions/PresenceUpdate.js:39:19)
    at Object.module.exports [as PRESENCE_UPDATE] (/home/cyril/Documents/ALPHA-Admin/node_modules/discord.js/src/client/websocket/handlers/PRESENCE_UPDATE.js:4:33)
    at WebSocketManager.handlePacket (/home/cyril/Documents/ALPHA-Admin/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (/home/cyril/Documents/ALPHA-Admin/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (/home/cyril/Documents/ALPHA-Admin/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10)
    at WebSocket.onMessage (/home/cyril/Documents/ALPHA-Admin/node_modules/ws/lib/event-target.js:132:16)
    at WebSocket.emit (events.js:315:20)
    at Receiver.receiverOnMessage (/home/cyril/Documents/ALPHA-Admin/node_modules/ws/lib/websocket.js:825:20)

谁能帮帮我?谢谢。

【问题讨论】:

  • members 实际上是一个数组,还是一个对象?您可以将members 存储到一个数组中,然后评估Array.isArray(members) 吗?

标签: javascript discord discord.js


【解决方案1】:

members 属性不是一个数组,它是一个 GuildMemberManager,它的原型中没有 .filter() 方法。尝试访问您的成员列表的缓存,这将返回一个 Collection&lt;Snowflake, GuildMember&gt; 类型的集合,这种类型与 GuildMemberManager 不同,确实有一个 filter 方法,它将返回一个 Collection 然后您可以获得大小:

client.guilds.cache.get(ids.serverID).members.cache
  .filter(m => m.presence.status === 'online').size;

【讨论】:

  • 它认为它现在工作正常,它显示错误的数字!我的代码:pastebin.com/9qAfy1sQ,但它说 29 在线和 6 离线,即使 32 在线和 13 离线 + 9 机器人应该 ne 54 成员,它说这些奇怪的数字为什么?§
  • @nicoebd 这是因为它正在测量缓存的成员,它不会准确,因为某些成员不会被缓存。不幸的是,这是我们无法解决的问题。我不会执行成员计数命令,因为它永远不会准确,请专注于可以高度准确地完成的事情。
  • @Proto 所以你是说,我不能做准确的在线/离线统计,所以会员计数器(服务器上有多少会员)可以准确吗?至少在正常范围内......这个服务器现在有 54 个成员,在它存在大约 5 个月后,我认为它永远不会超过 1000,所以在这个范围内,成员计数准确吗?
  • 是的,没错
  • 非常感谢
猜你喜欢
  • 2019-03-04
  • 2021-02-13
  • 2019-12-13
  • 2022-01-02
  • 2021-03-05
  • 2021-10-20
  • 2018-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多