Ryujinni
Elixir

Ryujinni

نسخة إكسير من بوت Clairemont من Discord، مدعومة بشبكة Providence (Providentia).

GitHub|
image

Ryujin هي وحدة الاتصال الدبلوماسي الخاصة بروبوت Clairemont. في حين تتولى الوحدات الأخرى في النظام مهام الأمن والإدارة، تركز Ryujin على تنمية العلاقات التحالفية، وتنسيق المبادرات المشتركة، والحفاظ على الهدوء في قنوات التواصل بين النقابات. وهي مبنية بلغة Elixir باستخدام Nostrum ومصممة للتوسع إلى ميزات مدعومة بلغة Rust من أجل المهام عالية الأداء.

◆ الميزات

  • أتمتة تركز على التحالفات: النوايا معدة مسبقًا لإدارة الرسائل المباشرة والعلاقات على مستوى النقابات.
  • دعم الصوت: مزود بدعم FFmpeg وStreamlink وyt-dlp لإرسال الصوت.
  • تسريع باستخدام Rust: يتضمن صندوق native/ryujin لـ Rustler NIFs لمعالجة المهام التي تتطلب حوسبة مكثفة.
  • الإعداد عبر البرامج النصية: تدير البرامج النصية المحلية install.sh وrun.sh سلسلة الأدوات والبيئة لإجراء عمليات إعداد قابلة للتكرار.

◆ المتطلبات الأساسية

  • Elixir ≥ 1.18 (مع إصدار Erlang/OTP مطابق)
  • PostgreSQL (الافتراضي هو postgres/postgres على localhost)
  • Python 3 (لـ Streamlink + yt-dlp في بيئة virtualenv)
  • curl وtar (لتنزيل FFmpeg)
  • سلسلة أدوات Rust (في حالة تعديل الملحق الأصلي)

تأكد من أن البرامج النصية المساعدة قابلة للتنفيذ قبل البدء:

chmod +x install.sh run.sh

تقرير مخطط المستودع

◆ التكوين

يتم تحميل التكوين من envs/. يقوم وقت التشغيل بدمج ملف envs/.env (الإعدادات الافتراضية المشتركة) وملف خاص بالبيئة مثل envs/dev.env.

كحد أدنى، يجب عليك تعريف رمز Discord الخاص بك في envs/.env:

DISCORD_TOKEN=YOUR_DISCORD_TOKEN

تقوم نصوص التشغيل تلقائيًا بإضافة vendor/bin المحلي وبيئة Python الافتراضية إلى متغير PATH الخاص بك.

◆ التثبيت

يقوم المثبت بجلب تبعيات Mix وتجهيز الملفات الثنائية للوسائط المطلوبة محليًّا في دليل vendor/:

./install.sh

سيقوم هذا البرنامج النصي بما يلي:

  1. جلب تبعيات Mix وتجميعها.
  2. تنزيل نسخة ثابتة من FFmpeg.
  3. إنشاء بيئة Python virtualenv لـ Streamlink و yt-dlp.

◆ التشغيل في مرحلة التطوير

قم بتشغيل الروبوت لأغراض التطوير باستخدام البرنامج النصي run:

./run.sh

يتحقق البرنامج النصي من وجود جميع الأدوات (ffmpeg، yt-dlp، إلخ)، ويقوم بتنفيذ عمليات ترحيل قاعدة البيانات، ويبدأ تشغيل تطبيق Phoenix عبر iex -S mix.

◆ تكامل PostgreSQL AGE

يتضمن المشروع عملية ترحيل لتمكين ملحق 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);
""")

◆ امتداد Rust الأصلي

تم دمج الصندوق native/ryujin مع Rustler. يتم ترجمة كود Elixir وRust معًا باستخدام mix compile. أضف NIFs جديدة في src/lib.rs واجعلها متاحة لـ Elixir من خلال الوحدة النمطية lib/ryujin.ex.

◆ استكشاف الأخطاء وإصلاحها

  • "لم يتم العثور على الأمر": تأكد من تشغيل chmod +x install.sh run.sh.
  • ملفات ثنائية قديمة: قم بإزالة الدليل vendor/ وأعد تشغيل ./install.sh.
  • قاعدة البيانات غير موجودة: تأكد من تشغيل PostgreSQL وأعد تشغيل ./run.sh، الذي ينفذ الأمر mix ecto.create.
  • Connect Observer: يعمل البوت كعقدة مسماة. افتح محطة طرفية جديدة وقم بتشغيل:
iex --sname observer --cookie ryujin_cookie
:observer.start()