Skip to content
CreateDiscordBot
Menu

Discord bots I've built

Each case below is described from the code and its history, not from memory. Clients who haven't agreed to be named are described by what they do, my own projects say so, and where I built on someone else's work it says so too.

Rivals League, a Swedish league whose platform I build, 2026

Discord operations for a 154-team league

The Discord side of a league platform: every team gets its roles and channels from the roster, the league's broadcasts are announced automatically, and players log in to the league site with Discord.

  • Provisioning scripts build the server from the league roster: 7 divisions, 18 groups and 154 teams, each with its own role, private voice channel and staff permissions. Every script has a dry-run mode.
  • A go-live notifier checks the league's Twitch channel every minute. When it goes live, each game's Discord channel (CS2, League of Legends, VALORANT) gets an alert with that day's division, with a six-hour cooldown per game so nobody gets spammed.
  • Players sign in to the league website with Discord, and a sync job repairs usernames that have changed since registration.
  • Staff get member counts per game server with hourly snapshots, so they can see how many joined in the last seven days.

Built with

  • discord.js 14
  • Discord OAuth2
  • Vercel functions and cron
  • Supabase
  • Twitch API

Esports and league bots: how I'd build yours

An esports tournament organiser, 2024 to 2025

Map veto bot for CS2 and VALORANT matches

Captains run the ban and pick phase inside a private match channel instead of in a spreadsheet or a third-party site.

  • Admins create a veto channel per match, assign a captain for each team and set the format with slash commands.
  • The veto engine works out the ban and pick order for best-of-1 to best-of-5, handles attacker and defender or CT and T side picks, and picks the decider automatically.
  • Each step is a button press by the right captain, and the bot posts a summary embed with the final maps when the veto ends.
  • Covers the CS2 active-duty pool and both the competitive and full VALORANT map pools.

Built with

  • discord.js 14
  • NestJS
  • TypeORM
  • MySQL

I rebuilt the veto flow and the side-pick logic on top of an existing codebase started by another developer.

Esports and league bots: how I'd build yours

A Swedish online esports league, 2025

Registration and setup bot for a 131-team league season

Team registration, player rosters, roles and channels for a full season, kept in step with the league's Google Sheet.

  • Captains run /register and get a team card with Add Player and Request Sub buttons that open short forms for in-game name, tracker profile and nationality.
  • On season start the bot created 138 channels and 123 roles in under half an hour for 131 teams and 793 players.
  • Seeding comes in from Google Sheets and teams and players go back out, so admins keep working in the sheet they already use.
  • A season-reset command removes everything the bot created, so the next season starts clean.

Built with

  • discord.js 14
  • SQLite
  • Google Sheets via SheetDB

Built together with another developer from the league.

Esports and league bots: how I'd build yours

An esports tournament organiser, 2025

Ticket bot with control rooms and transcripts

Players open support, match or custom tickets from one control message, and staff get a full record of every conversation.

  • A control room message has buttons for support, match and custom tickets. Each ticket is a private, numbered channel.
  • Staff can add or remove people and roles, rename, close, reopen and delete tickets. Deleting produces an HTML transcript.
  • Every ticket, message and staff action is stored, so disputes can be checked afterwards.
  • A guided /onboarding command sets the bot up in a new server.

Internal project, 2025

Trello board in Discord, both directions

Create, move and list Trello cards with slash commands, and get every board change posted back to a channel.

  • Eight slash commands cover boards, lists and cards, including creating, moving and deleting cards.
  • A webhook receiver checks Trello's HMAC signature before trusting any event.
  • More than ten Trello event types, from comments to attachments to member changes, become readable embeds.

Built with

  • discord.js 14
  • Express
  • Trello REST and webhooks

Integrations: how I'd build yours

Why there are no testimonials here

Quotes on this page will come from real clients who agreed to be named, with a link you can check. Until then you get the specifics above, and I'm happy to show the bots running in a test server on a call.

Tell me what your server needs

Send a short brief. You get a reply within one business day with questions or a price range, and a fixed quote before any work starts.