aboutsummaryrefslogtreecommitdiff
path: root/src/commands
diff options
context:
space:
mode:
Diffstat (limited to 'src/commands')
-rw-r--r--src/commands/moderation/role.ts4
-rw-r--r--src/commands/moulberry-bush/giveawayping.ts68
-rw-r--r--src/commands/moulberry-bush/rule.ts3
3 files changed, 71 insertions, 4 deletions
diff --git a/src/commands/moderation/role.ts b/src/commands/moderation/role.ts
index 60fe369..e799698 100644
--- a/src/commands/moderation/role.ts
+++ b/src/commands/moderation/role.ts
@@ -155,7 +155,7 @@ export default class RoleCommand extends BotCommand {
}
// no checks if the user has MANAGE_ROLES
if (action == 'remove') {
- const success = await user.roles.remove(role.id).catch(() => {});
+ const success = await user.roles.remove(role.id).catch(() => undefined);
if (success)
return message.util.reply(
`<:checkmark:837109864101707807> Successfully removed <@&${role.id}> from <@${user.id}>!`,
@@ -167,7 +167,7 @@ export default class RoleCommand extends BotCommand {
{ allowedMentions: AllowedMentions.none() }
);
} else if (action == 'add') {
- const success = await user.roles.add(role.id).catch(() => {});
+ const success = await user.roles.add(role.id).catch(() => undefined);
if (success) {
return message.util.reply(
`<:checkmark:837109864101707807> Successfully added <@&${role.id}> to <@${user.id}>!`,
diff --git a/src/commands/moulberry-bush/giveawayping.ts b/src/commands/moulberry-bush/giveawayping.ts
new file mode 100644
index 0000000..e96b073
--- /dev/null
+++ b/src/commands/moulberry-bush/giveawayping.ts
@@ -0,0 +1,68 @@
+import { BotCommand } from '../../lib/extensions/BotCommand';
+import AllowedMentions from '../../lib/utils/AllowedMentions';
+import { Message, WebhookClient } from 'discord.js';
+import { TextChannel } from 'discord.js';
+import { NewsChannel } from 'discord.js';
+
+export default class GiveawayPingCommand extends BotCommand {
+ constructor() {
+ super('giveawayping', {
+ aliases: ['giveawayping', 'giveawaypong'],
+ category: "Moulberry's Bush",
+ description: {
+ content: 'Pings the giveaway role.',
+ usage: 'giveawayping',
+ examples: ['giveawayping']
+ },
+ clientPermissions: ['MANAGE_MESSAGES'],
+ userPermissions: [
+ 'SEND_MESSAGES',
+ 'MANAGE_GUILD',
+ 'MANAGE_MESSAGES',
+ 'BAN_MEMBERS',
+ 'KICK_MEMBERS',
+ 'VIEW_CHANNEL'
+ ],
+ channel: 'guild',
+ ignoreCooldown: [],
+ ignorePermissions: [],
+ cooldown: 1.44e7, //4 hours
+ ratelimit: 1,
+ editable: false
+ });
+ }
+ public async exec(message: Message): Promise<unknown> {
+ if (message.guild.id !== '516977525906341928')
+ return message.reply(
+ "<:error:837123021016924261> This command may only be run in Moulberry's Bush."
+ );
+ if (
+ !['767782084981817344', '833855738501267456'].includes(message.channel.id)
+ )
+ return message.reply(
+ '<: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();
+ let webhookClient: WebhookClient;
+ if (webhooks.size < 1) {
+ const webhook = await (message.channel as
+ | TextChannel
+ | NewsChannel).createWebhook('Giveaway ping webhook');
+ webhookClient = new WebhookClient(webhook.id, webhook.token);
+ } else {
+ const webhook = webhooks.first();
+ webhookClient = new WebhookClient(webhook.id, webhook.token);
+ }
+ return webhookClient.send(
+ '🎉 <@&767782793261875210> Giveaway.\n\n<:mad:783046135392239626> Spamming, line breaking, gibberish etc. disqualifies you from winning. We can and will ban you from giveaways. Winners will all be checked and rerolled if needed.',
+ {
+ username: `${message.member.nickname || message.author.username}`,
+ avatarURL: message.author.avatarURL({ dynamic: true }),
+ allowedMentions: AllowedMentions.roles()
+ }
+ );
+ }
+}
diff --git a/src/commands/moulberry-bush/rule.ts b/src/commands/moulberry-bush/rule.ts
index 3d1f549..4eac580 100644
--- a/src/commands/moulberry-bush/rule.ts
+++ b/src/commands/moulberry-bush/rule.ts
@@ -142,7 +142,6 @@ export default class RuleCommand extends BotCommand {
allowedMentions: AllowedMentions.users()
});
}
- // eslint-disable-next-line @typescript-eslint/no-empty-function
- await message.delete().catch(() => {});
+ await message.delete().catch(() => undefined);
}
}