الانتقال إلى المحتوى الرئيسي

الحالة الحالية

انتقلت إعدادات لعبة العد من لوحة Discord إلى لوحة الويب. الأمر /counting لا ينشئ اللعبة ولا يعرض لوحة إدارة تفاعلية داخل Discord؛ وظيفته الحالية إظهار تنبيه خاص بالمستخدم ورابط لوحة الخادم: فتح إعدادات العد في لوحة التحكم استبدل {guildId} بمعرّف الخادم. يوصي التنبيه بإعداد اللعبة من جديد عبر لوحة الويب بسبب مشكلة توافق بيانات الإعدادات القديمة مع بنية البيانات الحالية. ووفق نص الأمر، من المقرر إزالة الأمر خلال شهر؛ هذا الموعد الوارد في المصدر ليس تأكيدًا على أن الإزالة تمت.
مصدر الأمر المقدّم لا يحتوي على تنفيذ واجهة لوحة الويب. لذلك لا يمكن توثيق أسماء أقسامها أو عناصرها أو قوائم الاختيار والأزرار الموجودة فيها. كما أزيلت لوحة الإدارة القديمة داخل Discord؛ العنصر التفاعلي الوحيد الذي يرسله الأمر هو زر رابط Open Dashboard.

إعداد اللعبة

  1. شغّل /counting داخل الخادم. لا يعمل الأمر خارج الخادم.
  2. افتح لوحة التحكم من زر Open Dashboard في الرد الخاص، أو من رابط الخادم أعلاه.
  3. اتبع إعدادًا جديدًا في لوحة الويب، كما يوصي تنبيه الأمر عند وجود إعداد قديم. تفاصيل خطوات الواجهة وتسميات عناصرها غير متاحة في الملفات المرجعية لهذا التوثيق.
  4. بعد تفعيل لعبة مرتبطة بقناة، يراقب المحرك الرسائل في قناة اللعبة ويطبق الإعدادات المسجلة لها.

مرجع /counting

لا يتضمن الأمر الحالي خيارات slash أو قوائم اختيار لإدارة العد. الزر ليس زر بدء للعبة، بل يفتح صفحة إعداد الخادم على الويب.

قواعد العد

  • يقبل المحرك الرسائل النصية في قناة اللعبة من الأعضاء غير البوتات فقط، عندما تكون اللعبة مفعّلة وغير متوقفة مؤقتًا.
  • يبدأ التسلسل من startNumber ويتقدم بمقدار countBy في كل رسالة صحيحة. الحد الأدنى المحفوظ لـ startNumber هو 0، والحد الأدنى لـ countBy هو 1. مع الإعداد الافتراضي تكون البداية 1 والخطوة 1.
  • عند عدم وجود عدّ صحيح سابق تكون القيمة المتوقعة صفرًا في حالة التوافق القديمة المحددة بالمحرك؛ أما بعد ذلك فالمتوقع هو الرقم الحالي مضافًا إليه مقدار الخطوة.
  • يقبل المحرك رقمًا صحيحًا غير سالب مكتوبًا وحده. إذا كان allowExtraText مفعّلًا، يقبل أيضًا رسالة تبدأ بالرقم ثم مسافة أو نهاية الرسالة، ويتجاهل ما يأتي بعد الرقم.
  • إذا كان allowMathExpressions مفعّلًا، يمكن أن تكون الرسالة تعبيرًا حسابيًا يتضمن أرقامًا وعلامات + و- و* و/ والأقواس والنقطة العشرية؛ لا يُقبل الناتج إلا إذا كان عددًا صحيحًا آمنًا وغير سالب. التعبيرات غير الصالحة أو القسمة على صفر لا تنتج رقمًا مقبولًا.
  • لا يُسمح للعضو نفسه بالعد مرتين متتاليتين افتراضيًا (allowSameUser: false). ويمكن تطبيق فترة انتظار cooldownSeconds على العضو الذي عدّ أخيرًا.
  • يمكن تقييد المشاركة بأدوار مسموح بها (specialRoles) وأدوار محظورة (blockedRoles). عند وجود قائمة أدوار خاصة، يجب أن يحمل العضو واحدًا منها على الأقل، وألا يحمل أي دور محظور.
  • يمكن تحديد ما يحدث عند رقم خاطئ عبر onMistake: reset يعيد السلسلة إلى ما قبل رقم البداية ويمسح حالة المستخدم/السلسلة ويزيد عداد الإعادات؛ pause يوقف اللعبة؛ none لا يغيّر السلسلة. القيمة الافتراضية هي reset.
  • يمكن إعداد حذف الرسائل غير العدّية (deleteNonCountMessages) أو رسائل الأرقام الخاطئة (deleteWrongMessages)؛ كلاهما متوقف افتراضيًا. الرسائل غير العدّية لا تحذف تلقائيًا بهذا الإعداد.
  • يضيف المحرك رد فعل للصحيح أو الخطأ باستخدام correctEmoji وwrongEmoji؛ الافتراضيان ✅ و❌. ويمكن تسجيل الرقم الأعلى، عدد الإجابات الصحيحة والإعادات، وعدّاد السلسلة وإحصاءات الأعضاء.

