Features

Features

Meww.me is a full-stack Discord music bot with a web dashboard. This page lists every major feature as implemented in the current codebase.

Music Playback

  • Play tracks from YouTube, YouTube Music, Spotify, SoundCloud, Deezer, Apple Music, Tidal, and direct HTTP streams via Lavalink v4.
  • Queue management with add, remove, skip, shuffle, move, and clear.
  • Loop modes: off, track, and queue.
  • Autoplay - automatically queues related tracks when the queue ends.
  • Volume control (1-100, default configurable in config.yml).
  • Seek within tracks by timestamp.
  • Now-playing embed with two display modes:
    • V1 (Music Card) - visual music card image generated by mewcard (opens in a new tab) with 19+ themes, dynamic colors, and album artwork. Users can create custom card themes via the mewcard repository.
    • V2 (Container) - lightweight text-based container using Discord Components V2. No image generation, faster rendering.
  • Interactive playback buttons: Shuffle, Previous, Pause/Play, Skip, Loop, Autoplay, Volume, Stop, Queue.
  • Recommendation select menu - suggests up to 10 similar tracks via Last.fm API (track.getSimilar + artist.getSimilar). Cached for 10 minutes per track.
  • Audio filter select menu with 24 real-time effects.
  • Lyrics display (synced and plain) via lrclib.net (opens in a new tab).

Audio Filters

26 real-time audio filters applied through Lavalink's equalizer and filter system:

Nightcore, Bass, Bassboost, Soft, Pop, Treblebass, Earrape, Equalizer, 3D (Eight Dimension), China, Chipmunk, Darthvader, Daycore, Doubletime, Karaoke, Lofi, Pitch, Rate, Reset, Slowmotion, Speed, Superbass, Television, Tremolo, Vaporwave, Vibrato.

Each filter is a standalone slash command under the /filter category.

Playlists

  • Create, view, edit, and delete personal playlists.
  • Add or remove individual tracks from playlists.
  • Import playlists from Spotify.
  • Play an entire playlist into the queue.
  • Save the current queue as a new playlist (/savequeue).
  • Playlist access can be gated behind a premium or voter requirement via DASHBOARD_ACCESS.Playlist.

Games

12 interactive Discord games plus Music Trivia:

2048, Connect4, FastType, Flood, GuessThePokemon, Hangman, Minesweeper, RockPaperScissors, Slots, Snake, TicTacToe, Wordle, Music Trivia.

Music Trivia

A full-featured music guessing game:

  • Single player and multiplayer modes (lobby system with join/start/cancel).
  • Audio clips played via Deezer 30-second previews through Lavalink.
  • Smart song selection with weighted scoring, anti-repeat logic, and Last.fm personalization.
  • 12 genres: Pop, Rock, Hip-Hop, K-Pop, J-Pop, Indie, R&B, Electronic, Latin, Country, Metal, Classical.
  • Scoring system: base points (100) + speed bonus (0–50) + streak bonus.
  • 11 achievement badges (first game, 10/50/100 games, points milestones, perfect round, etc.).
  • Per-user stats, history (last 50 sessions), and genre-level statistics.
  • Monthly cleanup of stale preference data (runs on the 25th of each month).

Last.fm Scrobbling

  • Connect a Last.fm account via OAuth callback through the Express WebServer.
  • Automatic scrobbling of played tracks to Last.fm.
  • Scheduled scrobble processing (configurable interval, default 60 seconds).
  • Dashboard integration for connecting and disconnecting Last.fm accounts.

Premium System

Tiered premium with multiple sources:

SourceTypeDescription
Bot OwnerAutomaticOWNER_ID in config always bypasses
AdminAutomaticADMIN array in config always bypasses
PatreonWebhookActive pledges above minimum tier
Ko-fiWebhookActive subscriptions via Ko-fi webhook
Premium RoleGuildMembers with the configured premium role

Premium status is unified - the system checks all sources and returns a single boolean. Per-feature access control is managed via DASHBOARD_ACCESS and COMMANDS_ACCESS in config.

Welcomer

Canvas-based welcome and leave images:

  • Triggered on guildMemberAdd and guildMemberRemove events.
  • Customizable background images.
  • Configurable welcome and leave channels.
  • Per-guild toggle via WELCOMER_EVENTS config.

Ticket System

  • Admin-managed support ticket creation.
  • Transcript export.
  • Helpdesk and helper configuration via dashboard admin routes.
  • Close, delete, and history endpoints.

Temporary Voice Channels

  • Auto-created voice channels when users join a designated channel.
  • Channels are automatically deleted when empty.
  • Managed by TempVoiceService.

DJ Role

  • Restrict music commands to a specific Discord role.
  • Configurable per guild via the /settings dj command or dashboard.

Sharding

Built-in cluster manager (ClusterManager) for scaling across multiple shards:

  • Configurable shardsPerClusters and totalClusters in config.yml.
  • Worker process spawning via bootloader.ts.
  • Health reporting via ClusterHealthReporter.
  • Start with npm run start:shards.

Web Dashboard

A React + Vite frontend with:

  • Discord OAuth2 login (session-based, 7-day cookie).
  • Server selector showing mutual guilds.
  • Real-time music player with playback controls, queue view, and volume slider.
  • Guild settings editor (prefix, language, DJ role, 24/7 mode, autoplay, song request channel).
  • Liked songs management.
  • User profile page with listening stats and premium badge.
  • Global stats page.
  • System status page.
  • Admin dashboard (premium management, blacklist, maintenance, bot profiles, helpdesk).
  • AI Music Chat powered by Google Gemini.
  • Background music player component.

AI Music Chat

Dashboard-integrated AI assistant powered by Google Gemini:

  • Natural conversation about music with song recommendations.
  • Multiple API key rotation with automatic fallback.
  • Multiple model support (Gemini 2.5 Flash, 2.0 Flash, etc.).
  • Song artwork enrichment from Deezer, iTunes, and Spotify.
  • Per-user chat history (last 50 messages, 12 sent as context).
  • Smart play button (play immediately or add to queue based on current state).
  • Access controllable via DASHBOARD_ACCESS.AiChat.

Broadcast and Tips System

Smart, non-intrusive user education:

  • 15% trigger probability on targeted commands.
  • 24-hour cooldown between broadcasts per user.
  • Auto-reset after all tips have been seen.
  • Supports rich container mode and simple text mode.
  • Interactive command mentions (clickable /command in Discord).

Localization

22 languages supported:

Arabic, Czech, German, English, Spanish, French, Hebrew, Hindi, Indonesian, Italian, Japanese, Korean, Dutch, Polish, Portuguese, Russian, Thai, Turkish, Ukrainian, Vietnamese, Chinese (Simplified), Chinese (Traditional).

Language files are stored in src/languages/<code>/ and loaded by the Localization service.

REST API

Two-layer API architecture:

LayerFrameworkPortPurpose
Internal APIFastify2555/v1/* routes - bot control, player state, settings, search
Dashboard ProxyFastify2555/api/* routes - session-authenticated proxy to internal API
Webhook ServerExpress2444/vote, /kofi, /lastfm - external service webhooks

See REST API for full endpoint documentation.