mirror of
https://github.com/arthur-pbty/xiao.git
synced 2026-06-03 15:07:42 +02:00
65 lines
2.1 KiB
JavaScript
65 lines
2.1 KiB
JavaScript
const Command = require('../../structures/Command');
|
|
const moment = require('moment');
|
|
const { MessageEmbed } = require('discord.js');
|
|
const { stripIndents } = require('common-tags');
|
|
const { trimArray } = require('../../util/Util');
|
|
|
|
module.exports = class UserCommand extends Command {
|
|
constructor(client) {
|
|
super(client, {
|
|
name: 'user',
|
|
aliases: ['user-info', 'member', 'member-info'],
|
|
group: 'info',
|
|
memberName: 'user',
|
|
description: 'Responds with detailed information on a user.',
|
|
clientPermissions: ['EMBED_LINKS'],
|
|
args: [
|
|
{
|
|
key: 'user',
|
|
prompt: 'Which user would you like to get information on?',
|
|
type: 'user',
|
|
default: msg => msg.author
|
|
}
|
|
]
|
|
});
|
|
}
|
|
|
|
async run(msg, { user }) {
|
|
const embed = new MessageEmbed()
|
|
.setAuthor(user.tag)
|
|
.setThumbnail(user.displayAvatarURL({ format: 'png', dynamic: true }));
|
|
let description = stripIndents`
|
|
**General User Info:**
|
|
• ID: ${user.id}
|
|
• Discord Join Date: ${moment.utc(user.createdAt).format('MM/DD/YYYY h:mm A')}
|
|
• ${user.bot ? 'Bot' : 'Not a Bot'}
|
|
`;
|
|
if (msg.channel.type === 'text') {
|
|
try {
|
|
const member = await msg.guild.members.fetch(user.id);
|
|
const defaultRole = msg.guild.roles.cache.get(msg.guild.id);
|
|
const roles = member.roles.cache
|
|
.filter(role => role.id !== defaultRole.id)
|
|
.sort((a, b) => b.position - a.position)
|
|
.map(role => role.name);
|
|
description += '\n\n';
|
|
description += stripIndents`
|
|
**Server Member Info:**
|
|
• Nickname: ${member.nickname || 'None'}
|
|
• Server Join Date: ${moment.utc(member.joinedAt).format('MM/DD/YYYY h:mm A')}
|
|
• Highest Role: ${member.roles.highest.id === defaultRole.id ? 'None' : member.roles.highest.name}
|
|
• Hoist Role: ${member.roles.hoist ? member.roles.hoist.name : 'None'}
|
|
|
|
**Roles (${roles.length})**
|
|
• ${roles.length ? trimArray(roles, 6).join(', ') : 'None'}
|
|
`;
|
|
embed.setColor(member.displayHexColor);
|
|
} catch {
|
|
embed.setFooter('Failed to resolve member, showing basic user information instead.');
|
|
}
|
|
}
|
|
embed.setDescription(description);
|
|
return msg.embed(embed);
|
|
}
|
|
};
|