#!/usr/bin/env python3 """Pet management commands module for PetBot""" from .base_module import BaseModule class PetManagement(BaseModule): """Handles team, pets, and future pet management commands""" def get_commands(self): return ["team", "pets", "activate", "deactivate", "nickname"] async def handle_command(self, channel, nickname, command, args): if command == "team": await self.cmd_team(channel, nickname) elif command == "pets": await self.cmd_pets(channel, nickname) elif command == "activate": await self.cmd_activate(channel, nickname, args) elif command == "deactivate": await self.cmd_deactivate(channel, nickname, args) elif command == "nickname": await self.cmd_nickname(channel, nickname, args) async def cmd_team(self, channel, nickname): """Redirect player to their team builder page""" player = await self.require_player(channel, nickname) if not player: return # Redirect to web interface for team management self.send_message(channel, f"⚔️ {nickname}: Manage your team at: http://petz.rdx4.com/teambuilder/{nickname}") async def cmd_pets(self, channel, nickname): """Show link to pet collection web page""" player = await self.require_player(channel, nickname) if not player: return # Send URL to player's profile page instead of PM spam self.send_message(channel, f"{nickname}: View your complete pet collection at: http://petz.rdx4.com/player/{nickname}#pets") async def cmd_activate(self, channel, nickname, args): """Activate a pet for battle (PM only)""" # Redirect to PM for privacy if not args: self.send_pm(nickname, "Usage: !activate ") self.send_message(channel, f"{nickname}: Pet activation instructions sent via PM!") return player = await self.require_player(channel, nickname) if not player: return pet_name = " ".join(self.normalize_input(args)) result = await self.database.activate_pet(player["id"], pet_name) if result["success"]: pet = result["pet"] display_name = pet["nickname"] or pet["species_name"] position = result.get("team_position", "?") self.send_pm(nickname, f"✅ {display_name} is now active for battle! Team position: {position}") self.send_message(channel, f"{nickname}: Pet activated successfully!") else: self.send_pm(nickname, f"❌ {result['error']}") self.send_message(channel, f"{nickname}: Pet activation failed - check PM for details!") async def cmd_deactivate(self, channel, nickname, args): """Deactivate a pet to storage (PM only)""" # Redirect to PM for privacy if not args: self.send_pm(nickname, "Usage: !deactivate ") self.send_message(channel, f"{nickname}: Pet deactivation instructions sent via PM!") return player = await self.require_player(channel, nickname) if not player: return pet_name = " ".join(self.normalize_input(args)) result = await self.database.deactivate_pet(player["id"], pet_name) if result["success"]: pet = result["pet"] display_name = pet["nickname"] or pet["species_name"] self.send_pm(nickname, f"📦 {display_name} moved to storage!") self.send_message(channel, f"{nickname}: Pet deactivated successfully!") else: self.send_pm(nickname, f"❌ {result['error']}") self.send_message(channel, f"{nickname}: Pet deactivation failed - check PM for details!") async def cmd_nickname(self, channel, nickname, args): """Set a nickname for a pet""" if len(args) < 2: self.send_message(channel, f"{nickname}: Usage: !nickname ") self.send_message(channel, f"Example: !nickname Charmander Flamey") return player = await self.require_player(channel, nickname) if not player: return # Split args into pet identifier and new nickname pet_identifier = self.normalize_input(args[0]) new_nickname = " ".join(args[1:]) result = await self.database.set_pet_nickname(player["id"], pet_identifier, new_nickname) if result["success"]: old_name = result["old_name"] new_name = result["new_nickname"] self.send_message(channel, f"✨ {nickname}: {old_name} is now nicknamed '{new_name}'!") else: self.send_message(channel, f"❌ {nickname}: {result['error']}")