diff options
| -rw-r--r-- | packages/gateway/src/listeners/autoDeletion.ts | 73 | ||||
| -rw-r--r-- | packages/gateway/src/listeners/index.ts | 2 |
2 files changed, 75 insertions, 0 deletions
diff --git a/packages/gateway/src/listeners/autoDeletion.ts b/packages/gateway/src/listeners/autoDeletion.ts new file mode 100644 index 0000000..bf503e1 --- /dev/null +++ b/packages/gateway/src/listeners/autoDeletion.ts @@ -0,0 +1,73 @@ +import { Client, Events, Message } from "discord.js"; +import { CENTRAL_GUILD_ID, ROLEPLAY_GUILD_ID } from "../constants"; +import { logUnexpectedDiscordAPIError } from "../utilities"; + +const BANNED_STRINGS = ["@https://cdn.miki.bot/ext/imgh/1dGU5ggsHZ.gif"]; + +const containsBannedString = (message: Message): boolean => { + const content = message.content.toLowerCase(); + + for (const bannedString of BANNED_STRINGS) + if (content.includes(bannedString.toLowerCase())) return true; + + for (const embed of message.embeds) + for (const bannedString of BANNED_STRINGS) { + if ( + embed.title && + embed.title.toLowerCase().includes(bannedString.toLowerCase()) + ) + return true; + + if ( + embed.description && + embed.description.toLowerCase().includes(bannedString.toLowerCase()) + ) + return true; + + for (const field of embed.fields) { + if ( + field.name && + field.name.toLowerCase().includes(bannedString.toLowerCase()) + ) + return true; + + if ( + field.value && + field.value.toLowerCase().includes(bannedString.toLowerCase()) + ) + return true; + } + + if ( + embed.footer?.text && + embed.footer.text.toLowerCase().includes(bannedString.toLowerCase()) + ) + return true; + + if ( + embed.author?.name && + embed.author.name.toLowerCase().includes(bannedString.toLowerCase()) + ) + return true; + } + + return false; +}; + +export const handleAutoDeletion = (client: Client) => { + client.on(Events.MessageCreate, async (message: Message) => { + if ( + message.guildId !== CENTRAL_GUILD_ID && + message.guildId !== ROLEPLAY_GUILD_ID + ) + return; + + if (!containsBannedString(message)) return; + + try { + await message.delete(); + } catch (error) { + logUnexpectedDiscordAPIError(error); + } + }); +}; diff --git a/packages/gateway/src/listeners/index.ts b/packages/gateway/src/listeners/index.ts index 76ffb42..7547d4f 100644 --- a/packages/gateway/src/listeners/index.ts +++ b/packages/gateway/src/listeners/index.ts @@ -7,6 +7,7 @@ import { handleMessageEdit } from "./messageEdit"; import { handleClientReady } from "./clientReady"; import { handleMemberJoin } from "./memberJoin"; import { handleTimeoutMirroring } from "./timeoutMirroring"; +import { handleAutoDeletion } from "./autoDeletion"; // import { handleMediaModeration } from "./mediaModeration"; export const handleListeners = (client: Client) => { @@ -18,5 +19,6 @@ export const handleListeners = (client: Client) => { handleMessageEdit(client); handleMemberJoin(client); handleTimeoutMirroring(client); + handleAutoDeletion(client); // handleMediaModeration(client); }; |