Ryujinni
Elixir

Ryujinni

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

صورة

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

◆ الميزات

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

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

  • إيليكسير ≥ 1.18 (مع إصدار Erlang/OTP متوافق)
  • PostgreSQL (الافتراضي postgres/postgres على localhost)
  • بايثون 3 (لـ Streamlink وyt-dlp في بيئة افتراضية)
  • curl وtar (لتنزيل FFmpeg)
  • سلسلة أدوات رست (إذا كنت تعدل الإضافة الأصلية)

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

chmod +x install.sh run.sh

تقرير مستودع الرسم البياني

◆ الإعداد

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

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

DISCORD_TOKEN=YOUR_DISCORD_TOKEN

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

◆ التثبيت

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

./install.sh

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

  1. جلب وتجميع تبعيات Mix.
  2. تنزيل بناء FFmpeg ثابت.
  3. إنشاء بيئة افتراضية للبايثون لـ Streamlink وyt-dlp.

◆ التشغيل في بيئة التطوير

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

./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);
""")

◆ إضافة رست الأصلية

حزمة native/ryujin مدمجة مع Rustler. يتم تجميع كود إيليكسير ورست معًا باستخدام mix compile. أضف واجهات NIF جديدة في src/lib.rs واعرضها على إيليكسير من خلال وحدة lib/ryujin.ex.

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

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