如何通过用户名查找成员?

How to find member by username?

Discord.js 13.6.0 | Node.js 16.14.2

我想通过用户名查找成员,与在 bot 中一样 UnbelievaBoat (https://i.stack.imgur.com/WNPv5.png)

示例:用户名是WorldGod

输入例如?userinfo worl?userinfo WORLD 和机器人找到会员 WorldGod

代码示例:

const arg = args[0] or const arg = args.join(" ")

let member = message.guild.members.cache.filter(member => member.user.username.includes(arg))[0]

message.reply(`${member.id}`) or message.reply(`${member.user.id}`)

TypeError: 无法读取未定义的属性(读取 'id')

TypeError: 无法读取未定义的属性(读取 'user')

.includes() 函数 returns 一个布尔值,所以您要做的是基于该布尔值创建一个函数。 这是我为您制作的新代码。

// make members an array
let members = []
message.guild.members.cache.filter(mems => {
  // if users username includes the arg
  mems.user.username.includes(arg) ? 
  members.push(mems.user) // if so it pushes user into array 
  : null // else null
})

// this will send the user's name and id
message.reply(`${members[0].username} ${members[0].id}`)

这为成员创建一个数组,然后过滤公会的用户,如果用户名包含参数,它将把用户添加到数组中。

推送用户后,您可以根据需要访问该用户...您可以获得其头像URL、标签、ID、用户名等...

如果你想最终做到这一点,所以你列出了所有的选项,这将很好地工作,因为它们都在成员数组中,并且很容易映射。