Feature: /breakout command - Core grouping functionality #2

Open
opened 2026-01-21 10:53:12 -08:00 by naomi · 0 comments
Owner

Summary

Implement the main /breakout slash command that creates random groups from voice channel members.

Command Specification

/breakout <groupsize> [exclude_roles] [exclude_users]
Parameter Type Required Description
groupsize Integer Yes Target number of people per group (minimum: 2)
exclude_roles Role[] No Roles to exclude from grouping
exclude_users User[] No Specific users to exclude from grouping

Behavior

  1. Validation

    • Command runner must be in a voice or stage channel
    • Group size must be ≥ 2
    • Must have enough people to form at least one group
  2. Exclusions

    • Command runner is always excluded (they're the facilitator)
    • Members with any of the exclude_roles are excluded
    • Members in exclude_users are excluded
  3. Grouping Algorithm

    • Prioritize balanced groups over exact sizes
    • Example: 27 people with size 10 → groups of 9, 9, 9 (not 10, 10, 7)
    • Algorithm: Divide total by size, then distribute remainder evenly
  4. Output

    • Post an embed listing each group with @mentions
    • Include group number and member count
    • Maybe add a fun randomized header? (" Coffee Chat Groups", "🎯 Breakout Teams", etc.)

Example Output

🎯 Breakout Groups (Size: ~4)

**Group 1** (4 members)
@Alice, @Bob, @Charlie, @Diana

**Group 2** (4 members)
@Eve, @Frank, @Grace, @Henry

**Group 3** (3 members)
@Ivy, @Jack, @Kelly

Acceptance Criteria

  • Command validates user is in voice/stage channel
  • Command runner is automatically excluded
  • Optional role/user exclusions work correctly
  • Groups are balanced (prefer equal sizes)
  • Embed is posted with @mentions for each group

This issue was created with help from Hikari~ 🌸

## Summary Implement the main `/breakout` slash command that creates random groups from voice channel members. ## Command Specification ``` /breakout <groupsize> [exclude_roles] [exclude_users] ``` | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `groupsize` | Integer | Yes | Target number of people per group (minimum: 2) | | `exclude_roles` | Role[] | No | Roles to exclude from grouping | | `exclude_users` | User[] | No | Specific users to exclude from grouping | ## Behavior 1. **Validation** - Command runner must be in a voice or stage channel - Group size must be ≥ 2 - Must have enough people to form at least one group 2. **Exclusions** - Command runner is **always** excluded (they're the facilitator) - Members with any of the `exclude_roles` are excluded - Members in `exclude_users` are excluded 3. **Grouping Algorithm** - Prioritize **balanced** groups over exact sizes - Example: 27 people with size 10 → groups of 9, 9, 9 (not 10, 10, 7) - Algorithm: Divide total by size, then distribute remainder evenly 4. **Output** - Post an embed listing each group with @mentions - Include group number and member count - Maybe add a fun randomized header? ("☕ Coffee Chat Groups", "🎯 Breakout Teams", etc.) ## Example Output ``` 🎯 Breakout Groups (Size: ~4) **Group 1** (4 members) @Alice, @Bob, @Charlie, @Diana **Group 2** (4 members) @Eve, @Frank, @Grace, @Henry **Group 3** (3 members) @Ivy, @Jack, @Kelly ``` ## Acceptance Criteria - [ ] Command validates user is in voice/stage channel - [ ] Command runner is automatically excluded - [ ] Optional role/user exclusions work correctly - [ ] Groups are balanced (prefer equal sizes) - [ ] Embed is posted with @mentions for each group --- ✨ This issue was created with help from Hikari~ 🌸
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: nhcarrigan/rondelle#2