Skip to content

SNIPPIK/UnTitles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌟 Discord Music Bot

Incredible bot with its own voice/audio engine, scalable architecture, multiple filters and support for 6 music platforms.

Audio quality surpasses lavalink, don't believe me? Listen for yourself! Works without any drops even on ARM!

English | Русский

Title

License Latest release All downloads All Contributors


πŸ‘₯ Authors

πŸ“’ Please report any errors or omissions in Issues
🚫 The bot does not work 24/7 β€” it may be unavailable!

Invite Server

Warning

⚠️ WatKLOK (UnTitles) is a complex technical project, which is supported exclusively by 1 author SNIPPIK
Incorrect use, removal of authorship or appropriation will lead to the closure of the public repository

Important

If there is no response from YouTube - install ytdlp-nodejs. It is strongly recommended to enable caching
main β€” stable, but rarely updated branch
beta β€” newest fixes and features, may be unstable


⚠️ Hardware requirements | Data from Ryzen 7 5700x3D | 1 player

  • CPU: 0-0.1%
  • Ram: ~80 MB, it all depends on the number of tracks, the load on the platforms, namely YouTube!
  • Disk: ~50 MB, 200 GB is enough for caching (1.5k tracks ~1.2 GB)

🎧 Main features

πŸŽ–οΈ Features

  • Not afraid of the event loop, even in this case the sound goes smoothly!!!
setInterval(() => {
const startBlock = performance.now();
while (performance.now() - startBlock < 100) {}
}, 200);

πŸ”Š Voice engine

🎡 Audio

  • It is possible to reuse audio without conversion if it is less than 8 minutes long
  • Smooth fade-in/fade-out transition between tracks, even with skip, seek and tp.
  • There is a system of smooth transition from one audio to another Hot audio swap
  • 16+ filters, you can add your own without complex digging in the code filters
  • There is support for long videos, Live video is still raw.
  • There is an explicit synchronization of the audio stream

🌐 Platforms

  • Support for YouTube, Spotify, VK, Yandex-Music, SoundCloud, Deezer
  • Precise search in the absence of audio, through time and names by syllables
  • If searching on other platforms in the absence of audio!
  • Platforms work in a separate worker (thread) for performance
  • Everything is described in detail, there are examples and a bunch of interfaces for typing
  • Easy expansion and addition of new platforms via Dynamic Loader - Handler

🌍 Localization

  • Available languages: English, Russian (file with languages)
  • You can add any language supported by discord

πŸ”© Other functionality

Own system handlers

  • Universal loader: commands, events, components, middlewares, rest
  • Own framework for commands, buttons, menu selectors, events
  • Decorators and interfaces are used, including typing
  • Support for "hot" reloading

πŸ’‘ Adaptive loop

  • It is not afraid of event loop and drift, it just takes them into account not as a problem, but as parameters!
  • The loop can work ahead from 0 to 2 ms to process objects in the loop!
  • Audio sending is built on it!
  • Cycle accuracy Β±0.05 ms with Date.now + performance.now

βš™οΈ Internal tools

  • SetArray - 2 in one Array and Set in one class
  • Cycle - Manages the message update system and sending audio packets
  • TypedEmitter - typed EventEmitterAsyncResource
  • SimpleWorker - Class for working with threads

πŸŽ› Interface

  • Interactive buttons: actions depend on the player state
  • Progress bar support with time codes
  • Responsive UI - does not require reusing commands

πŸ“š Commands

Command Autocomplete Arguments Description
/api ❌ access:(block, unblock) API management
/bot ❌ restart:(commands, bot, events) Restart
/filter βœ… (off, push, disable) Audio filters
/play βœ… (query) Playback
/player βœ… (api, replay, stop, wave) Advanced playback
/volume βœ… value Player volume
/remove βœ… value Delete track
/seek ❌ 00:00, int Seeking time track
/skip βœ… (back, to, next) Skip tracks
/queue βœ… {destroy, list} Queue management
/avatar βœ… {user} User avatar
/voice βœ… (join, leave, tribune) Voice channel
/report ❌ (none) Contact developer

πŸš€ Quick start

Node.js or Bun is required, as well as FFmpeg installed
All configuration is written in .env

# Clone
git clone https://github.com/SNIPPIK/UnTitles
cd UnTitles

# Install dependencies
npm install

# Run via Node.js
# configure environment variables in build/.env
npm run build && npm run start

# Run via Bun
# configure environment variables in ./env
npm i dotenv
bun run start-bun

TypeScript Bun NodeJS Discord.js WS FFmpeg

πŸ“Š Diagram of the entire project

  • In case you are interested in how the bot is built Diagram

About

This is the first discord music bot that breaks stereotypes about audio quality!

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •