aboutsummaryrefslogtreecommitdiff
path: root/src/commands/moulberry-bush
diff options
context:
space:
mode:
Diffstat (limited to 'src/commands/moulberry-bush')
-rw-r--r--src/commands/moulberry-bush/capeperms.ts50
-rw-r--r--src/commands/moulberry-bush/giveawayping.ts12
-rw-r--r--src/commands/moulberry-bush/level.ts10
-rw-r--r--src/commands/moulberry-bush/rule.ts86
4 files changed, 106 insertions, 52 deletions
diff --git a/src/commands/moulberry-bush/capeperms.ts b/src/commands/moulberry-bush/capeperms.ts
index 0588696..7a79666 100644
--- a/src/commands/moulberry-bush/capeperms.ts
+++ b/src/commands/moulberry-bush/capeperms.ts
@@ -1,3 +1,6 @@
+import { ApplicationCommandOptionType } from 'discord-api-types';
+import { MessageEmbed } from 'discord.js';
+import { CommandInteraction } from 'discord.js';
import { Message } from 'discord.js';
import got from 'got';
import { BotCommand } from '../../lib/extensions/BotCommand';
@@ -61,20 +64,24 @@ export default class CapePermsCommand extends BotCommand {
}
],
clientPermissions: ['EMBED_LINKS', 'SEND_MESSAGES'],
- channel: 'guild'
+ channel: 'guild',
+ slashCommandOptions: [
+ {
+ type: ApplicationCommandOptionType.STRING,
+ name: 'user',
+ description:
+ 'The username of the player to see the cape permissions of',
+ required: true
+ }
+ ]
});
}
- public async exec(
- message: Message,
- { user }: { user: string }
- ): Promise<Message> {
+ private async getResponse(user: string): Promise<string | MessageEmbed> {
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.`
- );
+ return `<:error:837123021016924261> \`${user}\` doesn't appear to be a valid username.`;
}
try {
@@ -85,27 +92,34 @@ export default class CapePermsCommand extends BotCommand {
capeperms = null;
}
if (capeperms == null) {
- return message.util.reply(
- `<:error:837123021016924261> There was an error finding cape perms for \`${user}\`.`
- );
+ return `<: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.`
- );
+ return `<: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);
+ return embed;
} else {
- return message.util.reply(
- `<:error:837123021016924261> There was an error finding cape perms for ${user}.`
- );
+ return `<:error:837123021016924261> There was an error finding cape perms for ${user}.`;
}
}
}
+ public async exec(
+ message: Message,
+ { user }: { user: string }
+ ): Promise<void> {
+ await message.reply(await this.getResponse(user));
+ }
+
+ public async execSlash(
+ message: CommandInteraction,
+ { user }: { user: string }
+ ): Promise<void> {
+ await message.reply(await this.getResponse(user));
+ }
}
diff --git a/src/commands/moulberry-bush/giveawayping.ts b/src/commands/moulberry-bush/giveawayping.ts
index e96b073..d99f475 100644
--- a/src/commands/moulberry-bush/giveawayping.ts
+++ b/src/commands/moulberry-bush/giveawayping.ts
@@ -43,14 +43,14 @@ export default class GiveawayPingCommand extends BotCommand {
'<:error:837123021016924261> This command may only be run in giveaway channels.'
);
await message.delete().catch(() => undefined);
- const webhooks = await (message.channel as
- | TextChannel
- | NewsChannel).fetchWebhooks();
+ const webhooks = await (
+ message.channel as TextChannel | NewsChannel
+ ).fetchWebhooks();
let webhookClient: WebhookClient;
if (webhooks.size < 1) {
- const webhook = await (message.channel as
- | TextChannel
- | NewsChannel).createWebhook('Giveaway ping webhook');
+ const webhook = await (
+ message.channel as TextChannel | NewsChannel
+ ).createWebhook('Giveaway ping webhook');
webhookClient = new WebhookClient(webhook.id, webhook.token);
} else {
const webhook = webhooks.first();
diff --git a/src/commands/moulberry-bush/level.ts b/src/commands/moulberry-bush/level.ts
index ab41f42..ab08361 100644
--- a/src/commands/moulberry-bush/level.ts
+++ b/src/commands/moulberry-bush/level.ts
@@ -1,5 +1,6 @@
import { ApplicationCommandOptionType } from 'discord-api-types';
import { Message } from 'discord.js';
+import { CommandInteractionOption } from 'discord.js';
import { CommandInteraction } from 'discord.js';
import { User } from 'discord.js';
import { BotCommand } from '../../lib/extensions/BotCommand';
@@ -51,9 +52,10 @@ export default class LevelCommand extends BotCommand {
async exec(message: Message, { user }: { user?: User }): Promise<void> {
await message.reply(await this.getResponse(user || message.author));
}
- async execSlash(message: CommandInteraction): Promise<void> {
- const user =
- message.options.find((o) => o.name === 'user')?.user || message.user;
- await message.reply(await this.getResponse(user));
+ async execSlash(
+ message: CommandInteraction,
+ { user }: { user?: CommandInteractionOption }
+ ): Promise<void> {
+ await message.reply(await this.getResponse(user?.user || message.user));
}
}
diff --git a/src/commands/moulberry-bush/rule.ts b/src/commands/moulberry-bush/rule.ts
index 4eac580..a9414ea 100644
--- a/src/commands/moulberry-bush/rule.ts
+++ b/src/commands/moulberry-bush/rule.ts
@@ -1,7 +1,9 @@
import { Argument } from 'discord-akairo';
import { Message, MessageEmbed, User } from 'discord.js';
-import AllowedMentions from '../../lib/utils/AllowedMentions';
import { BotCommand } from '../../lib/extensions/BotCommand';
+import { ApplicationCommandOptionType } from 'discord-api-types';
+import { CommandInteraction } from 'discord.js';
+import { SlashCommandOption } from '../../lib/extensions/Util';
export default class RuleCommand extends BotCommand {
private rules = [
@@ -98,28 +100,43 @@ export default class RuleCommand extends BotCommand {
}
],
clientPermissions: ['EMBED_LINKS', 'SEND_MESSAGES'],
- channel: 'guild'
+ channel: 'guild',
+ slashCommandOptions: [
+ {
+ type: ApplicationCommandOptionType.STRING,
+ name: 'rule',
+ description: 'The rule to show',
+ required: false
+ },
+ {
+ type: ApplicationCommandOptionType.USER,
+ name: 'user',
+ description: 'The user to ping',
+ required: false
+ }
+ ]
});
}
- public async exec(
- message: Message,
- { rule, user }: { rule: undefined | number; user: User }
- ): Promise<unknown> {
+ private getResponse(
+ message: Message | CommandInteraction,
+ rule?: number,
+ user?: User
+ ): string | MessageEmbed | [string, MessageEmbed] {
if (
message.guild.id !== '516977525906341928' &&
- !this.client.ownerID.includes(message.author.id)
+ !this.client.ownerID.includes(
+ message instanceof Message ? message.author.id : message.user.id
+ )
) {
- return message.util.reply(
- "<:no:787549684196704257> This command can only be run in Moulberry's Bush."
- );
+ return "<:no:787549684196704257> This command can only be run in Moulberry's Bush.";
}
- const rulesEmbed = new MessageEmbed()
- .setColor('ef3929')
- .setFooter(
+ let rulesEmbed = new MessageEmbed().setColor('ef3929');
+ if (message instanceof Message) {
+ rulesEmbed = rulesEmbed.setFooter(
`Triggered by ${message.author.tag}`,
message.author.avatarURL({ dynamic: true })
);
-
+ }
if (rule) {
const foundRule = this.rules[rule];
rulesEmbed.addField(foundRule.title, foundRule.description);
@@ -129,19 +146,40 @@ export default class RuleCommand extends BotCommand {
}
}
if (!user) {
- return (
- // If the original message was a reply -> imamate it
- message.util.send({
- embed: rulesEmbed,
- allowedMentions: AllowedMentions.users()
- })
- );
+ return rulesEmbed;
} else {
- await message.util.send(`<@!${user.id}>`, {
- embed: rulesEmbed,
- allowedMentions: AllowedMentions.users()
+ return [`<@!${user.id}>`, rulesEmbed];
+ }
+ }
+ public async exec(
+ message: Message,
+ { rule, user }: { rule?: number; user?: User }
+ ): Promise<void> {
+ const response = this.getResponse(message, rule, user);
+ if (Array.isArray(response)) {
+ await message.util.send(response[0], {
+ embed: response[1]
});
+ } else {
+ await message.util.send(response);
}
await message.delete().catch(() => undefined);
}
+
+ public async execSlash(
+ message: CommandInteraction,
+ {
+ rule,
+ user
+ }: { rule?: SlashCommandOption<number>; user?: SlashCommandOption<void> }
+ ): Promise<void> {
+ const response = this.getResponse(message, rule?.value, user?.user);
+ if (Array.isArray(response)) {
+ await message.reply(response[0], {
+ embeds: [response[1]]
+ });
+ } else {
+ await message.reply(response);
+ }
+ }
}