ريجين هي وحدة الاتصال الدبلوماسي لبوت كليرمونت. بينما تتعامل الوحدات الأخرى في النظام مع الأمن والإدارة، يركز ريجين على تنمية العلاقات المتحالفة، وتنسيق المبادرات المشتركة، والحفاظ على الهدوء في قنوات التحالفات. تم بناؤه باستخدام إيليكسير مع نوستروم ومصمم للتوسع إلى ميزات مدعومة بلغة رست للمهام عالية الأداء.
◆ الميزات
- أتمتة تركز على التحالفات: تم تكوين النوايا مسبقًا لإدارة العلاقات على مستوى الرسائل المباشرة والقنوات.
- قدرات صوتية: مدمج مع دعم 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
هذا النص سيقوم بـ:
- جلب وتجميع تبعيات Mix.
- تنزيل بناء FFmpeg ثابت.
- إنشاء بيئة افتراضية للبايثون لـ 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()
