Discord.js 通过昵称获取用户

时间:2021-05-07 22:50:04

标签: node.js discord discord.js bots

我很难弄清楚

  1. 可以通过 discord.js npm 包通过昵称找到用户。
  2. 如何通过昵称查询用户?

我尝试了几件事,但没有任何东西返回昵称,我无法弄清楚他们的文档是如何工作的。

到目前为止,我还没有告诉我该怎么做。

我已经在我的代码中这样做了。

const { Client } = require('discord.js')
const discordClient = new Client()

discordClient.on('message', message => {
  if (message.author.bot) return
  if (message.content.startsWith('!gpwarn')) {
    // The command is something like '!gpwarn thomas'.
    // If his nick name is thomas but his username is john it doesn't work.
})

3 个答案:

答案 0 :(得分:0)

是的,而且非常简单。这样做:

const user = client.users.cache.find(user => user.username == "The user's name");

参考:

答案 1 :(得分:0)

为了满足您的确切要求,您将在公会成员缓存中搜索提供的昵称。但是,我个人建议为此使用直接标记或用户 ID,因为服务器中可以有多个人具有相同的昵称。

const U = message.guild.members.cache.find(E => E.nickname === 'NICKNAME')

按标签获取:

 const U = message.mentions.members.first()

通过 ID 获取:

 const U = message.guild.members.cache.find(U => U.id === 'IDHERE')

答案 2 :(得分:0)

首先您需要确定昵称参数,您可以通过拆分、切片和加入 message.content 来实现。


接下来我建议您使用 GuildMemberManager#fetch() 从公会中获取所有 GuildMembers,这样您就不会遇到成员未缓存的错误。

使用 async/await 处理 promise使用 Collection#find() 返回成员

const { Client } = require('discord.js')
const discordClient = new Client()

discordClient.on('message', async message => {
  if (message.author.bot) return
  if (message.content.startsWith('!gpwarn')) {
    // Returns all of the text after !gpwarn
    const query = message.content.split(' ').slice(1).join(' ').toLowerCase()
    const members = await message.guild.members.fetch()
    const memberToWarn = members.find(m => m.nickname.toLowerCase() === query)
    if (!memberToWarn) // No member found error
    console.log(memberToWarn) // [GuildMember]
  }
})