> ## Documentation Index
> Fetch the complete documentation index at: https://docs.giveawayx.lol/llms.txt
> Use this file to discover all available pages before exploring further.

# لعبة العد

> إعداد لعبة العد وقواعدها ومرجع أمر /counting كما يدعمها التنفيذ الحالي.

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

انتقلت إعدادات لعبة العد من لوحة Discord إلى لوحة الويب. الأمر `/counting` لا ينشئ اللعبة ولا يعرض لوحة إدارة تفاعلية داخل Discord؛ وظيفته الحالية إظهار تنبيه خاص بالمستخدم ورابط لوحة الخادم:

[فتح إعدادات العد في لوحة التحكم](https://giveawayx.lol/server/\{guildId}/counting)

استبدل `{guildId}` بمعرّف الخادم. يوصي التنبيه بإعداد اللعبة من جديد عبر لوحة الويب بسبب مشكلة توافق بيانات الإعدادات القديمة مع بنية البيانات الحالية. ووفق نص الأمر، من المقرر إزالة الأمر خلال شهر؛ هذا الموعد الوارد في المصدر ليس تأكيدًا على أن الإزالة تمت.

> [!NOTE]
>
> مصدر الأمر المقدّم لا يحتوي على تنفيذ واجهة لوحة الويب. لذلك لا يمكن توثيق أسماء أقسامها أو عناصرها أو قوائم الاختيار والأزرار الموجودة فيها. كما أزيلت لوحة الإدارة القديمة داخل Discord؛ العنصر التفاعلي الوحيد الذي يرسله الأمر هو زر رابط **Open Dashboard**.

## إعداد اللعبة

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

## مرجع `/counting`

| الخاصية | التفاصيل |
| - | - |
| الصلاحية الافتراضية | **إدارة الخادم** (`ManageGuild`). |
| السياق | الخوادم فقط؛ إذا لم يكن السياق مرتبطًا بخادم ينتهي التنفيذ دون رد. |
| الاستجابة | تنبيه مع زر رابط **Open Dashboard**؛ الرد خاص (Ephemeral). |
| لوحة Discord القديمة | أزيلت، ولا يعيد الأمر توصيلها أو عرض قوائمها وأزرارها السابقة. |
| وجهة الرابط | `https://giveawayx.lol/server/{معرّف-الخادم}/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` يترك السلسلة دون إعادة أو إيقاف.

لا يذكر أي من الملفات المقدمة زرًا أو أمرًا لمسح لعبة العد أو إعادتها يدويًا بالكامل؛ لذا لا توثق هذه الصفحة عملية إعادة ضبط إدارية غير ظاهرة في المصادر.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.