مزامنة Discord: مزامنة منتدى Discourse مع خادم Discord

:warning: هذا الملحق تلقائي؛ لا يحتوي على أي أمر. إذا كنت تبحث عن إطار عمل عام لروبوت Discord، يرجى الاطلاع على مجموعة أدوات بناء الروبوت الخاصة بـ @merefield هنا والذي استند إليه هذا الملحق.

مزامنة Discord مزامنة منتدى Discourse مع خادم Discord :discourse:

يتيح هذا الملحق مزامنة بعض العناصر المتعلقة بالمستخدم بين مثيلة منتدى Discourse وخادم Discord. سيقوم بإنشاء روبوت Discord للتعامل مع جميع الأذونات وتفعيلها مع بعض الإجراءات في الخادم.

الميزات

  • مزامنة مجموعات Discourse مع أدوار Discord
    سيدير تلقائيًا الأدوار في خادم Discord بناءً على المجموعات التي يتمتع المستخدم بالوصول إليها في Discourse.

    • دور موثق
      يمكنك إضافة “دور موثق” سيتم منحه لجميع مستخدمين Discord الذين قاموا بربط حساب Discord.

    • أدوار آمنة
      بما أن هذا الملحق سيفرض وجود نفس الأدوار في Discord مثل المجموعات في Discourse، يمكنك تعيين قائمة بالأدوار التي سيتجاهلها الروبوت ويمكنك إدارتها يدويًا في خادم Discord.

  • مزامنة اسم مستخدم Discourse مع اللقب في Discord
    إذا كنت ترغب في التعرف على المستخدمين من خلال اسم مستخدم المنتدى، فيمكنك إجبارهم على أن يكون لديهم نفس اللقب في خادم Discord مثل اسم المستخدم الذي لديهم في Discourse.

المحفزات

سيقوم الملحق بتشغيل مزامنة كاملة من Discourse إلى Discord (اللقب والأدوار) في الحالات التالية:

  • Discourse
    • تمت إضافة مستخدم إلى مجموعة
    • تمت إزالة مستخدم من مجموعة
    • تم تحديث ملف المستخدم
      مخصص لمزامنة اسم المستخدم-اللقب
    • تم مصادقة المستخدم
      سيتم تشغيله فقط إذا كان مزود المصادقة هو Discord، للتأكد من تنفيذ مزامنة أولى مباشرة بعد ربط الحسابات
  • Discord
    • انضم مستخدم إلى خادم Discord
      سيعمل في قاعدة البيانات بحثًا عن مستخدم يحمل معرف Discord المعطى، ثم سيشغل وظيفة المزامنة

التثبيت

:exclamation: يعتمد هذا الملحق على Discord OAuth2 لتحديد وربط حسابات Discourse-Discord. إذا كنت لا تريد السماح للمستخدمين بتسجيل الدخول عبر Discord، ولكنك ترغب في الحفاظ على ربط الحساب، فراجع حل هذا الموضوع.

المتطلبات المسبقة

يتطلب هذا الملحق libsodium (مطلوب بواسطة مكتبة Discord Ruby). لتثبيته، قم بتعديل ملف .yml الخاص بك وأضف الكود التالي:

hooks:
    before_code:
       - exec:
              cmd:
                - apt-get update
                - apt-get install -y libsodium-dev

خطوات التثبيت

  1. اتبع الدليل القياسي في كيفية تثبيت ملحق مع عنوان URL لهذا المستودع: https://github.com/barreeeiroo/discourse-discord-sync.git
  2. اتبع هذا الدليل لإعداد تسجيل الدخول عبر Discord في مثيلة Discourse الخاصة بك.
  3. في بوابة مطوري Discord، اذهب إلى Bot وأضفه إلى خادمك. تأكد من منحهم أعلى دور ممكن.
  4. في Discourse، في إعدادات الملحق، اضبط discord sync token باستخدام رمز الروبوت الذي ظهر في الخطوة السابقة.

خيارات التكوين

  • discord sync enabled: ما إذا كان يجب تمكين التكامل أم لا
  • discord sync token: رمز الروبوت من Discord
  • discord sync prefix: بادئة للأوامر (فقط !ping حتى الآن)
  • discord sync admin channel id: القناة لنشر رسائل السجل (تغييرات الألقاب، تغييرات الأدوار)
  • discord sync username: إذا كان صحيحًا، فسيتم مزامنة جميع ألقاب خادم Discord مع أسماء المستخدمين في Discourse
  • discord sync verified role: الدور الذي سيتم إضافته لجميع المستخدمين الذين لديهم حساب Discourse
  • discord sync safe roles: قائمة بالأدوار التي سيتجاهلها الروبوت وسيتم تحديدها على أنها مُمنَحة يدويًا في Discord

