Skip to content

Ditto v0.5.0

Choose a tag to compare

@da0t-exe da0t-exe released this 23 Sep 21:27
· 21 commits to main since this release

Music now plays through Lavalink — started by Ditto itself, in the same server. No second server, no custom egg.

Built-in Lavalink

  • On first start Ditto downloads a Java 21 runtime (unless Java 17+ is installed) and the latest Lavalink with its YouTube plugin into data/lavalink, writes the config, and runs it on 127.0.0.1 with 512 MB of memory.
  • Once a day it checks for new Lavalink and plugin releases, and restarts onto them as soon as nobody is listening.
  • Lavalink 4.2 supports Discord's voice encryption (DAVE), required for bots since March 2026. On Linux it needs glibc 2.35 or newer.
  • LAVALINK_HOST, LAVALINK_PORT and LAVALINK_PASSWORD point Ditto at an external node instead.

Playback that falls back

Each track goes to Lavalink first. If Lavalink cannot load it, yt-dlp finds the direct media address; failing that, yt-dlp downloads a copy that Lavalink plays from disk. TikTok, X and Instagram always take the download route.

New commands

/seek time Jump to a moment — 1:30 or 90
/filter effect Bass boost, nightcore, vaporwave, 8D, karaoke — or none

Removed

@discordjs/voice, opusscript and libsodium-wrappers: Lavalink handles the voice connection now.

Upgrading

git fetch origin && git reset --hard origin/main && npm install --omit=dev && npm start

The first start takes longer: Java, Lavalink and yt-dlp are downloaded (about 250 MB). Plan about 1 GB of RAM for the bot.

Note

Checked locally against the real services: Lavalink 4.2.2 with YouTube plugin 1.18.2 started and loaded a YouTube video, a YouTube Music track and a SoundCloud track, and both yt-dlp fallbacks — direct address and downloaded copy — played through Lavalink. Playback in a Discord voice channel has not been tested yet.