woomy-v2/bot/commands/Utility/userinfo.js
2021-03-13 14:33:03 +11:00

78 lines
No EOL
3.2 KiB
JavaScript

const dayjs = require('dayjs');
dayjs.extend(require('dayjs/plugin/relativeTime'));
module.exports = class {
constructor (name, category) {
this.name = name,
this.category = category,
this.enabled = true,
this.devOnly = false,
this.aliases = ['user'],
this.userPerms = [],
this.botPerms = [],
this.cooldown = 2000,
this.help = {
description: 'Get information on a user.',
arguments: '[user]',
details: '',
examples: 'userinfo\nuserinfo Octavia\nuserinfo @Animals'
};
}
async run (client, message, args, data) { //eslint-disable-line no-unused-vars
let member = message.member;
if (args[0]) {
if (message.mentions.length > 0) {
member = await client.functions.getMember(message.channel.guild, message.mentions[0].id);
} else {
member = await client.functions.validateUserID(message.channel.guild, args[0]);
if (!member) {
member = await message.channel.guild.searchMembers(args.join(' '), 2);
if (member.length === 0) return message.channel.createMessage(
`${client.emojis.userError} No users found. Check for mispellings, or ping the user instead.`
);
if (member.length > 1) return message.channel.createMessage(
`${client.emojis.userError} Found more than one user, try refining your search or pinging the user instead.`
);
member = member[0];
}
}
}
const badges = [];
if (client.config.ownerIDs.includes(member.id)) badges.push('<:Woomy_Developer:816822318289518622> ');
if (member.id === member.guild.ownerID) badges.push('<:owner:685703193694306331>');
if (member.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.RichEmbed()
.setTitle(member.user.username + '#' + member.user.discriminator)
.setColour(client.functions.displayHexColour(message.channel.guild, member))
.setThumbnail(member.user.avatarURL || member.user.defaultAvatarURL)
.addField('Display Name', member.nick || member.user.username, true)
.addField('User ID', member.id, true)
.addField('Highest Role', `<@&${client.functions.highestRole(member).id}>`, true)
.addField('Roles:', roles.join(' '))
.addField('Joined Server', `${dayjs(member.joinedAt).format('D/M/YYYY HH:mm (UTCZ)')}\n*${dayjs().to(member.joinedAt)}*`, true)
.addField('Joined Discord', `${dayjs(member.user.createdAt).format('D/M/YYYY HH:mm (UTCZ)')}\n*${dayjs().to(member.user.createdAt)}*`, true);
if (badges.length > 0) embed.setDescription(badges.join(' '));
message.channel.createMessage({ embed: embed });
}
};