# 🎮 Miku UNO Bot - Quick Reference ## Setup (One-Time) ```bash # 1. Install Playwright browsers cd /home/koko210Serve/docker/miku-discord/bot bash setup_uno_playwright.sh # 2. Start UNO servers (2 terminals) # Terminal 1 - Backend cd /home/koko210Serve/docker/uno-online node server.js # Terminal 2 - Frontend cd /home/koko210Serve/docker/uno-online/client npm start # 3. Start Miku bot cd /home/koko210Serve/docker/miku-discord/bot python bot.py ``` ## Discord Commands | Command | Description | Example | |---------|-------------|---------| | `!uno create` | Create & join new game | `!uno create` | | `!uno join CODE` | Join existing game | `!uno join ABC123` | | `!uno list` | Show active games | `!uno list` | | `!uno quit CODE` | Leave a game | `!uno quit ABC123` | | `!uno help` | Show help | `!uno help` | ## Quick Start Test 1. **In Discord**: Type `!uno create` 2. **Bot responds** with room code (e.g., ABC123) 3. **In browser**: Open http://192.168.1.2:3002 4. **Join room** with the code 5. **Game starts** automatically with 2 players 6. **Watch Miku play** and trash talk! 🎵 ## File Locations ``` /home/koko210Serve/docker/miku-discord/ ├── UNO_BOT_SETUP.md # Full setup guide ├── UNO_BOT_TESTING.md # Testing checklist ├── bot/ │ ├── commands/uno.py # Discord command handler │ ├── utils/uno_game.py # Game automation │ ├── bot.py # Updated with !uno routing │ └── setup_uno_playwright.sh # Setup script /home/koko210Serve/docker/uno-online/ ├── server.js # Game backend (port 5000) ├── client/ # Game frontend (port 3002) ├── test-bot-action.js # Manual testing tool ├── BOT_ACTION_SPEC.md # JSON action format └── BOT_INTEGRATION_COMPLETE.md # Integration details ``` ## Architecture Flow ``` Discord User │ ├─> !uno create │ │ │ v │ Miku Bot (bot.py) │ │ │ ├─> commands/uno.py (route command) │ │ │ │ │ v │ │ utils/uno_game.py (MikuUnoPlayer) │ │ │ │ │ ├─> Playwright (join game via browser) │ │ │ │ │ │ │ v │ │ │ http://192.168.1.2:3002 (Frontend) │ │ │ │ │ ├─> HTTP API (get state, send actions) │ │ │ │ │ │ │ v │ │ │ http://localhost:5000/api/... (Backend) │ │ │ │ │ └─> LLM (query_llama for strategy) │ │ │ │ │ v │ │ Llama 3.1 Model │ │ │ │ │ v │ │ JSON Action {"action":"play","card":"R5"} │ │ │ └─> Discord Message (trash talk) 💙✨ │ v Game proceeds... ``` ## Key Components ### MikuUnoPlayer Class - **Location**: `bot/utils/uno_game.py` - **Methods**: - `create_and_join_game()` - Creates new room - `join_game()` - Joins existing room - `play_game()` - Main game loop (polls every 2s) - `get_miku_decision()` - LLM strategy - `send_trash_talk()` - Personality messages ### JSON Action Format ```json { "action": "play", // or "draw" or "uno" "card": "R5", // card code (if playing) "color": "R", // color choice (if Wild) "callUno": false // true if calling UNO } ``` ### Card Codes - **Colors**: R (Red), G (Green), B (Blue), Y (Yellow) - **Numbers**: 0-9 - **Actions**: S (Skip), R (Reverse), D (Draw 2) - **Wilds**: W (Wild), WD4 (Wild Draw 4) - **Examples**: R5, GS, BD, W, WD4 ## Troubleshooting | Problem | Solution | |---------|----------| | "Executable doesn't exist" | Run: `python -m playwright install chromium` | | Bot not responding | Check bot.py is running, check logs | | Game not starting | Check both UNO servers running (ports 5000, 3002) | | Invalid moves | Check LLM logs, verify JSON format | | Browser issues | Check Playwright installation | ## Logs to Watch ```bash # Bot main logs tail -f /home/koko210Serve/docker/miku-discord/bot/bot.log | grep UNO # Look for: [UNO] Creating new game room... [MikuUnoPlayer] Browser launched [MikuUnoPlayer] It's my turn! [MikuUnoPlayer] Action executed successfully! ``` ## Personality Traits Miku's trash talk reflects her cheerful idol personality: - 💙 Supportive and encouraging - ✨ Uses sparkle emojis - 🎵 Musical references - ~ Playful tone with tildes - 🎶 Upbeat and positive ## Next Steps 1. **Testing**: Use `UNO_BOT_TESTING.md` checklist 2. **Monitor**: Watch logs during first few games 3. **Adjust**: Tune polling interval or prompts if needed 4. **Enjoy**: Play UNO with Miku! 🎮 ## Quick Debugging ```bash # Check if Playwright is installed python -c "from playwright.async_api import async_playwright; print('OK')" # Check if UNO servers are up curl http://localhost:5000/health curl http://192.168.1.2:3002 # Test bot action API manually node /home/koko210Serve/docker/uno-online/test-bot-action.js ABC123 '{"action":"draw"}' ``` ## Documentation Index - **UNO_BOT_SETUP.md** - Full setup guide with details - **UNO_BOT_TESTING.md** - Comprehensive testing checklist - **BOT_ACTION_SPEC.md** - JSON action format specification - **BOT_INTEGRATION_COMPLETE.md** - Technical integration details - **QUICK_START_BOT.md** - Manual testing quick start --- **Ready to test?** Type `!uno create` in Discord! 🎮✨