Files
echoes-of-the-ash/docs/BOT_REFACTOR_PROGRESS.md
2025-11-07 15:27:13 +01:00

112 lines
4.1 KiB
Markdown

# Bot Refactor Progress
## Status: ✅ Bot successfully connecting to API!
The bot is now running and making API calls. Initial testing shows successful communication.
## Completed
### API Endpoints (Internal)
- ✅ GET `/api/internal/player/{telegram_id}` - Get player by Telegram ID
- ✅ POST `/api/internal/player` - Create player
- ✅ POST `/api/internal/player/{player_id}/move` - Move player
- ✅ GET `/api/internal/player/{player_id}/inspect` - Inspect area
- ✅ POST `/api/internal/player/{player_id}/interact` - Interact with object
- ✅ GET `/api/internal/player/{player_id}/inventory` - Get inventory
- ✅ POST `/api/internal/player/{player_id}/use_item` - Use item
- ✅ POST `/api/internal/player/{player_id}/pickup` - Pick up item
- ✅ POST `/api/internal/player/{player_id}/drop_item` - Drop item
- ✅ POST `/api/internal/player/{player_id}/equip` - Equip item
- ✅ POST `/api/internal/player/{player_id}/unequip` - Unequip item
### API Client (bot/api_client.py)
-`get_player()` - Get player by Telegram ID
-`create_player()` - Create new player
-`move_player()` - Move in direction
-`inspect_area()` - Inspect current area
-`interact()` - Interact with object
-`get_inventory()` - Get inventory
-`use_item()` - Use item
-`pickup_item()` - Pick up item
-`drop_item()` - Drop item
-`equip_item()` - Equip item
-`unequip_item()` - Unequip item
### Bot Handlers Updated
-`bot/handlers.py` - Main button handler now uses API to get player
-`bot/commands.py` - /start command uses API
-`bot/action_handlers.py` - Movement handler updated
-`bot/inventory_handlers.py` - Inventory menu uses API
### Database Functions Added
-`api/database.py::remove_item_from_inventory()`
-`api/database.py::update_item_equipped_status()`
## In Progress
### Testing
- 🔄 Movement system
- 🔄 Inventory system
- 🔄 Interaction system
## Known Issues
1. ⚠️ `GET /api/internal/player/None/inventory` - Some handler is passing None instead of player_id
- Likely in inventory_handlers.py when player dict doesn't have 'id' field
- Need to trace which handler is causing this
## Not Yet Updated (Still using bot/database.py directly)
### Handlers that need refactoring:
-`action_handlers.py`:
- `handle_inspect_area()` - Uses `get_dropped_items_in_location`, `get_wandering_enemies_in_location`
- `handle_attack_wandering()` - Combat-related
- `handle_inspect_interactable()` - Uses `get_cooldown`
- `handle_action()` - Uses `get_cooldown`, `set_cooldown`, item rewards
-`inventory_handlers.py`:
- `handle_inventory_item()` - Uses `get_inventory_item`
- `handle_inventory_use()` - Uses multiple database calls
- `handle_inventory_drop()` - Uses `add_dropped_item_to_location`
- `handle_inventory_equip()` - Direct database operations
- `handle_inventory_unequip()` - Direct database operations
-`combat_handlers.py` - ALL handlers (combat system not in API yet)
-`pickup_handlers.py` - Uses `get_dropped_items_in_location`
-`profile_handlers.py` - Stats management
-`corpse_handlers.py` - Looting system
### API endpoints still needed:
- ⏳ Combat system endpoints
- ⏳ Dropped items endpoints
- ⏳ Wandering enemies endpoints
- ⏳ Status effects endpoints
- ⏳ Cooldown management endpoints
- ⏳ Corpse/looting endpoints
- ⏳ Stats/profile endpoints
## Testing Plan
1. ✅ Bot startup
2. ✅ API connectivity
3. 🔄 Test /start command (player creation)
4. 🔄 Test movement
5. ⏳ Test inventory viewing
6. ⏳ Test item usage
7. ⏳ Test interactions
8. ⏳ Test combat
9. ⏳ Test pickup/drop
10. ⏳ Test equipment
## Next Steps
1. **Debug the None player_id issue** - Find where we're not properly passing player['id']
2. **Test basic movement** - Try moving between locations
3. **Add missing API endpoints** - Combat, cooldowns, dropped items, etc.
4. **Continue refactoring handlers** - One module at a time
5. **Remove bot/database.py** - Once all handlers use API
---
**Current Status**: Bot is operational and communicating with API. Basic functionality working, deeper features need more endpoints and refactoring.