Ryujinni
De Elixir-versie van de Clairemont-bot van Discord, aangedreven door het Providence Network (Providentia).
Ryujin is de diplomatieke liaisonmodule voor de Clairemont-bot. Terwijl andere modules in het systeem beveiliging en administratie afhandelen, richt Ryujin zich op het cultiveren van bondgenootschappelijke relaties, het coördineren van gezamenlijke initiatieven en het bewaren van rust in inter-guildkanalen. Het is gebouwd op Elixir met Nostrum en ontworpen om uit te breiden naar Rust-ondersteunde functies voor prestatie-intensieve taken.
◆ Functies
- Alliantiegerichte Automatisering: Intents zijn vooraf geconfigureerd voor directe berichten en guild-niveau relatiebeheer.
- Spraakondersteuning: Gebundeld met FFmpeg-, Streamlink- en yt-dlp-ondersteuning voor het verzenden van audio.
- Rust-versneld: Bevat een
native/ryujin-crate voor Rustler NIF's om rekenintensieve taken af te handelen. - Scriptmatige Installatie: Lokale
install.sh- enrun.sh-scripts beheren de toolchain en omgeving voor herbruikbare installaties.
◆ Vereisten
- Elixir ≥ 1.18 (met een bijpassende Erlang/OTP-release)
- PostgreSQL (standaard
postgres/postgresoplocalhost) - Python 3 (voor Streamlink + yt-dlp in een virtualenv)
curlentar(voor de FFmpeg-download)- Rust-toolchain (indien de native extensie wordt aangepast)
Zorg ervoor dat de hulpscripts uitvoerbaar zijn voordat u begint:
chmod +x install.sh run.sh

◆ Configuratie
Configuratie wordt geladen vanuit envs/. De runtime voegt envs/.env (gedeelde standaardwaarden) en een omgevingsspecifiek bestand zoals envs/dev.env samen.
U moet minimaal uw Discord-token definiëren in envs/.env:
DISCORD_TOKEN=UW_DISCORD_TOKEN
De runtimescripts voegen automatisch de lokale vendor/bin en Python virtualenv toe aan uw PATH.
◆ Installatie
Het installatieprogramma haalt Mix-afhankelijkheden op en plaatst de vereiste mediabinaire bestanden lokaal in de vendor/-directory:
./install.sh
Dit script zal:
- Mix-afhankelijkheden ophalen en compileren.
- Een statische FFmpeg-build downloaden.
- Een Python virtualenv aanmaken voor Streamlink en yt-dlp.
◆ Ontwikkeling Uitvoeren
Start de bot voor ontwikkeling met het run-script:
./run.sh
Het script controleert of alle tools (ffmpeg, yt-dlp, etc.) aanwezig zijn, voert databasemigraties uit en start de Phoenix-applicatie via iex -S mix.
◆ PostgreSQL AGE-integratie
Het project bevat een migratie om de Apache AGE-extensie in te schakelen voor grafiekquery's. Na het installeren van AGE op uw PostgreSQL-server, zal het run.sh-script of mix ecto.setup het inschakelen in de database.
U kunt vervolgens Cypher-query's uitvoeren via Ecto.Repo.query/2:
Repo.query!("""
SELECT *
FROM cypher('ryujin_graph', $$
MATCH (n) RETURN n
$$) AS (node ag_catalog.agtype);
""")
◆ Native Rust-extensie
De native/ryujin-crate is geïntegreerd met Rustler. Elixir- en Rust-code worden samen gecompileerd met mix compile. Voeg nieuwe NIF's toe in src/lib.rs en stel ze beschikbaar aan Elixir via de lib/ryujin.ex-module.
◆ Probleemoplossing
- "command not found": Zorg ervoor dat u
chmod +x install.sh run.shhebt uitgevoerd. - Verouderde binaire bestanden: Verwijder de
vendor/-directory en voer./install.shopnieuw uit. - Database bestaat niet: Zorg ervoor dat PostgreSQL draait en voer
./run.shopnieuw uit, datmix ecto.createuitvoert. - Observer Verbinden: De bot draait als een benoemde node. Open een nieuwe terminal en voer uit:
iex --sname observer --cookie ryujin_cookie
:observer.start()
