Added WIP info command.
This commit is contained in:
parent
01d4398b53
commit
48097b729d
|
@ -0,0 +1,122 @@
|
||||||
|
import { Guild, MessageEmbed } from "discord.js";
|
||||||
|
import moment from "moment";
|
||||||
|
import Command from "../core/command";
|
||||||
|
import {CommonLibrary} from "../core/lib";
|
||||||
|
import { verificationLevels, filterLevels, regions, flags } from "../defs/info";
|
||||||
|
|
||||||
|
export default new Command({
|
||||||
|
description: "Command to provide all sorts of info about the current server, a user, etc.",
|
||||||
|
async run($: CommonLibrary): Promise<any>
|
||||||
|
{
|
||||||
|
$.channel.send("Please provide an argument. `.help info`")
|
||||||
|
console.log(verificationLevels);
|
||||||
|
},
|
||||||
|
subcommands:
|
||||||
|
{
|
||||||
|
avatar: new Command({
|
||||||
|
description: "Shows your own, or another user's avatar.",
|
||||||
|
usage: "(<user>)",
|
||||||
|
async run($: CommonLibrary): Promise<any>
|
||||||
|
{
|
||||||
|
$.channel.send($.author.displayAvatarURL({ dynamic: true, size: 2048 }))
|
||||||
|
},
|
||||||
|
user: new Command({
|
||||||
|
description: "Shows your own, or another user's avatar.",
|
||||||
|
async run($: CommonLibrary): Promise<any>
|
||||||
|
{
|
||||||
|
$.channel.send($.args[0].displayAvatarURL({ dynamic: true, size: 2048 }))
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
|
||||||
|
guild: new Command({
|
||||||
|
description: "Displays info about the current guild.",
|
||||||
|
async run($: CommonLibrary): Promise<any>
|
||||||
|
{
|
||||||
|
if ($.guild) {
|
||||||
|
const roles = $.guild.roles.cache.sort((a, b) => b.position - a.position).map(role => role.toString());
|
||||||
|
const members = $.guild.members.cache;
|
||||||
|
const channels = $.guild.channels.cache;
|
||||||
|
const emojis = $.guild.emojis.cache;
|
||||||
|
|
||||||
|
const iconURL = $.guild.iconURL({ dynamic: true })
|
||||||
|
const embed = new MessageEmbed()
|
||||||
|
.setDescription(`**Guild information for __${$.guild.name}__**`)
|
||||||
|
.setColor('BLUE')
|
||||||
|
if (iconURL) embed.setThumbnail(iconURL)
|
||||||
|
.addField('General', [
|
||||||
|
`**❯ Name:** ${$.guild.name}`,
|
||||||
|
`**❯ ID:** ${$.guild.id}`,
|
||||||
|
`**❯ Owner:** ${$.guild.owner?.user.tag} (${$.guild.ownerID})`,
|
||||||
|
`**❯ Region:** ${regions[$.guild.region]}`,
|
||||||
|
`**❯ Boost Tier:** ${$.guild.premiumTier ? `Tier ${$.guild.premiumTier}` : 'None'}`,
|
||||||
|
`**❯ Explicit Filter:** ${filterLevels[$.guild.explicitContentFilter]}`,
|
||||||
|
`**❯ Verification Level:** ${verificationLevels[$.guild.verificationLevel]}`,
|
||||||
|
`**❯ Time Created:** ${moment($.guild.createdTimestamp).format('LT')} ${moment($.guild.createdTimestamp).format('LL')} ${moment($.guild.createdTimestamp).fromNow()})`,
|
||||||
|
'\u200b'
|
||||||
|
])
|
||||||
|
.addField('Statistics', [
|
||||||
|
`**❯ Role Count:** ${roles.length}`,
|
||||||
|
`**❯ Emoji Count:** ${emojis.size}`,
|
||||||
|
`**❯ Regular Emoji Count:** ${emojis.filter(emoji => !emoji.animated).size}`,
|
||||||
|
`**❯ Animated Emoji Count:** ${emojis.filter(emoji => emoji.animated).size}`,
|
||||||
|
`**❯ Member Count:** ${$.guild.memberCount}`,
|
||||||
|
`**❯ Humans:** ${members.filter(member => !member.user.bot).size}`,
|
||||||
|
`**❯ Bots:** ${members.filter(member => member.user.bot).size}`,
|
||||||
|
`**❯ Text Channels:** ${channels.filter(channel => channel.type === 'text').size}`,
|
||||||
|
`**❯ Voice Channels:** ${channels.filter(channel => channel.type === 'voice').size}`,
|
||||||
|
`**❯ Boost Count:** ${$.guild.premiumSubscriptionCount || '0'}`,
|
||||||
|
`\u200b`
|
||||||
|
])
|
||||||
|
.addField('Presence', [
|
||||||
|
`**❯ Online:** ${members.filter(member => member.presence.status === 'online').size}`,
|
||||||
|
`**❯ Idle:** ${members.filter(member => member.presence.status === 'idle').size}`,
|
||||||
|
`**❯ Do Not Disturb:** ${members.filter(member => member.presence.status === 'dnd').size}`,
|
||||||
|
`**❯ Offline:** ${members.filter(member => member.presence.status === 'offline').size}`,
|
||||||
|
'\u200b'
|
||||||
|
])
|
||||||
|
.addField(`Roles [${roles.length - 1}]`, roles.length < 10 ? roles.join(', ') : roles.length > 10 ? this.client.utils.trimArray(roles) : 'None')
|
||||||
|
.setTimestamp();
|
||||||
|
|
||||||
|
$.channel.send(embed)
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$.channel.send("Please execute this command in a guild.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
user: new Command({
|
||||||
|
description: "Displays info about mentioned user.",
|
||||||
|
async run($: CommonLibrary): Promise<any>
|
||||||
|
{
|
||||||
|
const member = $.args[0] || $.args[0].mentions.members.last() || $.guild?.members.cache.get($.args[0]) || $.member;
|
||||||
|
const roles = member.roles.cache
|
||||||
|
.sort((a: { position: number; }, b: { position: number; }) => b.position - a.position)
|
||||||
|
.map((role: { toString: () => any; }) => role.toString())
|
||||||
|
.slice(0, -1);
|
||||||
|
const userFlags = member.user.flags.toArray();
|
||||||
|
|
||||||
|
const embed = new MessageEmbed()
|
||||||
|
.setThumbnail(member.user.displayAvatarURL({ dynamic: true, size: 512 }))
|
||||||
|
.setColor(member.displayHexColor || 'BLUE')
|
||||||
|
.addField('User', [
|
||||||
|
`**❯ Username:** ${member.user.username}`,
|
||||||
|
`**❯ Discriminator:** ${member.user.discriminator}`,
|
||||||
|
`**❯ ID:** ${member.id}`,
|
||||||
|
`**❯ Flags:** ${userFlags.length ? userFlags.map((flag: string | number) => flags[flag]).join(', ') : 'None'}`,
|
||||||
|
`**❯ Avatar:** [Link to avatar](${member.user.displayAvatarURL({ dynamic: true })})`,
|
||||||
|
`**❯ Time Created:** ${moment(member.user.createdTimestamp).format('LT')} ${moment(member.user.createdTimestamp).format('LL')} ${moment(member.user.createdTimestamp).fromNow()}`,
|
||||||
|
`**❯ Status:** ${member.user.presence.status}`,
|
||||||
|
`**❯ Game:** ${member.user.presence.game || 'Not playing a game.'}`
|
||||||
|
])
|
||||||
|
.addField('Member', [
|
||||||
|
`**❯ Highest Role:** ${member.roles.highest.id === $.guild?.id ? 'None' : member.roles.highest.name}`,
|
||||||
|
`**❯ Server Join Date:** ${moment(member.joinedAt).format('LL LTS')}`,
|
||||||
|
`**❯ Hoist Role:** ${member.roles.hoist ? member.roles.hoist.name : 'None'}`,
|
||||||
|
`**❯ Roles:** [${roles.length}]: ${roles.length < 10 ? roles.join(', ') : roles.length > 10 ? this.client.utils.trimArray(roles) : 'None'}`,
|
||||||
|
]);
|
||||||
|
$.channel.send(embed)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
|
@ -0,0 +1,45 @@
|
||||||
|
// Flags a user can have.
|
||||||
|
// They're basically your profile badges.
|
||||||
|
export const flags: {[index: string]:any} = {
|
||||||
|
DISCORD_EMPLOYEE: 'Discord Employee',
|
||||||
|
DISCORD_PARTNER: 'Discord Partner',
|
||||||
|
BUGHUNTER_LEVEL_1: 'Bug Hunter (Level 1)',
|
||||||
|
BUGHUNTER_LEVEL_2: 'Bug Hunter (Level 2)',
|
||||||
|
HYPESQUAD_EVENTS: 'HypeSquad Events',
|
||||||
|
HOUSE_BRAVERY: 'House of Bravery',
|
||||||
|
HOUSE_BRILLIANCE: 'House of Brilliance',
|
||||||
|
HOUSE_BALANCE: 'House of Balance',
|
||||||
|
EARLY_SUPPORTER: 'Early Supporter',
|
||||||
|
TEAM_USER: 'Team User',
|
||||||
|
SYSTEM: 'System',
|
||||||
|
VERIFIED_BOT: 'Verified Bot',
|
||||||
|
VERIFIED_DEVELOPER: 'Verified Bot Developer',
|
||||||
|
};
|
||||||
|
|
||||||
|
export const filterLevels: {[index: string]:any} = {
|
||||||
|
DISABLED: 'Off',
|
||||||
|
MEMBERS_WITHOUT_ROLES: 'No Role',
|
||||||
|
ALL_MEMBERS: 'Everyone',
|
||||||
|
};
|
||||||
|
export const verificationLevels: {[index: string]:any} = {
|
||||||
|
NONE: 'None',
|
||||||
|
LOW: 'Low',
|
||||||
|
MEDIUM: 'Medium',
|
||||||
|
HIGH: '(╯°□°)╯︵ ┻━┻',
|
||||||
|
VERY_HIGH: '┻━┻ ミヽ(ಠ益ಠ)ノ彡┻━┻',
|
||||||
|
};
|
||||||
|
export const regions: {[index: string]:any} = {
|
||||||
|
brazil: 'Brazil',
|
||||||
|
europe: 'Europe',
|
||||||
|
hongkong: 'Hong Kong',
|
||||||
|
india: 'India',
|
||||||
|
japan: 'Japan',
|
||||||
|
russia: 'Russia',
|
||||||
|
singapore: 'Singapore',
|
||||||
|
southafrica: 'South Africa',
|
||||||
|
sydney: 'Sydney',
|
||||||
|
'us-central': 'US Central',
|
||||||
|
'us-east': 'US East',
|
||||||
|
'us-west': 'US West',
|
||||||
|
'us-south': 'US South',
|
||||||
|
};
|
Loading…
Reference in New Issue