diff --git a/config.example.json b/config.example.json index e793d9f..00d5141 100644 --- a/config.example.json +++ b/config.example.json @@ -19,5 +19,6 @@ "NEW_MEMBER_CHANNEL_ID": "xxxxxxxxxxx" }, "guildId": "xxxxxxxxxx", - "PARKING_CHANNEL_ID": "xxxxxxxx" + "PARKING_CHANNEL_ID": "xxxxxxxx", + "WORDLE_BOT_ID": "xxxxxxxxxx" } diff --git a/src/handlers/MessageHandler.js b/src/handlers/MessageHandler.js index 6223a64..4833ae0 100644 --- a/src/handlers/MessageHandler.js +++ b/src/handlers/MessageHandler.js @@ -7,6 +7,7 @@ const { CommandHandler } = require(handlersPath + '/CommandHandler'); const { NonPrefixHandler } = require(handlersPath + '/NonPrefixHandler'); const { createNonPrefixRegex } = require(utilPath + '/NonPrefixRegexCreator'); const { ScamDetector } = require(utilPath + '/ScamDetector'); +const { WordleFilter } = require(utilPath + '/WordleFilter'); /** * Class which handles interpreting an input message and invoking the correct @@ -25,6 +26,7 @@ class MessageHandler { this.commandHandler = new CommandHandler(); this.nonPrefixHandler = new NonPrefixHandler(); this.scamDetector = new ScamDetector(); + this.wordleFilter = new WordleFilter(); } /** @@ -47,6 +49,13 @@ class MessageHandler { try { // Add a botStartTime field to the message object message.botStartTime = this.startTime; + + // Delete Wordle messages except streak results + if (this.wordleFilter.isWordleSpam(message)) { + await this.wordleFilter.handleWordleSpam(message); + return; + } + if (message.author.bot) { return; } diff --git a/src/util/WordleFilter.js b/src/util/WordleFilter.js new file mode 100644 index 0000000..c3cc139 --- /dev/null +++ b/src/util/WordleFilter.js @@ -0,0 +1,24 @@ +const logger = require('./logger'); +const config = require('../../config.json'); + +class WordleFilter { + isWordleSpam(message) { + if (message.author.id !== config.WORDLE_BOT_ID) { + return false; + } + // keep streak result messages, delete everything else + return !message.content.toLowerCase().includes('your group'); + } + + async handleWordleSpam(message) { + try { + await message.delete(); + return true; + } catch (error) { + logger.error('Error deleting Wordle message:', error); + return false; + } + } +} + +module.exports = { WordleFilter };