This document contains ideas for enhancing the JumpStart Discord Bot using various Discord features beyond basic embeds.
Buttons provide clickable interactions that stay attached to messages.
For !list command:
- Navigate between deck variations:
[< Previous] [ANGELS (1)] [Next >] - Quick actions:
[📊 Stats] [🎨 Full Art] [🔄 Random Variant] - Comparison:
[⚖️ Compare to (2)]
For !pick command:
- Reroll:
[🎲 Pick Again]- reroll with same settings - Expand:
[📋 Show Lists]- display full deck lists for all picked themes - Actions:
[💾 Save] [📤 Share]
General:
- Navigation between related content
- Quick actions without new commands
- Keep context in the same message
- Buttons can persist across bot restarts (with custom_id)
- Max 5 buttons per row, up to 5 rows (25 buttons total)
- Can include emojis and custom labels
- Can be disabled/enabled dynamically
Dropdown menus for choosing from multiple options.
Set Selection:
Choose Set: [▼ JumpStart 2020]
├─ JumpStart 2020
├─ JumpStart 2022
├─ JumpStart 2025
├─ Foundations Beginner Box
└─ All Sets
Theme Browser:
Browse Themes: [▼ ANGELS]
├─ ANGELS (1)
├─ ANGELS (2)
└─ (search/filter options)
Filter Options:
- Filter by color (W, U, B, R, G, M, N)
- Filter by rarity (M, R, C, U, S)
- Filter by set
- Max 25 options per select menu
- Can have min/max selection counts
- Supports emojis in options
- Can be dynamic based on context
Modern Discord command format with autocomplete and built-in validation.
/pick
- set: [Dropdown: JMP, J22, J25, etc.]
- number: [1-10]
- type: [themes/lists]
- nodupes: [boolean]
/list
- theme: [Autocomplete text input]
- set: [Dropdown: ALL, JMP, J22, etc.]
- number: [1-4]
/stats
- (no parameters)
/info
- (no parameters)
/compare
- theme1: [text]
- theme2: [text]
- set: [optional]
- Autocomplete: Users can see available options as they type
- Validation: Discord validates parameters before sending
- Discoverability: Users can browse commands with
/ - Better UX: Modern standard, mobile-friendly
- Type safety: Parameters have defined types (string, integer, boolean, etc.)
- Keep existing
!commands for backward compatibility - Add slash command equivalents
- Eventually deprecate
!commands (with warning period)
Popup forms for collecting structured input.
Advanced Search:
- Multi-field form for complex queries
- Filter by multiple criteria at once
- Save search presets
Deck Builder:
- Input multiple themes for custom combinations
- Add notes or preferences
- Up to 5 text input fields per modal
- Triggered by button clicks
- Good for complex input scenarios
Hide content until user clicks to reveal:
Deck List: ||1 Serra Angel\n1 Baneslayer Angel\n...||
Use Cases:
- Hide deck lists for "blind pick" mode
- Spoiler-free pack reveals
- Tournament mode (hide opponent's picks)
# Creatures (7)
- 1 Serra Angel
- 1 Baneslayer Angel
...Better formatting for deck lists in some contexts.
- Link to Scryfall card pages
- Link to set information
- Link to strategy guides
Auto-add emoji reactions for quick interactions.
Rating System:
- ⭐ Favorite this theme
- 👍/👎 Rate the deck
- 🔥 Mark as "spicy"
Quick Actions:
- 🎲 React to reroll
- 📋 React to see full list
- 🖼️ React to see all card images
Bookmarking:
- 💾 Save this combination
- 📌 Pin for later
- Non-intrusive way to add interactivity
- Works on any message
- Can track who reacted
- Can trigger bot actions based on reactions
Auto-create discussion threads for picks or lists.
Pick Results:
- Auto-create thread for each pick session
- Players can discuss their combinations
- Share match results
- Keep channel clean (discussions in threads)
Theme Discussions:
- Thread per theme for strategy discussion
- Card substitution ideas
- Synergy notes
- Keeps main channel clean
- Organizes related discussions
- Can be auto-archived after inactivity
Messages only visible to the command user.
Error Messages:
- Show validation errors privately
- Don't clutter public channel
Personal Stats:
- Show user's pick history
- Favorite themes
- Personal preferences
Admin Commands:
- Cache management responses
- Debug information
- ✅ Categorized deck lists using JSON data (in progress)
- Variant navigation buttons for
!listcommand[< Prev] [ANGELS (1)] [Next >]buttons
- "Reroll" button for
!pickcommand
- Deck statistics button - show CMC, color breakdown, etc.
- Spoiler tag option - hide deck lists until clicked
- Select menu for set selection - better than typing set codes
- Migrate to Slash Commands - modern Discord standard
- Keep
!commands for backward compatibility initially - Add autocomplete for themes
- Keep
- Persistent buttons - buttons that work across bot restarts
- Thread creation for pick sessions
- Comparison tool - compare two deck lists side-by-side
- User preferences - save favorite sets, themes
- Pick history tracking - see what you've picked before
- Tournament mode - special features for organized play
- Use
custom_idwith encoded data (set, theme, variant) - Max 100 characters in
custom_id - Format:
list:JMP:ANGELS:2or similar
- Buttons don't count toward command rate limits (advantage!)
- But interactions still have limits
- Implement cooldowns if needed
- Some features need to track state (user preferences, history)
- Consider adding a simple database (SQLite)
- Or use Discord's built-in user/server settings
- Keep existing
!commands working - Add new features as optional enhancements
- Gradual migration path for users
- Most picked themes
- Rarest combinations
- User statistics
- Share pick results
- Challenge friends to use specific themes
- Rate combinations
- Swiss pairing helper
- Match reporting
- Standings tracking
Document Version: 1.0 Created: 2025-12-04 Last Updated: 2025-12-04
Ideas collected during JSON migration planning session