woomy-v2/bot/commands/Utility/userinfo.js
2022-12-12 13:09:56 +11:00

71 lines
No EOL
2.9 KiB
JavaScript

const Command = require('../../base/Command.js');
const dayjs = require('dayjs');
dayjs.extend(require('dayjs/plugin/relativeTime'));
module.exports = class Avatar extends Command {
constructor (name, category) {
super (name, category);
this.name = name,
this.description = 'View someone\'s public account information',
this.options = [
{
type: 6,
name: 'user',
description: 'The user who you want '
},
],
this.usage = '/userinfo [user]',
this.friendlyOptions = '`user` - The user to get information on (optional)',
this.category = category;
}
async run (client, interaction, data) { //eslint-disable-line no-unused-vars
const target = await interaction.options.getUser('user') ?? interaction.user;
const user = await client.users.fetch(target.id, {force: true});
const member = await interaction.guild.members.fetch(target.id, {force: true});
const badges = [];
if (client.config.devIds.includes(user.id)) badges.push('<:Woomy_Developer:816822318289518622> ');
if (user.id === member.guild.ownerId) badges.push('<:owner:685703193694306331>');
if (user.bot) badges.push('<:bot:686489601678114859>');
const roles = [];
for (const roleId of member._roles) {
if (roles.length === 45) {
roles.push(`and ${member.roles.length - 45} more`);
break;
}
roles.push(`<@&${roleId}>`);
}
const embed = new client.EmbedBuilder()
.setTitle(member.user.username + '#' + member.user.discriminator)
.setColor(user.hexAccentColor ?? member.displayHexColor)
.setThumbnail(member.displayAvatarURL({extension: 'png', 'size': 4096}))
.addFields([
{
name: 'Display Name', value: member.nick || user.username, inline: true
},
{
name: 'User ID', value: user.id, inline: true
},
{
name: 'Highest Role', value: `<@&${member.roles.highest.id}>`, inline: true
},
{
name: 'Roles:', value: roles.join(' ')
},
{
name: 'Joined Server', value: `${dayjs(member.joinedAt).format('D/M/YYYY HH:mm (UTCZ)')}\n*${dayjs().to(member.joinedAt)}*`, inline: true
},
{
name: 'Joined Discord', value: `${dayjs(member.user.createdAt).format('D/M/YYYY HH:mm (UTCZ)')}\n*${dayjs().to(member.user.createdAt)}*`, inline: true
}
]);
if (badges.length > 0) {
embed.setDescription(badges.join(' '));
}
return await interaction.reply({embeds: [embed]});
}
};