aboutsummaryrefslogtreecommitdiff
path: root/src/listeners/member-custom
diff options
context:
space:
mode:
authorIRONM00N <64110067+IRONM00N@users.noreply.github.com>2021-12-30 16:55:37 -0500
committerIRONM00N <64110067+IRONM00N@users.noreply.github.com>2021-12-30 16:55:37 -0500
commit83db032fb91996c926a5d007a9e5fa4abed65871 (patch)
tree28081718636b6c41aea89018504f3f7e4f837903 /src/listeners/member-custom
parentf0a9f894575871d498447c5de2b5f0f826b117b7 (diff)
downloadtanzanite-83db032fb91996c926a5d007a9e5fa4abed65871.tar.gz
tanzanite-83db032fb91996c926a5d007a9e5fa4abed65871.tar.bz2
tanzanite-83db032fb91996c926a5d007a9e5fa4abed65871.zip
add timeout command and fix some other moderation commands
Diffstat (limited to 'src/listeners/member-custom')
-rw-r--r--src/listeners/member-custom/bushRemoveTimeout.ts31
-rw-r--r--src/listeners/member-custom/bushTimeout.ts34
2 files changed, 65 insertions, 0 deletions
diff --git a/src/listeners/member-custom/bushRemoveTimeout.ts b/src/listeners/member-custom/bushRemoveTimeout.ts
new file mode 100644
index 0000000..30a3ab4
--- /dev/null
+++ b/src/listeners/member-custom/bushRemoveTimeout.ts
@@ -0,0 +1,31 @@
+import { BushListener, type BushClientEvents } from '#lib';
+import { GuildMember, MessageEmbed } from 'discord.js';
+
+export default class BushRemoveTimeoutListener extends BushListener {
+ public constructor() {
+ super('bushRemoveTimeout', {
+ emitter: 'client',
+ event: 'bushRemoveTimeout',
+ category: 'member-custom'
+ });
+ }
+
+ public override async exec(...[victim, moderator, guild, reason, caseID, dmSuccess]: BushClientEvents['bushRemoveTimeout']) {
+ const logChannel = await guild.getLogChannel('moderation');
+ if (!logChannel) return;
+ const user = victim instanceof GuildMember ? victim.user : victim;
+
+ const logEmbed = new MessageEmbed()
+ .setColor(util.colors.discord.GREEN)
+ .setTimestamp()
+ .setFooter({ text: `CaseID: ${caseID}` })
+ .setAuthor({ name: user.tag, iconURL: user.avatarURL({ dynamic: true, format: 'png', size: 4096 }) ?? undefined })
+ .addField('**Action**', `${'Remove Timeout'}`)
+ .addField('**User**', `${user} (${user.tag})`)
+ .addField('**Moderator**', `${moderator} (${moderator.tag})`)
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
+ .addField('**Reason**', `${reason || '[No Reason Provided]'}`);
+ if (dmSuccess === false) logEmbed.addField('**Additional Info**', 'Could not dm user.');
+ return await logChannel.send({ embeds: [logEmbed] });
+ }
+}
diff --git a/src/listeners/member-custom/bushTimeout.ts b/src/listeners/member-custom/bushTimeout.ts
new file mode 100644
index 0000000..63ba41d
--- /dev/null
+++ b/src/listeners/member-custom/bushTimeout.ts
@@ -0,0 +1,34 @@
+import { BushListener, type BushClientEvents } from '#lib';
+import { GuildMember, MessageEmbed } from 'discord.js';
+
+export default class BushTimeoutListener extends BushListener {
+ public constructor() {
+ super('bushTimeout', {
+ emitter: 'client',
+ event: 'bushTimeout',
+ category: 'member-custom'
+ });
+ }
+
+ public override async exec(
+ ...[victim, moderator, guild, reason, caseID, duration, dmSuccess]: BushClientEvents['bushTimeout']
+ ) {
+ const logChannel = await guild.getLogChannel('moderation');
+ if (!logChannel) return;
+ const user = victim instanceof GuildMember ? victim.user : victim;
+
+ const logEmbed = new MessageEmbed()
+ .setColor(util.colors.discord.ORANGE)
+ .setTimestamp()
+ .setFooter({ text: `CaseID: ${caseID}` })
+ .setAuthor({ name: user.tag, iconURL: user.avatarURL({ dynamic: true, format: 'png', size: 4096 }) ?? undefined })
+ .addField('**Action**', `${'Timeout'}`)
+ .addField('**User**', `${user} (${user.tag})`)
+ .addField('**Moderator**', `${moderator} (${moderator.tag})`)
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
+ .addField('**Reason**', `${reason || '[No Reason Provided]'}`)
+ .addField('**Duration**', `${util.humanizeDuration(duration) || duration}`);
+ if (dmSuccess === false) logEmbed.addField('**Additional Info**', 'Could not dm user.');
+ return await logChannel.send({ embeds: [logEmbed] });
+ }
+}