Files
miku-discord/readmes/UNO_QUICK_REF.md

193 lines
5.6 KiB
Markdown
Raw Permalink Normal View History

# 🎮 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! 🎮✨