The tracklist
Track 01

Kitty

A homemade Discord bot for a pop fan community: lyric blind tests, album roles and artist news.

Private GitHub repository
Context
Personal project
Platform
Discord
Code
Private repository
Liner notes

The project

Kitty runs a Discord server for pop fans, built around Taylor Swift, Sabrina Carpenter, Gracie Abrams, Olivia Rodrigo and Conan Gray. It's my biggest personal project, and the one that mixes code and music the most.

It's written in TypeScript with discord.js. Lyrics come from the Genius API, and a script builds the catalog from the official album tracklists: 666 songs across 44 albums.

Tech stack

  • TypeScript
  • Node.js
  • Discord.js
  • API Genius
  • Cheerio

Kitty's source code isn't public.

What it does

The features

  1. Lyric blind test

    /guess shows a few lines of a song: the first to find the title wins. Pick the artists, the albums and the number of lines.

  2. Duel mode

    Challenge another member: only the two players can answer. Win streaks get announced, all the way up to “LÉGENDAIRE”.

  3. Hints and near misses

    Artist, album, hangman or an extra line. An almost-right answer is detected using Levenshtein distance.

  4. Fill in the lyrics

    /fill hides words in a snippet, with three difficulty levels and letter or syllable hints.

  5. Album roles

    Buttons with the server's emojis to pick your favorite albums and get the matching role.

  6. Server life

    A welcome message in French or English, a bilingual question of the day, new Instagram post alerts, and a “Listening to” status that changes every 5 minutes.

In action

On the server

Two messages as Kitty displays them on Discord, recreated in HTML.

KittyAPP
🎵 Blind Test — Configuration
🎤 Artiste(s)Taylor Swift
💿 AlbumsTous les albums
📝 Lignes3
💡 IndicesActivés
Choisis au moins un artiste puis lance !
➖ Lignes (3)➕ Lignes (3)💡 Indices : ON▶️ Lancer
KittyAPP
🔥 EN FEU ! (x8)

🎉 Damien a trouvé en 4.2s !

🎵 Midnight Rain — Taylor Swift
💿 Midnights • Genius

🔥 Streak8 victoires consécutives
🔄 Rejouer