Replaced the bot's audio handling system by removing Lavaplayer dependencies and migrating to a Lavalink v4 node. Updated `MusicManager`, `TrackScheduler`, and related classes to utilize the `LavalinkClient`. Refactored playlist and track loading logic, task integrations, and event dispatch to integrate with the remote node. Deprecated the custom Udio source, preserving references for a future plugin port. Documented configuration and deployment details for the new audio architecture.
2.1 KiB
2.1 KiB
Net Neutrality — Technical Documentation
This directory contains detailed technical documentation for the Net Neutrality Discord bot
(me.bobert:netneutrality, version 3.0.0).
It is intended for developers working on the codebase. It documents every major system and subsystem, how they fit together, and the end-to-end flows that tie them.
Table of contents
| Document | Subsystem |
|---|---|
| architecture.md | High-level architecture, startup/shutdown lifecycle, tech stack |
| events.md | Event handling & routing (EventsHandler) |
| contexts.md | Contexts — the abstraction over Discord events |
| commands.md | Commands — message & slash commands, dispatch, options |
| tasks.md | Tasks — button/emoji/modal/step/built-in/persistable/scheduled tasks |
| persistence.md | Database — Hibernate/JPA, Flyway, entities, repositories, services |
| music.md | Music — Lavalink node & client, queue, event dispatch |
| web-api.md | HTTP Web API — internal control & introspection server |
| threading.md | Threading & scheduling infrastructure |
| utilities-and-bootstrap.md | Utilities, configuration, logging, exceptions |
How to read this documentation
Start with architecture.md for the big picture and the startup sequence. Then read events.md and contexts.md, because almost everything else is triggered through a Context produced by the EventsHandler. From there, the two primary execution paths are commands.md and tasks.md.
Conventions
- Class names are given fully qualified on first mention, then by simple name.
- Database entity classes are prefixed with
O(e.g.OGuild), and are documented in persistence.md. - Environment variables / configuration keys use the
NETNEUTRALITY_*andMYSQL_*prefixes and are documented in utilities-and-bootstrap.md.