A Discord bot built with NestJS and Necord for managing Call of Duty Mobile tournament roster setups with weapon class roles, operator skills, and equipment selection.
- Interactive Roster Setup Flow: Step-by-step guided setup for 5-player teams
- Weapon Class Role Management: Enforces competitive pool limits (3 ARs, 3 SMGs, 2 Heavy, 2 Marksman)
- Competitive Weapon Pool: Pre-configured with current meta weapons
- Operator Skills Selection: Unique operator per player enforcement
- Equipment Configuration: Lethal and tactical equipment with limits
- Map Voting: Display of competitive map pool by game mode
- Real-time Validation: Prevents invalid selections and enforces tournament rules
- Weapon Class Roles - Each player selects 2 different weapon class roles
- Weapons - Choose weapons based on assigned roles
- Operator Skills - Select unique operator (one per team)
- Lethal & Tactical - Pick equipment (3 max per tactical type)
- Maps - View competitive map pool
- Final Preview - Review complete roster configuration
/setupchannels <channel>- Configure channels for setup messages/resetsetup- Reset current roster setup
-
Install dependencies:
npm install
-
Set up Discord Bot:
- Create a bot at Discord Developer Portal
- Enable intents: Guilds, Guild Messages, Message Content
- Add bot permissions: Send Messages, Embed Links, Use Slash Commands, Manage Messages
- Add DISCORD_BOT_TOKEN to environment variables
-
Run the bot:
npm start
- Use
/setupchannelsto designate roster setup channels - Bot automatically sends setup embed when started
- Players click "Join" to start the setup process
- Follow the interactive flow through all setup pages
- View final roster preview when complete
- Assault Rifles (AR): M13, DR-H, HVK-30, Vargo-S, BP50
- Sub-Machine Guns (SMG): USS9, Fennec, CX-9, QQ9
- Heavy: Holger 26, MG42, Chopper, HS0405, R9-0, KRM-262
- Marksman: Type 63, SKS, Tundra, DL Q33
- 3 AR roles per team
- 3 SMG roles per team
- 2 Heavy roles per team
- 2 Marksman roles per team
War Machine, Equalizer, Purifier, Death Machine, Gravity Vortex, Sparrow, Claw, Annihilator, Tempest
- Lethal: Frag Grenade, Sticky Grenade (unlimited)
- Tactical: Trophy System, Flash Grenade, Smoke Grenade (max 3 per type)
- NestJS - Progressive Node.js framework
- Necord - Discord.js wrapper for NestJS
- Discord.js v14 - Discord API library
- TypeScript - Type-safe development
src/
├── bot/
│ ├── commands/ # Slash commands
│ ├── interactions/ # Button & dropdown handlers
│ ├── bot.service.ts # Business logic
│ ├── bot.update.ts # Event handlers
│ └── bot.module.ts # Module configuration
├── constants/
│ └── game-data.ts # Game data & configurations
├── app.module.ts # Root module
└── main.ts # Entry point
ISC