112 lines
4.1 KiB
Markdown
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.
|