aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/commands/moulberry-bush/capeperms.ts111
-rw-r--r--src/lib/extensions/Util.ts30
2 files changed, 141 insertions, 0 deletions
diff --git a/src/commands/moulberry-bush/capeperms.ts b/src/commands/moulberry-bush/capeperms.ts
new file mode 100644
index 0000000..0588696
--- /dev/null
+++ b/src/commands/moulberry-bush/capeperms.ts
@@ -0,0 +1,111 @@
+import { Message } from 'discord.js';
+import got from 'got';
+import { BotCommand } from '../../lib/extensions/BotCommand';
+
+interface Capeperms {
+ success: boolean;
+ perms: User[];
+}
+interface User {
+ _id: string;
+ perms: string[];
+}
+
+export default class CapePermsCommand extends BotCommand {
+ private nameMap = {
+ patreon1: 'Patreon Tier 1',
+ patreon2: 'Patreon Tier 2',
+ fade: 'Fade',
+ contrib: 'Contributor',
+ nullzee: 'Nullzee',
+ gravy: 'ThatGravyBoat',
+ space: 'Space',
+ mcworld: 'Minecraft World',
+ lava: 'Lava',
+ packshq: 'PacksHQ',
+ mbstaff: "Moulberry's Bush staff",
+ thebakery: "Biscuit's Bakery",
+ negative: 'Negative',
+ void: 'Void',
+ ironmoon: 'IRONM00N',
+ krusty: 'Krusty',
+ furf: 'FurfSky Reborn',
+ soldier: 'Soldier',
+ dsm: "Danker's Skyblock Mod",
+ zera: 'Zera',
+ tunnel: 'Tunnel',
+ alexxoffi: 'Alexxoffi',
+ parallax: 'Parallax',
+ jakethybro: 'Jakethybro',
+ planets: 'Planets'
+ };
+ public constructor() {
+ super('capeperms', {
+ aliases: ['capeperms', 'capeperm'],
+ category: "Moulberry's Bush",
+ description: {
+ content: 'A command to see what capes someone has access to.',
+ usage: 'capeperms <user>',
+ examples: ['capeperms IRONM00N']
+ },
+ args: [
+ {
+ id: 'user',
+ type: 'string',
+ prompt: {
+ start: 'Who would you like to see the cape permissions of?',
+ retry:
+ '<:error:837123021016924261> Choose someone to see the capes their available capes.',
+ optional: false
+ }
+ }
+ ],
+ clientPermissions: ['EMBED_LINKS', 'SEND_MESSAGES'],
+ channel: 'guild'
+ });
+ }
+ public async exec(
+ message: Message,
+ { user }: { user: string }
+ ): Promise<Message> {
+ let capeperms: Capeperms, uuid: string;
+ try {
+ uuid = await this.client.util.mcUUID(user);
+ } catch (e) {
+ return message.util.reply(
+ `<:error:837123021016924261> \`${user}\` doesn't appear to be a valid username.`
+ );
+ }
+
+ try {
+ capeperms = await got
+ .get('http://moulberry.codes/permscapes.json')
+ .json();
+ } catch (error) {
+ capeperms = null;
+ }
+ if (capeperms == null) {
+ return message.util.reply(
+ `<:error:837123021016924261> There was an error finding cape perms for \`${user}\`.`
+ );
+ } else {
+ if (capeperms?.perms) {
+ const foundUser = capeperms.perms.find((u) => u._id === uuid);
+ if (foundUser == null)
+ return message.util.reply(
+ `<:error:837123021016924261> \`${user}\` does not appear to have any capes.`
+ );
+ const userPerm: string[] = foundUser.perms;
+ const embed = this.client.util
+ .createEmbed(this.client.util.colors.default)
+ .setTitle(`${user}'s Capes`)
+ .setDescription(userPerm.join('\n'));
+ await message.util.reply(embed);
+ } else {
+ return message.util.reply(
+ `<:error:837123021016924261> There was an error finding cape perms for ${user}.`
+ );
+ }
+ }
+ }
+}
diff --git a/src/lib/extensions/Util.ts b/src/lib/extensions/Util.ts
index 4942bb8..771876b 100644
--- a/src/lib/extensions/Util.ts
+++ b/src/lib/extensions/Util.ts
@@ -12,6 +12,29 @@ interface hastebinRes {
key: string;
}
+export interface uuidRes {
+ uuid: string;
+ username: string;
+ username_history?:
+ | {
+ username: string;
+ }[]
+ | null;
+ textures: {
+ custom: boolean;
+ slim: boolean;
+ skin: {
+ url: string;
+ data: string;
+ };
+ raw: {
+ value: string;
+ signature: string;
+ };
+ };
+ created_at: string;
+}
+
export class Util extends ClientUtil {
/**
* The client of this ClientUtil
@@ -241,4 +264,11 @@ export class Util extends ClientUtil {
if (color) embed = embed.setColor(color);
return embed;
}
+
+ public async mcUUID(username: string): Promise<string> {
+ const apiRes = (await got
+ .get(`https://api.ashcon.app/mojang/v2/user/${username}`)
+ .json()) as uuidRes;
+ return apiRes.uuid;
+ }
}