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.
38 lines
2.1 KiB
Markdown
38 lines
2.1 KiB
Markdown
# 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](architecture.md) | High-level architecture, startup/shutdown lifecycle, tech stack |
|
|
| [events.md](events.md) | Event handling & routing (`EventsHandler`) |
|
|
| [contexts.md](contexts.md) | Contexts — the abstraction over Discord events |
|
|
| [commands.md](commands.md) | Commands — message & slash commands, dispatch, options |
|
|
| [tasks.md](tasks.md) | Tasks — button/emoji/modal/step/built-in/persistable/scheduled tasks |
|
|
| [persistence.md](persistence.md) | Database — Hibernate/JPA, Flyway, entities, repositories, services |
|
|
| [music.md](music.md) | Music — Lavalink node & client, queue, event dispatch |
|
|
| [web-api.md](web-api.md) | HTTP Web API — internal control & introspection server |
|
|
| [threading.md](threading.md) | Threading & scheduling infrastructure |
|
|
| [utilities-and-bootstrap.md](utilities-and-bootstrap.md) | Utilities, configuration, logging, exceptions |
|
|
|
|
## How to read this documentation
|
|
|
|
Start with [architecture.md](architecture.md) for the big picture and the startup sequence.
|
|
Then read [events.md](events.md) and [contexts.md](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](commands.md) and [tasks.md](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](persistence.md).
|
|
- Environment variables / configuration keys use the `NETNEUTRALITY_*` and `MYSQL_*` prefixes and
|
|
are documented in [utilities-and-bootstrap.md](utilities-and-bootstrap.md).
|