From 83db032fb91996c926a5d007a9e5fa4abed65871 Mon Sep 17 00:00:00 2001 From: IRONM00N <64110067+IRONM00N@users.noreply.github.com> Date: Thu, 30 Dec 2021 16:55:37 -0500 Subject: add timeout command and fix some other moderation commands --- src/listeners/member-custom/bushRemoveTimeout.ts | 31 +++++++++++++++++++++ src/listeners/member-custom/bushTimeout.ts | 34 ++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 src/listeners/member-custom/bushRemoveTimeout.ts create mode 100644 src/listeners/member-custom/bushTimeout.ts (limited to 'src/listeners/member-custom') 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] }); + } +} -- cgit