A Discord bot for organizing Valorant Premier tournaments with automated weekly match scheduling.
Premier Pal helps tournament organizers schedule and manage 6 or 7-week Valorant Premier tournaments. It automatically sends weekly reminders with match scheduling information, keeping your team organized throughout the season.
- Flexible Tournament Duration: Schedule tournaments for 6 or 7 weeks
- Division Support: Configure tournaments for Elite 5 or Contender divisions
- Map Rotation: Select up to 7 maps from all Valorant maps (Ascent, Bind, Haven, Split, Breeze, Sunset, Abyss, Corrode, Pearl, Fracture, Icebox, Lotus)
- Automated Reminders: Weekly Monday notifications at 9 AM CET with:
- Current week and map
- Match days and times based on division
- Role mentions for team coordination
- Playoff notifications in the final week
- Interactive Setup: Guided command flow with dropdown menus for maps and roles
| Command | Description |
|---|---|
/schedule_tournament |
Schedule a new tournament with start date, division, duration, maps, and role to tag |
/ping |
Check bot latency and API response time |
- Runtime: Node.js 22+
- Package Manager: pnpm
- Language: TypeScript
- Discord: discord.js v14
- Scheduling: @upstash/qstash (cron-based)
- Server: Express.js
- Linting: Biome
- Discord Application with Bot Token
- Upstash QStash account for scheduled tasks
- Publicly accessible server (for QStash webhooks)
-
Clone and install:
pnpm install
-
Environment variables: Create a
.envfile with the following:BOT_TOKEN=your_discord_bot_token CLIENT_ID=your_discord_client_id QSTASH_TOKEN=your_upstash_qstash_token WEBHOOK_URL=https://your-server.com PORT=3000 -
Start the bot:
pnpm dev
- Run
/schedule_tournamentin your Discord server - Provide the tournament start date (DD/MM/YYYY format)
- Select the division (Elite 5 or Contender)
- Choose the tournament duration (6 or 7 weeks)
- Select the maps to be played in calendar order
- Choose a role to be tagged in weekly reminders
The bot will automatically schedule reminders for every Monday of the tournament, with division-specific match schedules.
src/
├── index.ts # Bot entry point & command registration
├── server.ts # Express server for webhooks
├── commands/
│ ├── scheduleTournament.ts # Tournament scheduling command
│ └── ping.ts # Latency check command
├── api/
│ └── tournamentReminder.ts # Reminder webhook handler
└── utils/
└── timeUtils.ts # Date formatting utilities
pnpm dev- Start the bot and serverpnpm lint- Run Biome linterpnpm format- Format code with Biome