首页 > 解决方案 > 使用用户 ID Discord.js v13 获取 GuildMember 对象

问题描述

一般来说,我对 discord.js 和 Javascript 还是很陌生。在这里,我创建了一个简单的 userinfo 命令,它获取用户的数据并将其整齐地嵌入,如下所示。您还可以看到该命令要求作者/mod 提及用户以获取结果嵌入,但我想通过成员的不和谐用户 ID 获得相同的结果。我试过message.mentions.users.first() || message.guild.member.length(args[0])了,但这会产生很多问题。所以基本上我如何通过不和谐 ID 使用相同的命令/代码。

const moment = require('moment');
const Discord = require('discord.js');
const { MessageEmbed } = require('discord.js')
module.exports = {
description: 'whois',
run: async (client, message, args) => {
    const user = message.mentions.users.first()

        const embed = new MessageEmbed()
            .setTitle(`**PASSION ISLAND MODERATIONS**`)
            .setColor('#ffc0cb')
            .setThumbnail(user.displayAvatarURL({ dynamic: true }))
            .addField('Username', user.username)
            .addField('User Id', user.id)
            .addField('Account Type', `${user.bot ? 'Bot' : 'Human'}`)
            .addField(`Roles`, `${message.member.roles.cache.size}`)
            .addField(`Joined At`, `${moment.utc(message.member.joinedAt).format('ddd, MMM Do, YYYY, h:mm a')}`)
            .addField(`created At`, `${moment.utc(message.member.createdAt).format('ddd, MMM Do, YYYY, h:mm a')}`)
            .setTimestamp()
            .setFooter(`Requested by ${message.author.username}`)
                 message.channel.send({ embeds: [embed] })


},
}

标签: javascriptdiscord.js

解决方案


您可以尝试使用


    let user; 
    if(message.mentions.members.first()) {
     user = message.mentions.members.first()
     } else { 
let x = await message.guild.members.cache.get(`${args[0]}`)
user = x.user;
}

这适用于 ID,因为您可以在.get()函数中传递雪花。


推荐阅读