Skip to content

Repository files navigation

tvbot

An open-source fmbot clone, built from scratch in TypeScript.

Discord.js TypeScript Tests


fmbot Feature Parity

Feature Progress
Now Playing .fm — 6 embed modes, buttons, artwork █████████░ 95%
Artwork Engine — Spotify → Deezer → Apple → Last.fm ██████████ 100%
Who Knows .wk .wkt .wka — guild leaderboards ████████░░ 85%
Friends Who Knows .fwk .fwkt .fwka ████████░░ 85%
Guild Crowns — steal logic, thresholds, seeding ██████████ 100%
Grid Charts .chart — 3×3 to 10×10, Puppeteer ██████████ 100%
Top Artists / Albums / Tracks — pagination, time periods █████████░ 90%
Daily Overview — day-by-day scrobble breakdown ████████░░ 85%
Artist Top Tracks ██████████ 100%
Taste & Compatibility ████████░░ 85%
Track Details — BPM, key, audio preview voice message ██████████ 100%
Friend System — add, remove, manage █████████░ 90%
Delta Sync — background scrobble updates ██████████ 100%
Playcounts (artistplays, albumplays, trackplays) ██████████ 100%
Long-tail (plays, pace, milestone, discoverydate, lastlistened) ██████████ 100%
Server billboard (serverartists / topalbums) ░░░░░░░░░░ 0%
Genre & Country commands ░░░░░░░░░░ 0%
Guild admin & configuration █░░░░░░░░░ 10%
Overall core parity ██████░░░░ ~60%

Extras not in fmbot at all: Lavalink music playback, football live scores, Essentia audio analysis.


Stack

TypeScript · discord.js v14 · PostgreSQL + Prisma · Redis · Puppeteer · Moonlink.js v5 (Lavalink) · tsyringe · Vitest

Setup

git clone https://github.com/tvbot69/tvbot.git && cd tvbot
npm install
cp .env.example .env   # fill in DISCORD_TOKEN, DATABASE_URL, LASTFM_API_KEY/SECRET
npm run db:generate && npm run db:deploy
npm run dev

Releases

Packages

Contributors

Languages