Accept leading-whitespace commands; log spawn send failures

This commit is contained in:
3nd3r
2025-12-28 15:33:17 -06:00
parent d5654e9783
commit 9bd51a24cc
2 changed files with 11 additions and 4 deletions

View File

@@ -572,7 +572,12 @@ class DuckHuntBot:
"""Handle bot commands with enhanced error handling and input validation"""
try:
# Validate input parameters
if not isinstance(message, str) or not message.startswith('!'):
if not isinstance(message, str):
return
# Some clients/users may prefix commands with whitespace (e.g. " !bang").
message = message.lstrip()
if not message.startswith('!'):
return
if not isinstance(user, str) or not isinstance(channel, str):
@@ -580,7 +585,7 @@ class DuckHuntBot:
return
# Sanitize inputs
safe_message = sanitize_user_input(message, max_length=500)
safe_message = sanitize_user_input(message, max_length=500).lstrip()
safe_user = sanitize_user_input(user, max_length=200)
safe_channel = sanitize_user_input(channel, max_length=100)

View File

@@ -160,7 +160,8 @@ class DuckGame:
# All duck types use the same spawn message - type is hidden!
message = self.bot.messages.get('duck_spawn')
self.bot.send_message(channel, message)
if not self.bot.send_message(channel, message):
self.logger.warning(f"Failed to send duck spawn message to {channel}")
async def force_spawn_duck(self, channel, duck_type):
"""Force spawn a specific duck type in a channel (admin/items), even if ducks already exist."""
@@ -184,7 +185,8 @@ class DuckGame:
except Exception:
pass
self.bot.send_message(channel, self.bot.messages.get('duck_spawn'))
if not self.bot.send_message(channel, self.bot.messages.get('duck_spawn')):
self.logger.warning(f"Failed to send forced duck spawn message to {channel}")
def _choose_duck_type(self):
"""Choose a duck type using duck_types.*.chance (with legacy fallbacks)."""