Ryujinni
Elixir

Ryujinni

De Elixir-versie van de Clairemont-bot van Discord, aangedreven door het Providence Network (Providentia).

afbeelding

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- en run.sh-scripts beheren de toolchain en omgeving voor herbruikbare installaties.

◆ Vereisten

  • Elixir ≥ 1.18 (met een bijpassende Erlang/OTP-release)
  • PostgreSQL (standaard postgres/postgres op localhost)
  • Python 3 (voor Streamlink + yt-dlp in een virtualenv)
  • curl en tar (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

Repository Chart Report

◆ 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:

  1. Mix-afhankelijkheden ophalen en compileren.
  2. Een statische FFmpeg-build downloaden.
  3. 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.sh hebt uitgevoerd.
  • Verouderde binaire bestanden: Verwijder de vendor/-directory en voer ./install.sh opnieuw uit.
  • Database bestaat niet: Zorg ervoor dat PostgreSQL draait en voer ./run.sh opnieuw uit, dat mix ecto.create uitvoert.
  • Observer Verbinden: De bot draait als een benoemde node. Open een nieuwe terminal en voer uit:
iex --sname observer --cookie ryujin_cookie
:observer.start()