diff --git a/src/commands/roleinfo.ts b/src/commands/roleinfo.ts new file mode 100644 index 0000000..a55df68 --- /dev/null +++ b/src/commands/roleinfo.ts @@ -0,0 +1,73 @@ +import { Message } from 'eris'; +import { Client, Command, RichEmbed } from '../class'; + +export default class Roleinfo extends Command { + constructor(client: Client) { + super(client); + this.name = 'roleinfo'; + this.description = 'Get information about a role.'; + this.usage = "roleinfo [role ID or role name]" + this.permissions = 0; + this.guildOnly = true; + this.enabled = true; + } + + public async run(message: Message, args: any) { + try { + if (!args[0]) return this.client.createMessage(message.channel.id, `${this.client.util.emojis.ERROR} You need to specifiy a role ID or a role name.`); + + let role: any; + if (!isNaN(args[0])) { // if it's a role id + // @ts-ignore + role = message.channel.guild.roles.find((role) => role.id == args[0]); + } else if (isNaN(args[0])) { // if it's a role name + args = args.join(' '); + // @ts-ignore + role = message.channel.guild.roles.find((role) => role.name == args); + } + if (!role) return this.client.createMessage(message.channel.id, `${this.client.util.emojis.ERROR} Could not find role.`); + + const ms = role.createdAt; + const date = new Date(ms).toLocaleDateString('en-us'); + const time = new Date(ms).toLocaleTimeString('en-us'); + + const perms = role.permissions; + let permsArray: any = []; + if (perms.has('administrator')) permsArray.push('Administrator'); + if (perms.has('manageGuild')) permsArray.push('Manage Server'); + if (perms.has('manageChannels')) permsArray.push('Manage Channels'); + if (perms.has('manageRoles')) permsArray.push('Manage Roles'); + if (perms.has('manageMessages')) permsArray.push('Manage Messages'); + if (perms.has('manageNicknames')) permsArray.push('Manage Nicknames'); + if (perms.has('manageEmojis')) permsArray.push('Manage Emojis'); + if (perms.has('banMembers')) permsArray.push('Ban Members'); + if (perms.has('kickMembers')) permsArray.push('Kick Members'); + + let hasPerms: boolean; + if (permsArray.length > 0) { + permsArray = permsArray.join(', '); + hasPerms = true; + } + + let embed = new RichEmbed() + embed.setDescription(`<@&${role.id}> ID: \`${role.id}\``) + embed.setAuthor(`${message.author.username}#${message.author.discriminator}`, message.author.avatarURL) + embed.setColor(role.color) + embed.addField("Name", role.name, true) + embed.addField("Color", `#${role.color.toString(16)}`, true) + embed.addField("Hoisted", role.hoist.toString(), true) + embed.addField("Position", role.position.toString(), true) + embed.addField("Creation Date", `${date} ${time}`, true) + embed.addField("Mentionnable", role.mentionable.toString(), true) + embed.setFooter(this.client.user.username, this.client.user.avatarURL) + embed.setTimestamp() + + if (hasPerms) { + embed.fields.push({ name: 'Permissions', value: permsArray, inline: false }); + } + message.channel.createMessage({embed: embed}); + } catch (err) { + this.client.createMessage(message.channel.id, `${this.client.util.emojis.ERROR} An unexpected error has occured.`); + } + } +}