我很难弄清楚
我尝试了几件事,但没有任何东西返回昵称,我无法弄清楚他们的文档是如何工作的。
到目前为止,我还没有告诉我该怎么做。
我已经在我的代码中这样做了。
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.
})
答案 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]
}
})