Ryujinni
Elixir

Ryujinni

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

GitHub|
зображення

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

Repository Chart Report

◆ 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

Цей скрипт виконає:

  1. Завантажить і скомпілює залежності Mix.
  2. Завантажить статичну збірку FFmpeg.
  3. Створить 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