كيف يعمل
مسار واحد واضح، من الحدث إلى الرد.
من حدث ديسكورد إلى الموجّه، ثم بوابة الإجراءات أو سلسلة النماذج، ثم فلتر المخرجات — وأرشيف SQLite واحد.
-
الحدث يصل
تدخل أحداث ديسكورد عبر bot.py، ثم يتولّاها angel/client.py، ويوجّهها angel/nl_router.py.
-
السياق يُقرأ
يقرأ الموجّه الشخصية وذاكرة العضو وملفه، ثم يقرر: رد مباشر، أو سلسلة نماذج عند الحاجة إلى نص مولّد، أو إجراء يحتاج بوابة.
-
بوابة الإجراءات
تتحقق البوابة من معرّف ديسكورد الثابت للفاعل، ومن الصلاحية المطلوبة، ومن كلمة تدل على النية، قبل أن يصل أي شيء إلى Discord API.
-
فلتر المخرجات
يزيل @everyone والنصوص الشبيهة بالرموز والوسوم المتبقية، ويصحّح ردًّا يدّعي تنفيذ إجراء ما زال في الطابور.
-
الأرشيف
ملف SQLite واحد: server_messages للرسائل الخام، وفهرس FTS5 للبحث، وجدول لملفات الأعضاء. لا طابور خارجي ولا ذاكرة مؤقتة ولا عامل خارجي.
التشغيل
-
بوابة قبل كل بدء
تشغّل الوحدة بوابة الفحص قبل بدء الخدمة؛ وإذا فشلت أُلغي البدء بدل أن يُسقِط التحديثُ البوت.
-
مؤقّتات مستقلة
التعلّم من محادثات اليوم، وتحديث ملاحظات الثقافة، ونسخة احتياطية من SQLite، وتحديث شهري لملفات الأعضاء، ولقطة مقاييس اختيارية.
-
نسخ احتياطي محلي
لقطات محلية تُنشأ بـ sqlite3 .backup وتُحفظ بصلاحية 600؛ تحتوي الرسائل وملفات الأعضاء، ولا نسخة خارج الخادم بعد.