feat: Update banned user handling to support prefix matching

- Modified configuration examples to clarify that banned users are now identified by sender names using prefix matching.
- Implemented a new method in CommandManager to check if a user is banned based on prefix matching, enhancing the bot's ability to ignore messages from banned senders.
- Updated message handling logic to utilize the new prefix matching functionality for improved user management.
This commit is contained in:
agessaman
2026-01-18 20:04:50 -08:00
parent 93c4004e2d
commit abe8e57ae3
5 changed files with 17 additions and 8 deletions
+2 -2
View File
@@ -124,8 +124,8 @@ monitor_channels = general,test,emergency
respond_to_dms = true
[Banned_Users]
# List of banned user IDs (comma-separated)
# Bot will ignore messages from these users
# List of banned sender names (comma-separated). Matching is prefix (starts-with):
# "Awful Username" also matches "Awful Username 🍆". No bot responses in channels or DMs.
banned_users =
[Localization]
+2 -2
View File
@@ -199,8 +199,8 @@ monitor_channels = general,test,emergency
respond_to_dms = true
[Banned_Users]
# List of banned user IDs (comma-separated)
# Bot will ignore messages from these users
# List of banned sender names (comma-separated). Matching is prefix (starts-with):
# "Awful Username" also matches "Awful Username 🍆". No bot responses in channels or DMs.
banned_users =
[Logging]
+9
View File
@@ -402,6 +402,15 @@ class CommandManager:
banned = self.bot.config.get('Banned_Users', 'banned_users', fallback='')
return [user.strip() for user in banned.split(',') if user.strip()]
def is_user_banned(self, sender_id: Optional[str]) -> bool:
"""Check if sender is banned using prefix (starts-with) matching.
A banned entry "Awful Username" matches "Awful Username" and "Awful Username 🍆".
"""
if not sender_id:
return False
return any(sender_id.startswith(entry) for entry in self.banned_users)
def load_monitor_channels(self) -> List[str]:
"""Load monitored channels from config"""
channels = self.bot.config.get('Channels', 'monitor_channels', fallback='')
+2 -2
View File
@@ -524,8 +524,8 @@ monitor_channels = general,test,emergency
respond_to_dms = true
[Banned_Users]
# List of banned user IDs (comma-separated)
# Bot will ignore messages from these users
# List of banned sender names (comma-separated). Matching is prefix (starts-with):
# "Awful Username" also matches "Awful Username 🍆". No bot responses in channels or DMs.
banned_users =
[Scheduled_Messages]
+2 -2
View File
@@ -1966,8 +1966,8 @@ class MessageHandler:
if not self.bot.config.getboolean('Bot', 'enabled'):
return False
# Check if sender is banned
if message.sender_id and message.sender_id in self.bot.command_manager.banned_users:
# Check if sender is banned (starts-with matching)
if self.bot.command_manager.is_user_banned(message.sender_id):
self.logger.debug(f"Ignoring message from banned user: {message.sender_id}")
return False