| الملخص | مكون سمة يحول الرسائل الخاصة مع روبوت ذكاء اصطناعي إلى تجربة مسابقة تفاعلية. | |
| المستودع | GitHub - VaperinaDEV/discourse-quizmaster: A theme component that transforms private messages with an AI bot into an interactive quiz experience. · GitHub | |
| دليل التثبيت | كيفية تثبيت سمة أو مكون سمة | |
| جديد في سمات Discourse؟ | دليل المبتدئين لاستخدام سمات Discourse |
تثبيت مكون السمة هذا
مكون سمة المسابقة التفاعلية
مرحبًا ![]()
لقد قمت بإنشاء مكون سمة يحول الرسائل الخاصة مع روبوت ذكاء اصطناعي إلى تجربة مسابقة تفاعلية. يقوم المكون تلقائيًا بتنسيق أسئلة المسابقة، والتعامل مع إرسال الإجابات، وتتبع التقدم، وإدارة إكمال المسابقة مع قائمة منسدلة في الرأس لبدء المسابقة بسرعة.
الميزات
1. مطلق المسابقة من القائمة المنسدلة في الرأس
توفر زر قائمة منسدلة قابل للتخصيص في رأس الموقع وصولاً سريعًا لأنواع المسابقات المختلفة:
- قابل للتكوين بالكامل عبر إعدادات السمة باستخدام مخطط الكائن
- دعم متعدد اللغات مع تكامل i18n للتسميات والأوصاف والرسائل
- أيقونات قابلة للتخصيص لكل مستوى صعوبة في المسابقة
- تتضمن الخيارات الافتراضية: مسابقات سهلة، عادية، صعبة، ومختلطة الصعوبة
- يرسل كل خيار رسالة مُعدة مسبقًا إلى روبوت الذكاء الاصطناعي لبدء المسابقة
2. تنسيق تلقائي لأسئلة المسابقة
يكتشف المكون وينسق أسئلة الاختيار من متعدد من منشورات روبوت الذكاء الاصطناعي. عندما ينشر الروبوت قائمة تبدأ بـ “A)”, “B)”, إلخ، يتم تحويلها تلقائيًا إلى خيارات مسابقة قابلة للنقر مع تنسيق مخصص.
3. إرسال الإجابة بنقرة واحدة
يمكن للمستخدمين النقر مباشرة على خيارات الإجابة (A, B, C, D) لتقديم ردّهم. يقوم المكون بـ:
- منع الإرسال المكرر مع حالة التحميل
- الرد تلقائيًا على المنشور الصحيح
- تنسيق الإجابات بشكل متناسق (مثل: “إجابتي: A) نص الخيار”)
- توفير معالجة الأخطاء مع ملاحظات للمستخدم
4. عداد الأسئلة
يظهر مؤشر تقدم على كل سؤال في المسابقة يعرض:
- رقم السؤال الحالي مقابل الحد الأقصى المسموح به
- حد أقصى قابل للتخصيص للأسئلة (الافتراضي: 50)
- مرئي فقط على منشورات روبوت الذكاء الاصطناعي
5. إنهاء تلقائي للمسابقة
يتضمن المكون إدارة ذكية للمسابقة:
- نقاط تحقق مرحلية: يعرض زر “إنهاء المسابقة” كل 10 أسئلة (بعد السؤال 11، 21، 31، إلخ)
- فرض الحد الأقصى: يرسل رسالة إنهاء تلقائيًا عند الوصول إلى الحد الأقصى لعدد الأسئلة
- منع التكرار: يتتبع حالة الإنهاء لمنع منشورات إنهاء متعددة
- فحوصات التحقق: يضمن حدوث الإنهاء فقط عند الحاجة
6. تعديلات واجهة المستخدم
عند التواجد في محادثة مسابقة:
- يزيل أزرار إعادة المحاولة/المشاركة من منشورات الروبوت (لغير المدراء)
- يزيل زر الرد من منشورات الروبوت في الرسائل الخاصة
- يمنع منشئي المسابقة من حذف منشوراتهم (يحافظ على سجل المسابقة)
- يضيف فئة CSS مخصصة
is-quiz-chatللتصميم
الإعدادات
يستخدم المكون إعدادات السمة التالية:
# إعدادات سلوك المسابقة
quizmaster_username: "YourBotUsername" # اسم مستخدم روبوت الذكاء الاصطناعي
show_for_groups: "" # إظهار القائمة المنسدلة في الرأس للمجموعات
quiz_max_questions: 50 # الحد الأقصى للأسئلة قبل الإنهاء التلقائي
# إعدادات زر الرأس
button_icon: "question-circle" # أيقونة زر المسابقة الرئيسي
# خيارات المسابقة المنسدلة (مخطط كائن) الحد الأقصى 4
dropdown_items:
type: objects
default:
- label_template: quiz_easy_label
description_template: quiz_easy_description
icon: star
message_template: quizmaster_input_easy
- label_template: quiz_normal_label
description_template: quiz_normal_description
icon: star-half-alt
message_template: quizmaster_input_normal
- label_template: quiz_hard_label
description_template: quiz_hard_description
icon: certificate
message_template: quizmaster_input_hard
- label_template: quiz_mixed_label
description_template: quiz_mixed_description
icon: random
message_template: quizmaster_input_mixed
schema:
properties:
label_template:
type: string
description_template:
type: string
icon:
type: string
message_template:
type: string
svg_icons:
default: "far-star-half"
type: list
list_type: "compact"
description: "قائمة أيقونات FontAwesome 6 المستخدمة في مكون السمة هذا"
مفاتيح الترجمة
أضف هذه إلى ملفات اللغة الخاصة بسمتك لدعم i18n الكامل:
الإنجليزية (en.yml)
en:
js:
# زر الرأس
quiz: "مسابقة"
# تسميات القائمة المنسدلة
quiz_easy_label: "مسابقة سهلة"
quiz_normal_label: "مسابقة عادية"
quiz_hard_label: "مسابقة صعبة"
quiz_mixed_label: "مسابقة مختلطة"
# أوصاف القائمة المنسدلة
quiz_easy_description: "أسئلة أساسية للمبتدئين"
quiz_normal_description: "أسئلة بصعوبة متوسطة"
quiz_hard_description: "تحدي على مستوى متقدم"
quiz_mixed_description: "أسئلة بصعوبة عشوائية"
# قوالب الرسائل
quizmaster_input_easy: "أعطني سؤال مسابقة سهل"
quizmaster_input_normal: "أعطني سؤال مسابقة بصعوبة عادية"
quizmaster_input_hard: "أعطني سؤال مسابقة صعب"
quizmaster_input_mixed: "أعطني سؤال مسابقة بصعوبة مختلطة"
# تفاعل المسابقة
my_answer: "إجابتي على السؤال هي:"
terminate_quiz: "شكرًا للعبة، أود ملخصًا!"
max_questions_text: "أسئلة (أو حتى ينضب مصدر أسئلتي). كل 10، اختر: البقاء أو المضي قدمًا."
حالات الاستخدام
هذا المكون مثالي لـ:
- مسابقات تعليمية مع مدرّبين ذكاء اصطناعي
- تقييمات تدريبية
- اختبار المعرفة
- تجارب تعلم تفاعلية
- تقديم محتوى مؤسس على الألعاب
- تطبيقات تعلم اللغات
- دورات التحضير للشهادات
يتعامل المكون مع كل تعقيدات تتبع الحالة، ومنع الأخطاء، وإدارة دورة حياة المسابقة تلقائيًا، مما يوفر تجربة سلسة لمنشئي المسابقة والمشاركين على حد سواء. تجعل القائمة المنسدلة في الرأس من السهل جدًا على المستخدمين بدء المسابقات.
التخصيص
يمكن للمدراء تخصيص تجربة المسابقة بسهولة عن طريق:
- تعديل تسميات وأوصاف صعوبة المسابقة في ملفات اللغة
- إضافة ترجمات لغات جديدة
- تغيير الأيقونات لأنواع المسابقات المختلفة
- ضبط قوالب الرسائل المرسلة إلى روبوت الذكاء الاصطناعي
- تكوين المجموعات التي تظهر لها زر الرأس
- تعيين حدود الحد الأقصى للأسئلة
يتم جميع التخصيصات عبر واجهة المسؤول دون الحاجة للمس أي كود.
موجه نظام الذكاء الاصطناعي
يعمل المكون بسلاسة مع روبوتات الذكاء الاصطناعي من خلال اكتشاف تنسيق قائمة بسيط. إليك مثال على موجه نظام لروبوتك الذكي الغامض (قم بالتخصيص حسب الحاجة):
أنت Quizmaster المهني الغامض الصارم لكن العادل. تحدث بسلطة ولكن بمساعدة، كما لو كنت ساحرًا حديثًا. استخدم بعض العبارات المتعلقة بالسحر (مثل: "لنرى ما يكمن في ضباب معرفتك...")، ولكن التزم بالحقائق التقنية.
### مستويات صعوبة المسابقة (الأنماط)
سيبدأ المستخدم المحادثة بتحديد مستوى صعوبة. استخدم الإرشادات التالية لمعايرة عمق أسئلتك:
1. **سهل:**
[ضع هنا معايير الوضع السهل الخاص بك]
2. **عادي:**
[ضع هنا معايير الوضع العادي الخاص بك]
3. **صعب:**
[ضع هنا معايير الوضع الصعب الخاص بك]
4. **مختلط:** اختر عشوائيًا مستوى صعوبة وفئة لكل سؤال.
---
### منطق الاستجابة الديناميكي
**تعليمات:** لكل سؤال جديد، اختر فئة مختلفة (A-E) عن آخر 5 أسئلة.
- **قواعد التنوع:** لا تكرر سؤالًا أو موضوعه داخل الجلسة نفسها.
- **اقتراح الترقية:** بعد كل علامة 10 أسئلة، إذا كان لدى المستخدم معدل نجاح 100% في السهل أو العادي، اقترح الانتقال إلى المستوى التالي داخل كتلة التقييم.
### القواعد الأساسية:
1. **التدفق المستمر:** بعد تقييم إجابة، قدم السؤال التالي فورًا في نفس الرسالة.
2. **إنهاء اللعبة:**
* إذا كتب المستخدم: "شكرًا للعب، أود ملخصًا!", توقف فورًا.
* قدم تقييمًا نهائيًا بناءً فقط على الأسئلة التي تم الإجابة عليها.
* قدم النتيجة النهائية ووداعًا غامضًا.
3. **إخراج واحد فقط:** **حاسم: قدم التقييم والنتيجة الحالية والسؤال التالي مرة واحدة بالضبط. لا تكرر السؤال أو قائمة الخيارات داخل نفس الاستجابة.**
### هيكل الاستجابة والتنسيق (إلزامي):
> [إيموجي صحيح/خاطئ] **[شرح موجز للإجابة السابقة.]**
*النتيجة الحالية: [X] نقاط*
---
### [نص السؤال التالي يذهب هنا]
* أ) [نص_الخيار_أ]
* ب) [نص_الخيار_ب]
* ج) [نص_الخيار_ج]
* د) [نص_الخيار_د]
---
### قواعد الأتمتة (للذكاء الاصطناعي):
- **لا تستخدم وسوم التغليف:** لا تستخدم وسوم `[wrap]` أو أي بناء جملة خاص بـ Discourse للأزرار.
- **تنسيق قائمة صارم:** يجب أن تقدم الخيارات الأربعة كقائمة نقطية بسيطة تمامًا كما هو موضح أعلاه، تبدأ بـ "أ)", "ب)", "ج)", و "د)".
- **تكامل النظام:** سيقوم النظام الخارجي باكتشاف قائمتك أ-د تلقائيًا وتحويلها إلى أزرار تفاعلية. لا تحاول تصميم الأزرار بنفسك.
### القيود:
- **اتساق اللغة:** استجب دائمًا بنفس اللغة التي استخدمها المستخدم.
- يجب أن يكون الشرح داخل اقتباس (>).
ملاحظة: حاولنا في البداية استخدام وسوم [wrap] لإنشاء أزرار، لكن الذكاء الاصطناعي أحيانًا يفوت إغلاق ]، مما يكسر الوظيفة. تنسيق القائمة النقطية البسيط (* أ), * ب), إلخ) أكثر موثوقية بكثير ويكاد يكون مستحيلًا على الذكاء الاصطناعي أن يخطئ فيه. يقوم مكون السمة تلقائيًا باكتشاف هذا التنسيق وتحويله إلى أزرار تفاعلية.
أود حقًا سماع عن حالة الاستخدام الخاصة بك. يرجى المشاركة!

