From 2356d2c44736fb83021dacb551625852111c8ce6 Mon Sep 17 00:00:00 2001 From: IRONM00N <64110067+IRONM00N@users.noreply.github.com> Date: Thu, 18 Aug 2022 22:42:12 -0400 Subject: restructure, experimental presence and member automod, fixed bugs probably made some more bugs --- src/listeners/automod/automodCreate.ts | 16 +++++++++++++++ src/listeners/automod/automodUpdate.ts | 17 ++++++++++++++++ src/listeners/automod/memberAutomod.ts | 21 ++++++++++++++++++++ src/listeners/automod/presenceAutomod.ts | 27 ++++++++++++++++++++++++++ src/listeners/commands/commandError.ts | 4 ++-- src/listeners/interaction/interactionCreate.ts | 4 ++-- src/listeners/member-custom/bushLevelUpdate.ts | 6 ++++-- src/listeners/message/automodCreate.ts | 15 -------------- src/listeners/message/automodUpdate.ts | 17 ---------------- 9 files changed, 89 insertions(+), 38 deletions(-) create mode 100644 src/listeners/automod/automodCreate.ts create mode 100644 src/listeners/automod/automodUpdate.ts create mode 100644 src/listeners/automod/memberAutomod.ts create mode 100644 src/listeners/automod/presenceAutomod.ts delete mode 100644 src/listeners/message/automodCreate.ts delete mode 100644 src/listeners/message/automodUpdate.ts (limited to 'src/listeners') diff --git a/src/listeners/automod/automodCreate.ts b/src/listeners/automod/automodCreate.ts new file mode 100644 index 0000000..529651c --- /dev/null +++ b/src/listeners/automod/automodCreate.ts @@ -0,0 +1,16 @@ +import { BushListener, MessageAutomod, type BushClientEvents } from '#lib'; + +export default class AutomodMessageCreateListener extends BushListener { + public constructor() { + super('automodCreate', { + emitter: 'client', + event: 'messageCreate', + category: 'message' + }); + } + + public async exec(...[message]: BushClientEvents['messageCreate']) { + if (message.member === null) return; + return new MessageAutomod(message); + } +} diff --git a/src/listeners/automod/automodUpdate.ts b/src/listeners/automod/automodUpdate.ts new file mode 100644 index 0000000..d68759f --- /dev/null +++ b/src/listeners/automod/automodUpdate.ts @@ -0,0 +1,17 @@ +import { BushListener, MessageAutomod, type BushClientEvents } from '#lib'; + +export default class AutomodMessageUpdateListener extends BushListener { + public constructor() { + super('automodUpdate', { + emitter: 'client', + event: 'messageUpdate', + category: 'message' + }); + } + + public async exec(...[_, newMessage]: BushClientEvents['messageUpdate']) { + const fullMessage = newMessage.partial ? await newMessage.fetch().catch(() => null) : newMessage; + if (!fullMessage?.member) return; + return new MessageAutomod(fullMessage); + } +} diff --git a/src/listeners/automod/memberAutomod.ts b/src/listeners/automod/memberAutomod.ts new file mode 100644 index 0000000..01eb56c --- /dev/null +++ b/src/listeners/automod/memberAutomod.ts @@ -0,0 +1,21 @@ +import { BushClientEvents, BushListener, MemberAutomod } from '#lib'; +import chalk from 'chalk'; + +export default class PresenceAutomodListener extends BushListener { + public constructor() { + super('memberAutomod', { + emitter: 'client', + event: 'guildMemberUpdate' + }); + } + + public async exec(...[_, newMember]: BushClientEvents['guildMemberUpdate']) { + if (!(await newMember.guild.hasFeature('automodMembers'))) return; + if (!(await newMember.guild.hasFeature('automod'))) return; + + new MemberAutomod(newMember); + console.log( + `${chalk.hex('#ff7105')('[MemberAutomod]')} Created a new MemberAutomod for ${newMember.user.tag} (${newMember.user.id})` + ); + } +} diff --git a/src/listeners/automod/presenceAutomod.ts b/src/listeners/automod/presenceAutomod.ts new file mode 100644 index 0000000..f361508 --- /dev/null +++ b/src/listeners/automod/presenceAutomod.ts @@ -0,0 +1,27 @@ +import { BushClientEvents, BushListener, PresenceAutomod } from '#lib'; +import chalk from 'chalk'; + +/* export default */ class PresenceAutomodListener extends BushListener { + public constructor() { + super('presenceAutomod', { + emitter: 'client', + event: 'presenceUpdate' + }); + } + + public async exec(...[_, newPresence]: BushClientEvents['presenceUpdate']) { + if (!newPresence.member || !newPresence.guild) return; + + if (!newPresence.activities.length) return; + + if (!(await newPresence.guild.hasFeature('automodPresence'))) return; + if (!(await newPresence.guild.hasFeature('automod'))) return; + + new PresenceAutomod(newPresence); + console.log( + `${chalk.hex('#ffe605')('[PresenceAutomod]')} Created a new PresenceAutomod for ${newPresence.member.user.tag} (${ + newPresence.member.user.id + })` + ); + } +} diff --git a/src/listeners/commands/commandError.ts b/src/listeners/commands/commandError.ts index f12881a..bfa857c 100644 --- a/src/listeners/commands/commandError.ts +++ b/src/listeners/commands/commandError.ts @@ -1,8 +1,8 @@ import { capitalize, colors, format, formatError, SlashMessage, type BushCommandHandlerEvents } from '#lib'; import { type AkairoMessage, type Command } from 'discord-akairo'; import { ChannelType, Client, EmbedBuilder, escapeInlineCode, GuildTextBasedChannel, type Message } from 'discord.js'; -import { bold } from '../../lib/common/util/Format.js'; -import { BushListener } from '../../lib/extensions/discord-akairo/BushListener.js'; +import { BushListener } from '../../../lib/extensions/discord-akairo/BushListener.js'; +import { bold } from '../../../lib/utils/Format.js'; export default class CommandErrorListener extends BushListener { public constructor() { diff --git a/src/listeners/interaction/interactionCreate.ts b/src/listeners/interaction/interactionCreate.ts index 91bcae6..8dd753b 100644 --- a/src/listeners/interaction/interactionCreate.ts +++ b/src/listeners/interaction/interactionCreate.ts @@ -1,4 +1,4 @@ -import { AutoMod, BushListener, emojis, format, oxford, surroundArray, type BushClientEvents } from '#lib'; +import { BushListener, emojis, format, handleAutomodInteraction, oxford, surroundArray, type BushClientEvents } from '#lib'; import { InteractionType } from 'discord.js'; export default class InteractionCreateListener extends BushListener { @@ -22,7 +22,7 @@ export default class InteractionCreateListener extends BushListener { } else if (interaction.isButton()) { const id = interaction.customId; if (['paginate_', 'command_', 'confirmationPrompt_', 'appeal'].some((s) => id.startsWith(s))) return; - else if (id.startsWith('automod;')) void AutoMod.handleInteraction(interaction); + else if (id.startsWith('automod;')) void handleAutomodInteraction(interaction); else if (id.startsWith('button-role;') && interaction.inCachedGuild()) { const [, roleId] = id.split(';'); const role = interaction.guild.roles.cache.get(roleId); diff --git a/src/listeners/member-custom/bushLevelUpdate.ts b/src/listeners/member-custom/bushLevelUpdate.ts index 0281288..702f7cc 100644 --- a/src/listeners/member-custom/bushLevelUpdate.ts +++ b/src/listeners/member-custom/bushLevelUpdate.ts @@ -52,10 +52,12 @@ export default class BushLevelUpdateListener extends BushListener { } try { if (promises.length) await Promise.all(promises); - } catch (e) { + } catch (e: any) { await member.guild.error( 'bushLevelUpdate', - `There was an error adding level roles to ${member.user.tag} upon reaching to level ${newLevel}.\n${e?.message ?? e}` + `There was an error adding level roles to ${member.user.tag} upon reaching to level ${newLevel}.\n${ + 'message' in e ? e.message : e + }` ); } } diff --git a/src/listeners/message/automodCreate.ts b/src/listeners/message/automodCreate.ts deleted file mode 100644 index 0f089a3..0000000 --- a/src/listeners/message/automodCreate.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { AutoMod, BushListener, type BushClientEvents } from '#lib'; - -export default class AutomodMessageCreateListener extends BushListener { - public constructor() { - super('automodCreate', { - emitter: 'client', - event: 'messageCreate', - category: 'message' - }); - } - - public async exec(...[message]: BushClientEvents['messageCreate']) { - return new AutoMod(message); - } -} diff --git a/src/listeners/message/automodUpdate.ts b/src/listeners/message/automodUpdate.ts deleted file mode 100644 index fa00f92..0000000 --- a/src/listeners/message/automodUpdate.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { AutoMod, BushListener, type BushClientEvents } from '#lib'; - -export default class AutomodMessageUpdateListener extends BushListener { - public constructor() { - super('automodUpdate', { - emitter: 'client', - event: 'messageUpdate', - category: 'message' - }); - } - - public async exec(...[_, newMessage]: BushClientEvents['messageUpdate']) { - const fullMessage = newMessage.partial ? await newMessage.fetch().catch(() => null) : newMessage; - if (!fullMessage) return; - return new AutoMod(fullMessage); - } -} -- cgit