كيفية الاستخدام

لربط الحسابات، إذا كنت تسمح للمستخدمين بالمصادقة عبر Discord، فيمكنهم ببساطة استخدام هذا المزود. إذا لم يكن الأمر كذلك، فسيكون عليهم الذهاب إلى تفضيلات الحساب، والتمرير لأسفل إلى الحسابات المرتبطة والضغط على اتصال في صف Discord.

عرض حي

نحن نستخدم هذا الملحق حاليًا في مثيلة Discourse الخاصة بنا في مجتمع Kodular، مع خادم Discord في kodul.ar/discord:

الشكر والتقدير

  • Discourse Bot، من إعداد @merefield
    شكرًا جزيلاً لـ Robert على توفير الهيكل العظمي لهذا الملحق. لقد ساعد بالتأكيد في تأسيس أساس هذا الملحق بأكمله، مما يسمح بتشغيل روبوت Discord في مثيلة Discourse (وشكرًا له على حيله في تثبيت libsodium!).

  • Discourse Discord Sync، من إعداد @angus
    بديل لمزامنة مستويات الثقة مع أدوار Discord دون الحاجة إلى أي روبوت.

  • Login with Discord، من إعداد فريق Discourse
    لن يكون هذا الملحق ممكنًا بدون تكامل Discord OAuth2 (كان ملحقًا سابقًا)، لربط حسابات Discourse و Discord.

    • Partially enable login option، من إعداد @Falco و @Roman
      وشكرًا لـ Falco و Roman على توفير خيار لتمكين مزود تسجيل الدخول فقط لـ “ربط” الحسابات دون فعليًا تمكين خيار المصادقة.
  • discordrb
    يعتمد هذا الملحق على مكتبة discordrb، التي تسمح بالاتصال بـ API Discord باستخدام Ruby.

29 إعجابًا

هذا رائع حقًا! أنا شخصياً أكثر إعجابًا بـ Telegram، لكن Discord أيضًا رائع! أشعر أن Telegram سيقترن بشكل جيد مع Discourse، فكلاهما مشروعان مفتوحا المصدر معروفان ويركزان على التواصل.

سيكون ذلك رائعًا لو توفرت ميزة النشر المتقاطع. فلو قال شخص ما شيئًا في دردشة Discord، فسيتم إنشاء رد في موضوع Discord محدد يُعرف باسم “موضوع غرفة الدردشة”. وهذا سيعطي موقع Discourse الخاص بك دفعة في تحسين محركات البحث (SEO) بسبب كل المحتوى الجديد داخل موضوع الدردشة.

4 إعجابات

أنا أيضًا أحب تيليجرام كثيرًا، وكنا نستخدمه مع مجموعة دردشة عامة. لكن قبل بضعة أيام انتقلنا إلى ديسكورد، لأننا تجاوزنا 1000 عضو، وكان من الصعب جدًا إدارة مجموعة بهذا الحجم. كان من السهل القيام بذلك عبر ديسكورد بفضل نظام الأدوار لديهم.

4 إعجابات

عمل رائع :slight_smile:

بالإضافة إلى بوت ديسكورد الخاص بـ @merefield، يوجد أيضًا إضافة مزامنة بين أدوار ديسكورد ومجموعات ديسكورد تعتمد على OAuth2 فقط (بدون بوت) (مثل مزامنة مستوى الثقة 3 مع دور في ديسكورد) هنا:

5 إعجابات

هذا يزامن Discourse → Discord. ومع ذلك، نعتمد أكثر على أدوار Discord بدلاً من مجموعات Discourse لتحديد أنواع أصحاب المصلحة، لذا سيكون رائعًا إذا كان هذا الملحق قادرًا أيضًا على إجراء مزامنة من Discord → Discourse، أي إضافة مستخدمين من Discourse إلى مجموعات بناءً على أدوارهم في Discord، وإضافة شارات لمستخدمي Discourse بناءً على أدوارهم في Discord، وتغيير اسم مستخدم Discourse ليتطابق مع اسم مستخدم Discord (وليس العكس)، وما إلى ذلك.

إعجاب واحد (1)

هل من الممكن جعل المزامنة تتم في الاتجاه العكسي؟ أي مزامنة الأدوار من ديسكورد إلى مجموعات ديسكورش، والألقاب، وما إلى ذلك.

نحن ندير الأدوار وما شابه ذلك من ديسكورد ونفضل دفعها إلى ديسكورش.

إعجابَين (2)

إذا وجدت أي شيء مثل هذا، فيرجى إخباري.