الإعدادات التي يعرفها نموذج اللعبة

يوضح النموذج حقول التخزين التي يتعامل معها المحرك، وليس تصميم عناصر لوحة الويب أو طريقة تغيير كل حقل. تشمل الإعدادات العامة قناة اللعبة، التفعيل/الإيقاف المؤقت، startNumber، countBy وgoal. وتشمل السلوك: onMistake، الرموز التعبيرية، السماح بنص إضافي أو تعبيرات حسابية أو تكرار العضو، حذف الرسائل، وفترة الانتظار. وتشمل حقول الأدوار blockedRoles وspecialRoles. أما المعالم فتدعم فترة تلقائية (milestoneInterval)، قائمة أرقام محددة (milestones)، رتبة مكافأة عامة أو رتبًا بحسب رقم، قناة إعلان، ورسالة معلم بصيغة نصية أو Embed. كما يحفظ النموذج رسائل أحداث الخطأ وإعادة السلسلة والرقم القياسي والعد المكرر، وسجل الأرقام والإحصاءات. الحقول الموجودة في النموذج لا تعني أن كل ميزة متاحة لكل فئة اشتراك.

المعالم والرسائل

يمكن للمحرك اكتشاف المعالم عند بلوغ مضاعفات milestoneInterval أو الأرقام المدرجة في milestones. عندها يحاول منح الرتب المعيّنة للمعلم إذا كان العضو قابلًا لإدارة الرتب، ويرسل رسالة المعلم إلى القناة المحددة أو إلى قناة العد عند عدم تحديد قناة أخرى. تدعم رسالة المعلم وضع plain أو embed، وحقول التضمين، والنصوص المتغيرة. تدعم رسائل الأحداث إعدادات نصية أو Embed وفق بنية المحرك، مع متغيرات مثل {user} و{count} و{expected} و{record} و{goal} و{streak} و{reason}. يقتصر نص الرسالة على 2000 حرف، والتضمين على 10 عناصر، وحقول التضمين على 25 حقلًا؛ كما تطبق حدود أطوال عنوان ووصف وحقول التضمين في المحرك.

حدود الميزات حسب الفئة

يطبّق محرك العد حدودًا مشتقة من Tier الاشتراك النشط، ويخزن نتيجة فحص الفئة مؤقتًا لفترة قصيرة. في المستوى المجاني (tier 0) يفرض السلوك التالي بصرف النظر عن القيم المحفوظة: إعادة السلسلة عند الخطأ، تعطيل التعبيرات الحسابية وفترة الانتظار والأدوار المحظورة/الخاصة ومكافآت الرتب ورسائل الأحداث المخصصة، واستخدام الرمزين الافتراضيين بدل الإيموجي المخصص في حال كان رمز Discord مخصصًا. في Tier 0 وTier 1 يعطّل المحرك السماح للعضو نفسه بالعد مرتين، والحفظ التلقائي، وقوائم رتب المعالم والقناة المخصصة ورسالة المعلم المخصصة؛ وتُستخدم رسالة المعلم الافتراضية. في Tier 1 تُحوّل رسائل الأحداث إلى نص عادي. هذه حدود يفرضها المحرك على الإعداد الفعّال، ولا تُثبت وحدها أي أسعار أو مزايا تسويقية للخطة.

إعادة الضبط

إعادة السلسلة عند الخطأ (onMistake: reset) ليست مسحًا كاملًا للبيانات: تعيد currentNumber إلى startNumber - countBy، وتمسح lastUser وstreakUser وstreakCount، وتزيد totalResets. لا يمسح هذا الإجراء الرقم القياسي highestNumber أو سجل الإجابات الصحيحة. أما pause فيوقف اللعبة عند الخطأ، وnone يترك السلسلة دون إعادة أو إيقاف. لا يذكر أي من الملفات المقدمة زرًا أو أمرًا لمسح لعبة العد أو إعادتها يدويًا بالكامل؛ لذا لا توثق هذه الصفحة عملية إعادة ضبط إدارية غير ظاهرة في المصادر.