Ryujinni
Elixir

Ryujinni

Bot Clairemont w wersji Elixir z Discorda, zasilany przez Providence Network (Providentia).

image

Ryujin jest modułem dyplomatycznym bota Clairemont. Podczas gdy inne moduły systemu zajmują się bezpieczeństwem i administracją, Ryujin koncentruje się na budowaniu relacji sojuszniczych, koordynowaniu wspólnych inicjatyw oraz utrzymywaniu spokoju na kanałach międzygildyjnych. Został zbudowany w Elixirze z wykorzystaniem Nostrum i jest zaprojektowany do rozszerzania o funkcje oparte na Rust dla zadań wymagających wysokiej wydajności.

◆ Funkcje

  • Automatyzacja sojuszy: Intencje są wstępnie skonfigurowane do zarządzania relacjami na poziomie wiadomości bezpośrednich i gildii.
  • Obsługa głosu: Zawiera wsparcie dla FFmpeg, Streamlink i yt-dlp do odtwarzania dźwięku.
  • Przyspieszenie przez Rust: Zawiera crate native/ryujin dla NIF-ów Rustler do obsługi zadań wymagających dużej mocy obliczeniowej.
  • Skryptowa konfiguracja: Lokalne skrypty install.sh i run.sh zarządzają narzędziami i środowiskiem dla powtarzalnych konfiguracji.

◆ Wymagania wstępne

  • Elixir ≥ 1.18 (z pasującą wersją Erlang/OTP)
  • PostgreSQL (domyślnie postgres/postgres na localhost)
  • Python 3 (dla Streamlink i yt-dlp w virtualenv)
  • curl i tar (do pobrania FFmpeg)
  • Narzędzia Rust (jeśli modyfikujesz natywne rozszerzenie)

Upewnij się, że skrypty pomocnicze są wykonywalne przed uruchomieniem:

chmod +x install.sh run.sh

Repository Chart Report

◆ Konfiguracja

Konfiguracja jest ładowana z katalogu envs/. Środowisko uruchomieniowe scala envs/.env (wspólne ustawienia domyślne) i plik specyficzny dla środowiska, np. envs/dev.env.

Jako minimum musisz zdefiniować swój token Discorda w envs/.env:

DISCORD_TOKEN=YOUR_DISCORD_TOKEN

Skrypty uruchomieniowe automatycznie dodają lokalny katalog vendor/bin i wirtualne środowisko Python do zmiennej PATH.

◆ Instalacja

Instalator pobiera zależności Mix i umieszcza wymagane pliki binarne multimediów lokalnie w katalogu vendor/:

./install.sh

Ten skrypt:

  1. Pobierze i skompiluje zależności Mix.
  2. Pobierze statyczną kompilację FFmpeg.
  3. Utworzy wirtualne środowisko Python dla Streamlink i yt-dlp.

◆ Uruchamianie w środowisku deweloperskim

Uruchom bota w trybie deweloperskim za pomocą skryptu uruchomieniowego:

./run.sh

Skrypt sprawdza, czy wszystkie narzędzia (ffmpeg, yt-dlp itp.) są dostępne, wykonuje migracje bazy danych i uruchamia aplikację Phoenix przez iex -S mix.

◆ Integracja z PostgreSQL AGE

Projekt zawiera migrację umożliwiającą korzystanie z rozszerzenia Apache AGE do zapytań grafowych. Po zainstalowaniu AGE na serwerze PostgreSQL, skrypt run.sh lub mix ecto.setup włączy je w bazie danych.

Możesz następnie wykonywać zapytania Cypher przez Ecto.Repo.query/2:

Repo.query!("""
SELECT *
FROM cypher('ryujin_graph', $$
MATCH (n) RETURN n
$$) AS (node ag_catalog.agtype);
""")

◆ Natywne rozszerzenie Rust

Crate native/ryujin jest zintegrowany z Rustler. Kod Elixira i Rusta jest kompilowany razem za pomocą mix compile. Dodawaj nowe NIF-y w src/lib.rs i udostępniaj je w Elixirze przez moduł lib/ryujin.ex.

◆ Rozwiązywanie problemów

  • "command not found": Upewnij się, że uruchomiłeś chmod +x install.sh run.sh.
  • Nieaktualne pliki binarne: Usuń katalog vendor/ i uruchom ponownie ./install.sh.
  • Baza danych nie istnieje: Upewnij się, że PostgreSQL działa i uruchom ponownie ./run.sh, który wykonuje mix ecto.create.
  • Podłącz Observer: Bot działa jako nazwany węzeł. Otwórz nowy terminal i uruchom:
iex --sname observer --cookie ryujin_cookie
:observer.start()