يبدو هذا رائعًا حقًا. الشيء الوحيد هو، كيف يتم مطابقتها مع المجموعة على Discord من Discourse؟ هل يتم ذلك فقط عبر الاسم؟ إذا كان الأمر كذلك، هل يمكنك جعلنا نحدد أي مجموعة تذهب إلى أي دور باستخدام معرف الدور من Discord؟ إذا لم يكن هذا الحل، هل تعتقد أنه يمكنك إضافة قائمة بيضاء للأدوار؟ لدي عدد قليل فقط من الأدوار التي تحتوي على مجموعات على Discourse، لكنني أستخدم العديد من الأدوار على Discord.

إعجاب واحد (1)

هذه الوظيفة بالتحديد مهمة جدًا بالنسبة لنا، نظرًا لأننا ندير جميع الأدوار الخاصة بنا عبر Discord. سيكون من الجيد وجود طريقة لمزامنة المجموعات من Discord إلى Discourse. حتى لو كانت المزامنة تتم فقط عبر الأسماء، ويتم تكوين الأذونات وما إلى ذلك لاحقًا.

@barreeeiroo: هل لديك أي خطط لمثل هذا الأمر؟ أم لديك أي نصيحة حول كيفية المضي قدمًا؟ الإدارة اليدوية للأدوار عبر “Safe Roles” جيدة إلى حد ما. لدي أدوار تحتوي على مسافات، وبالتالي لا يمكنني إضافتها إلى حقل Safe Roles. بدلاً من التحديث اليدوي لجميع أدواري في Discord وإضافتها بدون مسافات، هل هناك مسار آخر يمكنني اتباعه؟

سيكون ممتازًا جدًا لو تم “دفع” المجموعات من Discord إلى مجموعات Discourse بدلاً من ذلك، إذا أمكن.

شكرًا لكم على عملكم في هذا الإضافة!

تعديل: الاقتراح باستخدام معرفات الأدوار (Role IDs) بدلاً من الأسماء سيحل الكثير من المشكلات من جهتي بالتأكيد.

إعجاب واحد (1)

لا يزال لدي مشاكل في إعداد هذا. بالنسبة للأدوار في Discord، هل يبحث عن معرف (ID) أم اسم؟ أيضًا، بدلاً من “الأدوار المحمية”، هل يمكنك إضافة ميزة تتيح لي مزامنة أدوار محددة فقط؟

لا أعرف لغة Ruby، وإلا لكنت عرضت مساعدتي. ربما سأتعلم الأساسيات أو سأقوم بتنفيذ شيء ما عبر واجهة برمجة التطبيقات (API) باستخدام لغة Java.

لقد وجدت مشكلتي، كان لدي اسم القناة الإدارية بدلاً من معرفها. الآن عليّ فقط إجراء بعض التحقق من الأذونات/الأدوار لمعرفة سبب عدم حدوث أي شيء بالفعل

إعجاب واحد (1)

أردت فقط أن أذكر: لقد قمت ببناء العكس لهذه الإضافة، والتي تقوم بمزامنة أدوار Discord مع مجموعات Discourse: https://www.youtube.com/watch?v=C5paAvTYty4

5 إعجابات

هل هناك أي طريقة يمكنك من خلالها مزامنة أدوار Discord مع Discourse، بدلاً من مزامنة أدوار Discourse مع Discord؟

هذه هي نقطة هذه الإضافة؟ هل هي معطلة؟ انظر أيضًا إلى إضافة البوت الخاصة بي المرتبطة في المنشور الأصلي والتي تقوم بمزامنة discourse → discord (وإن كان ذلك باستخدام أمر البوت)

إعجابَين (2)

جميع الإضافات هنا، تمنحك الأدوار التي لديك في discourse لحساب discord الخاص بك. إنها لا تمنحك أدوار discord الخاصة بك في حساب discourse الخاص بك.

أليس هذا هو عكس سؤالك الأصلي؟

أعتقد أن إضافة @spirobel تقوم بذلك؟

إعجابَين (2)

لا، إنه مثال إذا كان لديك “منسق مجتمع” في Discourse، فسيؤدي ذلك إلى تغيير دورك في Discord.
ولكن إذا كان لديك “منسق مجتمع” في Discord، فلن يؤدي ذلك إلى تغيير دورك في Discourse.

إعجابَين (2)

أعتقد أنك ربما فاتك ما كنت أشير إليه: Discord Sync: sync a Discourse forum with a Discord server - #17 by spirobel

الأمر متروك لك @spirobel

4 إعجابات

فاتني ذلك، إضافته هي إضافة مخصصة بقيمة 400 دولار

إعجاب واحد (1)

هل يبيع ذلك حقًا مقابل 400 دولار؟ هذا سخيف.

إعجاب واحد (1)