【问题标题】:Discord.js Get the member in a guild by usernameDiscord.js 通过用户名获取公会成员
【发布时间】:2022-01-11 02:44:24
【问题描述】:

我试图在我的不和谐服务器上获取所有成员的用户名
然而,它只回馈了 8-9/25 个成员,包括 6 个 BOT

这是我的代码

const list = client.guilds.cache.get(msg.guildId); 
list.members.cache.each(r => {
   console.log(r.user.username)
})

除此之外,我也尝试过这些方法

const list = client.guilds.cache.get(msg.guildId); 
   list.members.cache.array().forEach(r => {
      console.log(r.user.username)
})
const user = client.users.cache.find(u => u.username == '//The Given username')
const user = msg.guild.roles.cache.get('//The Main Role in my Server')
             .members.map(m => m.user.username == '//The given username')
let user = client.users.cache.get('username', '//The given username');

但有时它只是返回我和我的 BOT 的用户名或未定义。

我正在尝试获取服务器上的所有成员,从中我可以发现用户与给定用户名具有相同的用户名,而不是标签或 ID

我打开了Gateway Intents,但没有帮助

请帮助我的项目,我真的需要你的所有建议

【问题讨论】:

  • 那么,您是想通过用户名获取所有公会用户的用户名还是特定用户?

标签: javascript discord discord.js


【解决方案1】:

使用.fetch() 缓存所有成员,并返回它们。确保你有GUILD_MEMBERS 意图:

list.members.fetch().then(m => {
  let members = m.map(u => u.user.username)
  console.log(members) //array of all members
  //you can also use "m.each(u => console.log(u.user.username))" to log each one individually
})

或使用async-await

const m = await list.members.fetch()
let members = m.map(u => u.user.username)
console.log(members)

【讨论】:

  • 删除 .cache 后,它可以工作了!!非常感谢
猜你喜欢
  • 2020-08-02
  • 1970-01-01
  • 2020-11-21
  • 2021-12-08
  • 2021-05-17
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多