我如何循环遍历数据库中的每个公会成员(quick.db)

Posted

技术标签:

【中文标题】我如何循环遍历数据库中的每个公会成员(quick.db)【英文标题】:How do i loop through for each guild member in database (quick.db) 【发布时间】:2021-02-05 13:25:33 【问题描述】:

我正在尝试制定排行榜命令,我想出了如何为我的所有机器人用户执行此操作,但我不知道如何为一个公会执行此操作 我不断收到此错误:TypeError: message.guild.members.forEach is not a function

代码:

const db = require('quick.db')
const ms = require('parse-ms')
const Discord = require(`discord.js`);
module.exports = 
    name: 'lb',
    execute(message) 
    const client = message.client
let prefix = db.get(`prefix_$message.guild.id`)
let defaultprefix = "$$"
if(prefix === null) prefix = defaultprefix
let money = message.guild.members.forEach(member => db.get(`money_$member.id`)).sort((a, b) => b.data - a.data)
money.length = 15;
var finalLb = ``;
for (var i in money) 
finalLb += `**#$money.indexOf(money[i])+1** $client.users.cache.get(money[i].ID.split('_')[1]) ? client.users.cache.get(money[i].ID.split('_')[1]).tag : `Deleted User#0000` - $money[i].data\n`;


      const embed = new Discord.MessageEmbed()
      .setAuthor(`Top 15 richest users in this server`)
      .setDescription(finalLb)
      .setThumbnail(message.guild.iconURL( dynamic: true ))
      .setColor(`990000`)      
      .setTimestamp()
  
      message.channel.send(embed);
    
```

【问题讨论】:

如果您使用的是 discord.js v12.x,您需要通过缓存属性传递它。 message.guild.members.cache.forEach() 【参考方案1】:

Guild 的属性.members 指的是GuildMemberManager。要获取成员的实际集合,您需要获取GuildMemberManager.cache 属性。

将您的代码更改为以下内容并尝试一下:

let money = message.guild.members.cache.forEach(<Code here>);

【讨论】:

如果此答案解决了您的问题,请将此答案标记为已接受。这样,如果其他人遇到类似问题,它将帮助他们更快地找到解决方案

以上是关于我如何循环遍历数据库中的每个公会成员(quick.db)的主要内容,如果未能解决你的问题,请参考以下文章

我将如何定义与机器人同一个公会的每个成员,然后发送消息

如何检查用户是不是在公会中

如何获取公会 Discord.js 中的成员列表

如何以对象为成员循环遍历纯 JavaScript 对象

如何获取我服务器所有成员的公会信息

如何获取大型公会 discord.js 的所有成员