Ryujinni
Версія Clairemont бота на Elixir з Discord, працює на мережі Providence (Providentia).

Ryujin є дипломатичним зв'язком для бота Clairemont. Поки інші модулі системи відповідають за безпеку та адміністрування, Ryujin зосереджений на розвитку союзних відносин, координації спільних ініціатив та підтримці спокою в каналах між гільдіями. Він побудований на Elixir з Nostrum і розроблений для розширення в Rust-підтримувані функції для завдань високої продуктивності.
◆ Features
- Автоматизація, орієнтована на альянс: Intents налаштовані заздалегідь для управління прямими повідомленнями та відносинами на рівні гільдії.
- Підтримка голосу: Включено FFmpeg, Streamlink та yt-dlp для відправки аудіо.
- Прискорено Rust: Включає crate
native/ryujinдля Rustler NIFs, що обробляють обчислювально важкі завдання. - Скриптована установка: Локальні скрипти
install.shтаrun.shкерують інструментальним набором та середовищем для повторюваних налаштувань.
◆ Prerequisites
- Elixir ≥ 1.18 (з відповідним випуском Erlang/OTP)
- PostgreSQL (за замовчуванням
postgres/postgresнаlocalhost) - Python 3 (для Streamlink + yt-dlp у віртуальному середовищі)
curlіtar(для завантаження FFmpeg)- Rust toolchain (якщо змінюєте native розширення)
Упевніться, що допоміжні скрипти виконувані перед запуском:
chmod +x install.sh run.sh

◆ Configuration
Конфігурація завантажується з envs/. Час виконання об'єднує envs/.env (спільні налаштування) та файл, специфічний для середовища, наприклад envs/dev.env.
На мінімум, ви повинні визначити свій Discord токен у envs/.env:
DISCORD_TOKEN=YOUR_DISCORD_TOKEN
Скрипти часу виконання автоматично додають локальний vendor/bin і Python virtualenv до вашого PATH.
◆ Installation
Інсталятор завантажує залежності Mix і розміщує потрібні медіа-бінарії локально у каталозі vendor/:
./install.sh
Цей скрипт виконає:
- Завантажить і скомпілює залежності Mix.
- Завантажить статичну збірку FFmpeg.
- Створить Python virtualenv для Streamlink і yt-dlp.
◆ Running in Development
Запустіть бота для розробки, використовуючи скрипт запуску:
./run.sh
Скрипт перевіряє, що всі інструменти (ffmpeg, yt-dlp тощо) присутні, виконує міграції бази даних і запускає застосунок Phoenix через iex -S mix.
◆ PostgreSQL AGE Integration
Проект включає міграцію для увімкнення розширення Apache AGE для графових запитів. Після встановлення AGE на вашому сервері PostgreSQL, скрипт run.sh або mix ecto.setup увімкне його у базі даних.
Тоді ви можете виконувати запити Cypher через Ecto.Repo.query/2:
Repo.query!("""
SELECT *
FROM cypher('ryujin_graph', $$
MATCH (n) RETURN n
$$) AS (node ag_catalog.agtype);
""")
◆ Native Rust Extension
Crate native/ryujin інтегрований з Rustler. Код Elixir та Rust компілюється разом за допомогою mix compile. Додайте нові NIFs у src/lib.rs і експортуйте їх до Elixir через модуль lib/ryujin.ex.
◆ Troubleshooting
- "command not found": Переконайтеся, що ви виконали
chmod +x install.sh run.sh. - Старі бінарії: Видаліть каталог
vendor/і повторно запустіть./install.sh. - База даних не існує: Переконайтеся, що Postgre
