aboutsummaryrefslogtreecommitdiff
path: root/src/listeners/message
diff options
context:
space:
mode:
authorIRONM00N <64110067+IRONM00N@users.noreply.github.com>2021-07-30 13:04:24 -0400
committerIRONM00N <64110067+IRONM00N@users.noreply.github.com>2021-07-30 13:04:24 -0400
commitf5c2b7b946487c2828365cc63bc6f471dd6cfc2f (patch)
treeb225533c2858105b85ba118588954d9cb1ee9781 /src/listeners/message
parent1c6d451ffd63f9805b978e8565807e8a6b528681 (diff)
downloadtanzanite-f5c2b7b946487c2828365cc63bc6f471dd6cfc2f.tar.gz
tanzanite-f5c2b7b946487c2828365cc63bc6f471dd6cfc2f.tar.bz2
tanzanite-f5c2b7b946487c2828365cc63bc6f471dd6cfc2f.zip
clean up and fix stuff
Diffstat (limited to 'src/listeners/message')
-rw-r--r--src/listeners/message/automodCreate.ts95
-rw-r--r--src/listeners/message/automodUpdate.ts10
2 files changed, 98 insertions, 7 deletions
diff --git a/src/listeners/message/automodCreate.ts b/src/listeners/message/automodCreate.ts
index b6718fc..0321aca 100644
--- a/src/listeners/message/automodCreate.ts
+++ b/src/listeners/message/automodCreate.ts
@@ -1,5 +1,8 @@
import { BushListener, BushMessage } from '@lib';
-import { ClientEvents } from 'discord.js';
+import { MessageEmbed, TextChannel } from 'discord.js';
+import _badLinks from '../../lib/badlinks.json'; // Stolen from https://github.com/nacrt/SkyblockClient-REPO/blob/main/files/scamlinks.json
+import badWords from '../../lib/badwords.json';
+import { BushClientEvents } from '../../lib/extensions/discord.js/BushClientEvents';
export default class AutomodMessageCreateListener extends BushListener {
public constructor() {
@@ -10,7 +13,93 @@ export default class AutomodMessageCreateListener extends BushListener {
});
}
- async exec(...[message]: ClientEvents['messageCreate']): Promise<unknown> {
- return await util.automod(message as BushMessage);
+ async exec(...[message]: BushClientEvents['messageCreate']): Promise<unknown> {
+ return await AutomodMessageCreateListener.automod(message);
+ }
+
+ public static async automod(message: BushMessage): Promise<unknown> {
+ if (message.guild.id !== client.consts.mappings.guilds.bush) return; // just temporary
+ /* await message.guild.getSetting('autoModPhases'); */
+ const badLinks = {};
+ _badLinks.forEach((link) => {
+ badLinks[link] = 3;
+ });
+
+ // client.console.debug(badLinks, 1);
+ // client.console.debug(badWords, 1);
+
+ const wordArray = [...Object.keys(badWords), ...Object.keys(badLinks)];
+ const offences: { [key: string]: number } = {};
+
+ // client.console.debug(wordArray);
+ wordArray.forEach((word) => {
+ const cleanMessageContent = message.content?.toLowerCase().replace(/ /g, '');
+ const cleanWord = word.toLowerCase().replace(/ /g, '');
+
+ // client.console.debug(cleanMessageContent);
+ // client.console.debug(cleanWord);
+ if (cleanMessageContent.includes(cleanWord)) {
+ if (offences[word]) offences[word] = wordArray[word];
+ }
+ });
+ if (!Object.keys(offences)?.length) return;
+
+ const highestOffence = Object.values(offences).sort((a, b) => b - a)[0];
+
+ switch (highestOffence) {
+ case 0: {
+ if (message.deletable) void message.delete();
+ break;
+ }
+ case 1: {
+ if (message.deletable) void message.delete();
+ void message.member.warn({
+ moderator: message.guild.me,
+ reason: 'Saying a blacklisted word.'
+ });
+ break;
+ }
+ case 2: {
+ if (message.deletable) void message.delete();
+ void message.member.mute({
+ moderator: message.guild.me,
+ reason: 'Saying a blacklisted word.',
+ duration: 900_000 // 15 minutes
+ });
+ break;
+ }
+ case 3: {
+ if (message.deletable) void message.delete();
+ void message.member.mute({
+ moderator: message.guild.me,
+ reason: 'Saying a blacklisted word.',
+ duration: 0 // perm
+ });
+ break;
+ }
+ }
+
+ const color =
+ highestOffence === 0
+ ? util.colors.lightGray
+ : highestOffence === 1
+ ? util.colors.yellow
+ : highestOffence === 2
+ ? util.colors.orange
+ : util.colors.red;
+ void (message.guild.channels.cache.get('783088333055066212') as TextChannel).send({
+ embeds: [
+ new MessageEmbed()
+ .setTitle(`[Severity ${highestOffence}] Automod Action Performed`)
+ .setDescription(
+ `**User:** ${message.author} (${message.author.tag})\n**Blacklisted Words:** ${util
+ .surroundArray(Object.keys(offences), '`')
+ .join()}`
+ )
+ .addField('Message Content', `${util.codeblock(message.content, 1024)}`)
+ .setColor(color)
+ .setTimestamp()
+ ]
+ });
}
}
diff --git a/src/listeners/message/automodUpdate.ts b/src/listeners/message/automodUpdate.ts
index e455a3d..7b9e01a 100644
--- a/src/listeners/message/automodUpdate.ts
+++ b/src/listeners/message/automodUpdate.ts
@@ -1,5 +1,6 @@
import { BushListener, BushMessage } from '@lib';
-import { ClientEvents, Message } from 'discord.js';
+import { BushClientEvents } from '../../lib/extensions/discord.js/BushClientEvents';
+import AutomodMessageCreateListener from './automodCreate';
export default class AutomodMessageUpdateListener extends BushListener {
public constructor() {
@@ -10,8 +11,9 @@ export default class AutomodMessageUpdateListener extends BushListener {
});
}
- async exec(...[message]: ClientEvents['messageUpdate']): Promise<unknown> {
- const fullMessage = message.partial ? await message.fetch() : (message as Message);
- return await util.automod(fullMessage as BushMessage);
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ async exec(...[_, newMessage]: BushClientEvents['messageUpdate']): Promise<unknown> {
+ const fullMessage = newMessage.partial ? await newMessage.fetch() : (newMessage as BushMessage);
+ return await AutomodMessageCreateListener.automod(fullMessage);
}
}