Implement comprehensive team management and fix critical bugs

Team Management Features:
- Added 6 new IRC commands: \!teamlist, \!activeteam, \!teamname, \!teamswap, \!heal, \!verifyteamswap
- \!teamlist shows teams with pet names in format "Team name - pet1 - pet2 - pet3"
- \!teamname redirects to web interface for secure PIN-based renaming
- \!teamswap enables team switching with PIN verification via IRC
- \!activeteam displays current team with health status indicators
- \!heal command with 1-hour cooldown for pet health restoration

Critical Bug Fixes:
- Fixed \!teamlist SQL binding error - handled new team data format correctly
- Fixed \!wild command duplicates - now shows unique species types only
- Removed all debug print statements and implemented proper logging
- Fixed data format inconsistencies in team management system

Production Improvements:
- Added logging infrastructure to BaseModule and core components
- Converted 45+ print statements to professional logging calls
- Database query optimization with DISTINCT for spawn deduplication
- Enhanced error handling and user feedback messages

Cross-platform Integration:
- Seamless sync between IRC commands and web interface
- PIN authentication leverages existing secure infrastructure
- Team operations maintain consistency across all interfaces

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
megaproxy 2025-08-01 15:53:26 +00:00
parent e920503dbd
commit e17705dc63
10 changed files with 2012 additions and 384 deletions

View file

@ -134,7 +134,6 @@ class BattleSystem(BaseModule):
gym_battle = await self.database.get_active_gym_battle(player["id"])
if gym_battle:
print(f"DEBUG: Gym battle completion - player: {player['id']}, result: {result.get('winner')}")
await self.handle_gym_battle_completion(channel, nickname, player, result, gym_battle)
else:
# Regular wild battle
@ -312,9 +311,9 @@ class BattleSystem(BaseModule):
except Exception as e:
self.send_message(channel, f"{nickname}: Gym battle error occurred - please !forfeit and try again")
print(f"Gym battle completion error: {e}")
self.logger.error(f"Gym battle completion error: {e}")
import traceback
traceback.print_exc()
self.logger.error(traceback.format_exc())
async def award_battle_experience(self, channel, nickname, player, defeated_pet, battle_type="wild"):
"""Award experience to active pets for battle victory"""