# MT Queue Guard — نظام مراقبة طابور سيرفر MTRP مع تنبيهات واتساب وتحكّم كامل بالأوامر
## نبذة عن المشروع
أداة سطح مكتب مبنية بـ **Node.js** تراقب طابور الانتظار في موقع **mtrp.gg** (سيرفر Mystery Town Roleplay) بشكل لحظي، وترسل تنبيهات فورية على **واتساب** عند اقتراب دور المستخدم — نص، لقطة شاشة من الموقع، رشقة إشعارات، وحتى **مكالمة واتساب صوتية** إذا لم يستجب.
الأهم: المستخدم يتحكم بالأداة بالكامل عبر **رسائل واتساب بالعربية** — بدون فتح جهازه. يكتب «كم» فيوصله ترتيبه مع سكرين، يكتب «دخلني» فتدخله الطابور تلقائياً، ويكتب «خلاص» فتوقف التنبيه فوراً.
---
## المشكلة
سيرفرات الـ Roleplay ذات الشعبية العالية فيها طوابير انتظار تمتد لساعات. المستخدم مجبر يفتح الصفحة ويحدّثها باستمرار، ولو غفل دقيقتين عند وصول دوره — يفقد مكانه ويرجع لآخر الطابور من جديد.
## الحل
نظام يعمل في الخلفية ويقوم بالدور كامل نيابة عن المستخدم:
1. يفتح متصفحين حقيقيين (واتساب + الموقع) بجلسات محفوظة — تسجيل دخول مرة واحدة فقط.
2. يفحص حالة الطابور كل 10 ثوانٍ ويستخرج الترتيب من الصفحة.
3. عند وصول الترتيب للحد الحرج (≤ 15 افتراضياً) يبدأ تنبيهاً تصاعدياً لا يتوقف إلا برد المستخدم.
4. عند ظهور رسالة «سيرة جاهزة» ينبّه بأقصى قوة لأن نافذة الدخول قصيرة جداً.
5. إذا خرج المستخدم من الطابور، يسأله عبر واتساب عن السبب — وإن لم يرد خلال دقيقتين يعيد إدخاله تلقائياً.
---
## أبرز المميزات
**🔔 نظام تنبيه متدرّج**
تنبيه نصي عادي → رشقة إشعارات متتالية → لقطة شاشة مباشرة من الموقع → مكالمة واتساب صوتية (3 محاولات). يتوقف فوراً عند رد المستخدم.
**💬 تحكّم كامل بأوامر عربية طبيعية**
أكثر من 20 صيغة أمر مدعومة، مع مرادفات ولهجة محكية: `انتظار` / `دخلني` / `كم` / `ترتيبي` / `حالة` / `سكرين` / `فحص` / `خلاص` / `مالي نفس` / `داخل اللعبة` / `أوامر`.
**🤖 دخول تلقائي مع تحقق**
لا تكتفي الأداة بالضغط على زر الدخول — بل تتحقق فعلياً من ظهور رقم الترتيب بعد الضغط، وتعيد المحاولة عند الفشل، وتلتقط لقطة شاشة للإثبات.
**📸 لقطات شاشة تلقائية**
كل تنبيه أو استعلام مرفق بصورة حية من الموقع، مؤرشفة محلياً مع طابع زمني.
**🖥️ لوحة تحكم ويب لحظية**
واجهة عربية (RTL) على `localhost:3847` تعرض الترتيب وحالة الاتصالات وسجل الأحداث لحظياً عبر **Socket.IO**، مع دليل إعداد تفاعلي يوجّه المستخدم خطوة بخطوة.
**💾 جلسات محفوظة**
Chrome Profile ثابت للموقع + `LocalAuth` لواتساب — تسجيل دخول واحد يكفي لكل مرات التشغيل اللاحقة.
**⚙️ إعدادات مرنة**
كل القيم (حد التنبيه، فترة الفحص، عدد المحاولات، مدة الانتظار، رقم الجوال) قابلة للتعديل من ملف `.env` دون لمس الكود.
---
## التقنيات المستخدمة
| المجال | التقنية |
|---|---|
| البيئة | Node.js (CommonJS) |
| أتمتة المتصفح | Playwright (Chromium بجلسة دائمة) |
| تكامل واتساب | whatsapp-web.js + LocalAuth |
| الخادم والـ API | Express.js |
| التحديث اللحظي | Socket.IO |
| الواجهة | HTML / CSS / JavaScript (RTL) |
| الإعدادات | dotenv |
| التشغيل | ملف `.bat` بنقرة واحدة + واجهة أوامر CLI |
**البنية:** فصل واضح بين الطبقات — `mtrp.js` (قراءة الموقع والدخول) · `whatsapp.js` (الإرسال والاستقبال والمكالمات) · `orchestrator.js` (منطق القرار والتنبيه) · `state.js` (حالة مركزية) · `server.js` (API + WebSocket).
---
## التحديات التقنية وحلولها
**قراءة ترتيب متغيّر من واجهة ديناميكية**
بُنيت طبقة استخراج تعتمد على أنماط نصية متعددة بدل الاعتماد على محدد CSS واحد قابل للكسر — تتعامل مع صيغ مختلفة لعرض الترتيب والمجموع وحالة «قيد المعالجة».
**ضمان وصول التنبيه فعلياً**
واتساب قد يبدو «متصلاً» قبل جاهزيته الحقيقية للإرسال. عولج ذلك بانتظار حدث `ready` تحديداً بدل `authenticated`، مع فترة استقرار قبل أول رسالة.
**استقبال الأوامر بشكل موثوق**
اعتماد مزدوج: مستمع أحداث + استطلاع دوري للمحادثة مع تتبّع المعرّفات المقروءة — لضمان عدم ضياع أي أمر ولا تنفيذه مرتين.
**إيقاف فوري للتنبيه**
رشقة الإشعارات والمكالمات تفحص علم إيقاف مشترك قبل كل خطوة، فيتوقف «الزن» خلال أقل من ثانية من لحظة كتابة «خلاص».
**لغة عربية محكية غير منضبطة**
دالة تطبيع تزيل التشكيل وتوحّد الهمزات والمسافات، ثم تُطابق الأمر على قائمة مرادفات واسعة تشمل الأخطاء الإملائية الشائعة.
---
## النتيجة
نظام يعمل بلا تدخل: يشتغل بنقرة واحدة، ويدير الطابور بالكامل نيابة عن المستخدم، ويصله كل شيء على واتساب — فلا يفقد دوره مهما طال الانتظار أو ابتعد عن جهازه.
---
> **ملاحظة:** المشروع مبني بالكامل من الصفر (تصميم البنية، الكود، واجهة التحكم). قادر على تنفيذ أنظمة أتمتة ومراقبة مشابهة لأي موقع أو منصة، مع ربطها بواتساب أو تيليجرام أو ديسكورد حسب الحاجة.