首页 > 解决方案 > 如何通过 ID 获取用户

问题描述

我的机器人有一个 Whois/Userinfo 命令,它工作得很好,直到你不能为命令使用 ID,所以你必须 ping 用户,我想知道如何制作它,这样你就可以使用 ID 和 ping

    const Discord = require('discord.js');

    module.exports = {
        name: 'whois',
        description: "Clear messages!",
       async  execute(client, message, args) {
            let user;
            if (message.mentions.users.first()) {
                user = message.mentions.users.first();
            } else {
                user = message.author;
            }
            
            const member = message.guild.member(user);
            
            const embed = new Discord.MessageEmbed()
                .setColor("RANDOM")
                .setAuthor(`${user.tag}`, `${member.user.displayAvatarURL({ dynamic: true })}`,)
                .setThumbnail(`${member.user.displayAvatarURL({ dynamic: true })}`)
                .addField(`${user.tag}`, `${user}`, true)
                .addField("Joined The Server On:", `${member.joinedAt}`, true)
                
                .addField("Joined Discord At", member.user.createdAt)
    
                .addField("Nickname:", `${member.nickname !== null ? `${member.nickname}` : 'None'}`, true)
                .addField("Status:", user.presence.status, true)
                .addFields(
                    { name: 'User ID', value: `${user.id}` },
                    { name: 'Roles', value: member.roles.cache.map(role => role.toString()).join(' ')},
    
                    
                )
    
   
                
                .setFooter(`Replying to ${message.author.username}#${message.author.discriminator}`)
    
                message.channel.send(embed);
    
        }



   }
       

标签: javascriptnode.jsdiscorddiscord.js

解决方案


我们可以在定义某个变量时检查多个值。所以我们首先要检查消息中是否有ping,如果没有则检查第一个参数是否可以根据ID转换为用户,最后如果没有,则获取消息作者:

const user = message.mentions.users.first() || client.users.cache.get(args[0]) || message.author

推荐阅读