mirror of
https://github.com/agessaman/meshcore-bot.git
synced 2026-05-10 17:55:18 +00:00
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:
+2
-2
@@ -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]
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user