diff --git a/src/commands/roleinfo.ts b/src/commands/roleinfo.ts new file mode 100644 index 0000000..5b501f7 --- /dev/null +++ b/src/commands/roleinfo.ts @@ -0,0 +1,99 @@ +import { Message } from 'eris'; +import { Client, Command } from '../class'; + +export default class Roleinfo extends Command { + constructor(client: Client) { + super(client); + this.name = 'roleinfo'; + this.description = 'Get information about a role.'; + this.permissions = 0; + this.guildOnly = true; + this.enabled = true; + } + + public async run(message: Message, args: Array) { + 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 + // @ts-ignore + role = message.channel.guild.roles.find((role) => role.name == args[0]); + } + + 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; + } + + const embed = { embed: { + description: `<@&${role.id}> ID: \`${role.id}\``, + author: { + name: `${message.author.username}#${message.author.discriminator}`, + icon_url: message.author.avatarURL, + }, + color: role.color, + fields: [ + { + name: 'Name', + value: role.name, + inline: true, + }, + { + name: 'Color', + value: `#${role.color.toString(16)}`, + inline: true, + }, + { + name: 'Hoisted', + value: role.hoist, + inline: true, + }, + { + name: 'Position', + value: role.position, + inline: true, + }, + { + name: 'Creation Date', + value: `${date} ${time}`, + inline: true, + }, + { + name: 'Mentionable', + value: role.mentionable, + inline: true, + }, + ], + footer: { + text: `${this.client.user.username}`, + icon_url: this.client.user.avatarURL, + }, + timestamp: new Date(), + } }; + + if (hasPerms) { + embed.embed.fields.push({ name: 'Permissions', value: permsArray, inline: false }); + } + message.channel.createMessage(embed); + } +}