Files
netneutrality/docs/README.md
T
anthorob 4cf7c47645 Remove Lavaplayer and migrate to Lavalink
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.
2026-09-23 15:08:06 -04:00

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_* and MYSQL_* prefixes and are documented in utilities-and-bootstrap.md.