Absolet is a self-hosted, general-purpose Discord bot designed for community server owners who want full control over their bot’s data, features, and behavior. Rather than inviting a third-party service, you run Absolet on your own infrastructure — giving you complete ownership of your configuration, your database, and every interaction your members have with it. Built on TypeScript and discord.js v14, it ships with a broad feature set out of the box while remaining straightforward to configure through two YAML files.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/devjhoan/absolet/llms.txt
Use this file to discover all available pages before exploring further.
Features
Absolet covers the most common needs of an active Discord community. Each feature area is independently configurable and can be enabled or disabled per-command inconfig/commands.yml.
🎫 Tickets
Create, manage, and transcript support tickets. Staff can claim, close, open, and add or remove members from ticket channels.
🔨 Moderation
Ban, kick, warn, and mute members. Manage announcements, snipe deleted messages, and keep a staff history log.
💰 Economy
Full server economy with a wallet and bank, daily and weekly rewards, work cooldowns, rob mechanics, a shop, and admin money management.
⭐ Levels
XP-based levelling system with a rank card generated via
@napi-rs/canvas. Admins can give, set, or remove XP and levels directly.🎵 Music
Full-featured music player powered by DisTube with Spotify support. Play, skip, pause, resume, adjust volume, and more from voice channels.
🎉 Giveaways
Create and manage giveaways with automatic winner selection powered by
discord-giveaways.✅ Verification
Gate access to your server with a configurable verification step before members can interact with the rest of your channels.
🏷️ Reaction Roles
Let members self-assign roles by reacting to messages, keeping role management hands-off for your staff team.
Tech Stack
Absolet is built with a modern, type-safe toolchain. The key libraries and their versions are pinned inpackage.json:
| Library | Version | Purpose |
|---|---|---|
typescript | 5.3.3 | Language and type safety |
discord.js | 14.11.0 | Discord API client |
distube | ^4.0.4 | Music playback engine |
@distube/spotify | ^1.5.1 | Spotify URL resolution for DisTube |
mongoose | ^7.4.2 | MongoDB object modelling |
discord-giveaways | ^6.0.1 | Giveaway lifecycle management |
discord-backup | ^3.3.2 | Server backup and restore |
@napi-rs/canvas | ^0.1.39 | Rank card and image generation |
discord-html-transcripts | ^3.1.3 | HTML ticket transcripts |
js-yaml | 4.1.0 | YAML config file parsing |
glob | 8.0.3 | File discovery for events, commands, and addons |
ms | ^2.1.3 | Human-readable duration parsing |
Architecture Overview
Absolet’s core is theExtendedClient class, which extends discord.js’s Client and adds all bot-specific collections and logic.
ExtendedClient.start() runs through the following sequence:
- Login — connects to Discord using the token from
config/config.yml. - Database — establishes a Mongoose connection using the MongoDB URI.
- Events — dynamically loads every file under
src/events/**via glob and registers them withclient.on(). - Addons — loads any addon modules found under
src/addons/**/index.ts, registering their commands and events. - Commands — loads all files under
src/commands/**, filtering out any commands withEnabled: falseinconfig/commands.yml. - Register — syncs the loaded commands to Discord’s application command API if the count has changed.
- Activity — begins cycling through the bot statuses defined in
ActivitySettings.
config/config.yml, config/commands.yml, config/messages.yml) are read synchronously at class instantiation time using js-yaml, making them available as typed objects throughout the bot’s lifetime.
Absolet is designed for single-guild deployments. If the bot is invited to more than one server, it will operate using the first guild in its cache and log a warning. Multi-guild support is considered a beta feature and is not officially supported.