# Trivia - Components v2 Implementation This trivia feature uses **Discord Components v2** for a premium visual experience. ## 🎨 Visual Features ### **Container with Accent Colors** Each trivia question is displayed in a Container with a colored accent bar that changes based on difficulty: - **🟢 Easy**: Green accent bar (`0x57F287`) - **🟡 Medium**: Yellow accent bar (`0xFEE75C`) - **🔴 Hard**: Red accent bar (`0xED4245`) ### **Modern Layout Components** - **TextDisplay** - Rich markdown formatting for question text - **Separator** - Visual spacing between sections - **Container** - Groups all content with difficulty-based styling ### **Interactive Features** ✅ **Give Up Button** - Players can forfeit if they're unsure ✅ **Disabled Answer Buttons** - After answering, buttons show: - ✅ Green for correct answer - ❌ Red for user's incorrect answer - Gray for other options ✅ **Time Display** - Shows both relative time (`in 30s`) and seconds remaining ✅ **Stakes Preview** - Clear display: `50 AU ➜ 100 AU` ## 📁 File Structure ``` bot/modules/trivia/ ├── trivia.view.ts # Components v2 view functions ├── trivia.interaction.ts # Button interaction handler └── README.md # This file bot/commands/economy/ └── trivia.ts # /trivia slash command ``` ## 🔧 Technical Details ### Components v2 Requirements - Uses `MessageFlags.IsComponentsV2` flag - No `embeds` or `content` fields (uses TextDisplay instead) - Numeric component types: - `1` - Action Row - `2` - Button - `10` - Text Display - `14` - Separator - `17` - Container - Max 40 components per message (vs 5 for legacy) ### Button Styles - **Secondary (2)**: Gray - Used for answer buttons - **Success (3)**: Green - Used for "True" and correct answers - **Danger (4)**: Red - Used for "False", incorrect answers, and "Give Up" ## 🎮 User Experience Flow 1. User runs `/trivia` 2. Sees question in a Container with difficulty-based accent color 3. Can choose to: - Select an answer (A/B/C/D or True/False) - Give up using the 🏳️ button 4. After answering, sees result with: - Disabled buttons showing correct/incorrect answers - Container with result-based accent color (green/red/yellow) - Reward or penalty information ## 🌟 Visual Examples ### Question Display ``` ┌─[GREEN]─────────────────────────┐ │ # 🎯 Trivia Challenge │ │ 🟢 Easy • 📚 Geography │ │ ─────────────────────────── │ │ ### What is the capital of │ │ France? │ │ │ │ ⏱️ Time: in 30s (30s) │ │ 💰 Stakes: 50 AU ➜ 100 AU │ │ 👤 Player: Username │ └─────────────────────────────────┘ [🇦 A: Paris] [🇧 B: London] [🇨 C: Berlin] [🇩 D: Madrid] [🏳️ Give Up] ``` ### Result Display (Correct) ``` ┌─[GREEN]─────────────────────────┐ │ # 🎉 Correct Answer! │ │ ### What is the capital of │ │ France? │ │ ─────────────────────────── │ │ ✅ Your answer: Paris │ │ │ │ 💰 Reward: +100 AU │ │ │ │ 🏆 Great job! Keep it up! │ └─────────────────────────────────┘ [✅ A: Paris] [❌ B: London] [❌ C: Berlin] [❌ D: Madrid] (all buttons disabled) ``` ## 🚀 Future Enhancements Potential improvements: - [ ] Thumbnail images based on trivia category - [ ] Progress bar for time remaining - [ ] Streak counter display - [ ] Category-specific accent colors - [ ] Media Gallery for image-based questions - [ ] Leaderboard integration in results