Ryujinni
Bot Clairemont w wersji Elixir z Discorda, zasilany przez Providence Network (Providentia).
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/ryujindla NIF-ów Rustler do obsługi zadań wymagających dużej mocy obliczeniowej. - Skryptowa konfiguracja: Lokalne skrypty
install.shirun.shzarządzają narzędziami i środowiskiem dla powtarzalnych konfiguracji.
◆ Wymagania wstępne
- Elixir ≥ 1.18 (z pasującą wersją Erlang/OTP)
- PostgreSQL (domyślnie
postgres/postgresnalocalhost) - Python 3 (dla Streamlink i yt-dlp w virtualenv)
curlitar(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

◆ 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:
- Pobierze i skompiluje zależności Mix.
- Pobierze statyczną kompilację FFmpeg.
- 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 wykonujemix 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()
