A Discord bot for managing Valorant Premier team schedules, practices, and matches. Built with TypeScript, discordx, and Discord.js.
- Automated Event Scheduling: Generates 7-week Premier season schedules with practices and matches
- Event Announcements: Automated weekly announcements for upcoming events via cron jobs
- Attendance Tracking: Interactive buttons for players to accept/decline/tentative events
- Roster Management: Automatically creates match rosters when 5+ players accept
- Role-Based Permissions: Admin and manager guard decorators for command access
- Persistent Storage: Enmap-based SQLite storage for season data and event responses
Each 7-week season includes 35 total events:
- Wednesday: 7pm-8pm Practice
- Thursday: 7pm-8pm Match
- Friday: 8pm-9pm Practice
- Saturday: 8pm-9pm Match
- Sunday: 7pm-8pm Match
All times are in Pacific Time (America/Los_Angeles).
/setup- Initialize a new Premier season/channels- Configure announcement, practice, and match channels/roles- Set team role and admin/manager roles/maps- Set the map pool for the season/generateevents- Create all season events and schedule announcements
- Node.js (v18+)
- npm
- Discord bot token
-
Clone the repository
-
Install dependencies:
npm install
-
Create a
.envfile with your bot token:BOT_TOKEN=your_bot_token_here -
Start development mode:
npm run dev
npm run dev- Watch mode with tsx (no build)npm run start:dev- Watch build with auto-restartnpm run build- TypeScript compilationnpm run start- Run built production codenpm run lint- Check code stylenpm run lint:fix- Fix linting issues
Start the bot:
docker-compose up -dStop the bot:
docker-compose downView logs:
docker-compose logssrc/
├── bot.ts # Discord client singleton
├── main.ts # Entry point and scheduler initialization
├── commands/ # Slash commands
├── events/ # Button and reaction handlers
├── guards/ # Authorization guards
├── services/ # Scheduler and background tasks
├── types/ # TypeScript interfaces
└── utils/ # Helper functions
- discordx - TypeScript decorators for Discord.js
- Discord.js - Discord API library
- Enmap - Persistent key-value storage
- node-cron - Task scheduling