Skip to content

Commit f8cb752

Browse files
authored
add message handler to prevent wordle bot from flooding general (#241)
* add message handler to prevent wordle bot from flooding general, it will only post the streak message * turn the filter into its own function + add the wordle bot id into its own thing in config
1 parent 2c4d866 commit f8cb752

3 files changed

Lines changed: 35 additions & 1 deletion

File tree

config.example.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,6 @@
1919
"NEW_MEMBER_CHANNEL_ID": "xxxxxxxxxxx"
2020
},
2121
"guildId": "xxxxxxxxxx",
22-
"PARKING_CHANNEL_ID": "xxxxxxxx"
22+
"PARKING_CHANNEL_ID": "xxxxxxxx",
23+
"WORDLE_BOT_ID": "xxxxxxxxxx"
2324
}

src/handlers/MessageHandler.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const { CommandHandler } = require(handlersPath + '/CommandHandler');
77
const { NonPrefixHandler } = require(handlersPath + '/NonPrefixHandler');
88
const { createNonPrefixRegex } = require(utilPath + '/NonPrefixRegexCreator');
99
const { ScamDetector } = require(utilPath + '/ScamDetector');
10+
const { WordleFilter } = require(utilPath + '/WordleFilter');
1011

1112
/**
1213
* Class which handles interpreting an input message and invoking the correct
@@ -25,6 +26,7 @@ class MessageHandler {
2526
this.commandHandler = new CommandHandler();
2627
this.nonPrefixHandler = new NonPrefixHandler();
2728
this.scamDetector = new ScamDetector();
29+
this.wordleFilter = new WordleFilter();
2830
}
2931

3032
/**
@@ -47,6 +49,13 @@ class MessageHandler {
4749
try {
4850
// Add a botStartTime field to the message object
4951
message.botStartTime = this.startTime;
52+
53+
// Delete Wordle messages except streak results
54+
if (this.wordleFilter.isWordleSpam(message)) {
55+
await this.wordleFilter.handleWordleSpam(message);
56+
return;
57+
}
58+
5059
if (message.author.bot) {
5160
return;
5261
}

src/util/WordleFilter.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
const logger = require('./logger');
2+
const config = require('../../config.json');
3+
4+
class WordleFilter {
5+
isWordleSpam(message) {
6+
if (message.author.id !== config.WORDLE_BOT_ID) {
7+
return false;
8+
}
9+
// keep streak result messages, delete everything else
10+
return !message.content.toLowerCase().includes('your group');
11+
}
12+
13+
async handleWordleSpam(message) {
14+
try {
15+
await message.delete();
16+
return true;
17+
} catch (error) {
18+
logger.error('Error deleting Wordle message:', error);
19+
return false;
20+
}
21+
}
22+
}
23+
24+
module.exports = { WordleFilter };

0 commit comments

Comments
 (0)