【问题标题】:How to make a filter from bots? Discord.js如何从机器人制作过滤器?不和谐.js
【发布时间】:2021-05-25 07:35:04
【问题描述】:

我无法制作过滤器。

bot 显示了服务器的 6 个成员,以及 bot。

如何让机器人不包含在这个号码中

const guild = client.guilds.cache.get("74721732.........");
setInterval(function () {
   var memberCount = guild.members.filter(member => !member.user.bot).size;
   var memberCountChannel = client.channels.cache.get("81358139.........");
  memberCountChannel.setName(`Members: ${memberCount}`);
}, 1000);

【问题讨论】:

  • 根据discord docs,当member.user.bot 的值为真时,成员就是机器人。所以你的过滤器应该是正确的。你能在setInterval() 中添加console.log({guild.members}) 行并提供输出吗?
  • [对象对象]

标签: javascript discord discord.js


【解决方案1】:

您的过滤器的回调函数是正确的,它会从集合中删除所有机器人。

问题是guild.members 返回一个manager,而不是一个集合。这意味着它不会有filter() 方法。你应该使用guild.members.cache,因为它返回一个公会成员的collection,并且集合确实有一个.filter()方法:

const guild = client.guilds.cache.get('74721732.........');
setInterval(function () {
  const memberCount = guild.members.cache.filter((member) => !member.user.bot).size;
  const memberCountChannel = client.channels.cache.get('81358139.........');
  memberCountChannel.setName(`Members: ${memberCount}`);
}, 1000);

【讨论】:

  • 原来是,但是输出的是数字0。虽然应该是5
  • 我刚刚在我的机器人上检查了它,它按预期工作。你确定你的过滤器的回调函数没有错字吗?
  • 我仔细检查过,没关系。但写 0
  • 你能检查过滤器前的数字吗? console.log(guild.members.cache.size);
  • console.log(guild.members.cache.size); — 1
猜你喜欢
  • 2021-09-12
  • 1970-01-01
  • 2020-10-08
  • 2019-02-14
  • 2021-01-17
  • 2018-03-20
  • 2021-10-02
  • 2021-04-12
  • 2021-03-24
相关资源
最近更新 更多