طقم بناء بوت Discord 🤖

حسناً. هذا محبط بعض الشيء بما أنني قمت للتو بتطبيق الخيوط (threads) في قنوات الدعم الخاصة بنا على Discord للحصول على نظرة أفضل لحالات الدعم. ولست متأكداً مما إذا كان هذا يحقق ذلك بالفعل - ولكن لحسن الحظ هناك مزايا أخرى.

هل لديك موعد تقديري لواجهة برمجة التطبيقات (API) وفكرة عن تكلفة دعم هذه الميزة؟

شكراً!

إعجابَين (2)

لقد تابعت مؤخرًا وكان قيد التطوير لبعض الوقت. سأتابع مرة أخرى وأعود، ولكن كن حذرًا، في المرة الأخيرة أخبروني “سيتم الانتهاء منه عندما يتم الانتهاء منه”… المشكلة مع المصادر المفتوحة غالبًا ما تكون نقص طريقة جيدة لتوجيه المستويات المناسبة من تمويل المجتمع (أو عدم وجوده) للمساعدة في التركيز وتحديد الأولويات… سنرى…

من جهتي، سأحتاج إلى رؤية التنفيذ النهائي لتقدير الجهد.

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

هل يمكنك توضيح الوظيفة/السلوك الذي تبحث عنه بالضبط؟

إعجابَين (2)

نعم، هذا أمر سيء أن تعتمد على شيء لا يمكنك التأثير عليه.

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

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

هل هذا منطقي؟ وهل هناك أي طريقة أخرى لتحقيق ذلك في إطار زمني أقصر ربما؟

إعجابَين (2)

مرحباً @merefield!

أتواصل معك هنا لأنني لا أعتقد أن مشكلة GitHub الخاصة بي قد تمت رؤيتها، وأعتقد أن هذا هو أفضل مكان تالٍ.

image

لقد كنا نواجه خطأً تعقبناه إلى إضافة بوت Discord. تعرض الصورة أعلاه خطأ فحص العنصر، ولكن أي مستخدم يرسل رسالة خاصة يتلقى أيضًا خطأ مرئيًا “500 Error” عند إرسال رسالته الخاصة. لا تزال الرسالة الخاصة تُرسل بنجاح، ولكن هذا الخطأ يجعله يبدو بخلاف ذلك. بعد تعطيل الإضافة، لم تعد المشكلة موجودة.

أنا متأكد من أن المشكلة تأتي من /lib/discourse_event_handlers.rb. أفترض أن رسالة خاصة تؤدي إلى تشغيل حدث DiscourseEvent لإنشاء منشور، مما يجعله يحاول الوصول إلى فئة المنشور عبر posted_category = post.topic.category.id، مما يسبب الخطأ.

آمل أن يساعد هذا وأن يتم حل هذه المشكلة قريبًا. شكراً.

إعجابَين (2)

شكرا على التقرير. يبدو صحيحا. قد أحصل على فرصة للنظر فيه هذا الأسبوع…

إعجابَين (2)

رائع، شكراً لك! سنترقب التحديث. :+1:

إعجابَين (2)

تنبيه بأنني أغرق في أعمال العملاء حاليًا، لذا قد لا يتم النظر في هذا الأمر لبعض الوقت.

في غضون ذلك، تم قبول طلب السحب (PR).

بشكل عام، أرحب بالمزيد من مساهمات المجتمع في المكونات الإضافية المجانية.

إعجابَين (2)

الأمور مشغولة للغاية بالنسبة لي في الوقت الحالي، لكنني دفعت ما أعتقد أنه إصلاح:

FIX: exclude private messages from bot event considerations · merefield/discourse-discord-bot@82b2109 (github.com)

يبدو أنه يعمل الآن واختفى الخطأ 500 المروع في الرسائل الخاصة …

إعجابَين (2)

أوه، هذا رائع ويحل محل Discord Chat!

هل من المفترض أن يقرأ أسماء الأسماء المستعارة على Discourse أم العناوين فقط؟

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

لا تدير Discord بواسطة slugs بنفس الطريقة، لذا على حد علمي، إنها عناوين.

إعجابَين (2)

مرحباً، لست متأكداً مما إذا كان هذا قد تم طرحه من قبل، ولكن هل يجب أن تكون بيانات اعتماد OAuth هي نفسها الخاصة بالتطبيق؟ لأننا حاليًا نستخدم تكاملًا آخر لمزامنة Discord والحقول الخاصة بـ OAuth مملوءة بالفعل. شكرًا.

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

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

إعجابَين (2)

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

إعجابَين (2)

لا أعتقد أنه يجب أن يكون نفس تطبيق Discord، لكن جربه!

إعجابَين (2)

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

لدينا بالفعل مجتمع نشط جدًا على Discord وأضفنا Discourse مؤخرًا لمناقشات أكثر تنظيمًا.

أبحث عن حل يعمل كالتالي: يتم منح عضو يقوم بتسجيل الدخول بحساب Discord الخاص به ولديه دور محدد على Discord تلقائيًا مستوى ثقة 1 في Discourse.

هل ستكون مجموعة أدوات الروبوت هذه (Bot Kit) نقطة انطلاق مناسبة لمثل هذا التنفيذ؟

شكراً لك

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

يفيد هذا البوت، على حد علمي، بأنه “أحادي الاتجاه” من Discourse إلى Discord. لا توجد وظائف معاكسة مدمجة.

شخصيًا، أعتقد أنه سيكون من الأسهل تحقيق ذلك باستخدام كود خارجي يراقب خطاف الويب الخاص بأحداث المستخدم لتثبيت Discourse الخاص بك.

حدث خطاف الويب → الحصول على معرف مستخدم Discord من قاعدة بيانات Discourse (يتطلب استخدام مصادقة Discord) → الحصول على الأدوار باستخدام discord.js أو .py أو ما شابه → تعيين الدور بطلب API الخاص بـ Discourse

للحصول على معرف Discord، تحتاج إلى استخدام المكون الإضافي Data Explorer وإنشاء الاستعلام التالي:

-- [params]
-- string :user
SELECT u.username, u.id, a.user_id, a.provider_name, a.provider_uid
FROM users u
JOIN user_associated_accounts a on a.user_id = u.id
WHERE u.username = :user

يمكنك بعد ذلك البحث في وثائق المكون الإضافي Data Explorer والوصول إلى هذا الاستعلام بطلب API للحصول على المعرف.

آمل أن يساعد هذا إلى حد ما.

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

بينما هذا صحيح لمزامنة الأدوار، هذا غير صحيح بخلاف ذلك.

من المنشور الأصلي:

لذا هناك الكثير من السلوك من Discord → إلى Discourse وهو أبعد ما يكون عن مجرد بوت “مزامنة الأدوار”.

كما هو الحال دائمًا، نرحب بطلبات السحب (PR) لأي وظائف إضافية مفيدة بشكل عام. سيكون من الجيد الحصول على بعض الإضافات من المجتمع. :eyes:

4 إعجابات

شكراً لك على هذا المنشور @merefield

هل يمكنني الحصول على حساب الديسكورد الخاص بك؟ أود أن أطرح عليك بعض الأسئلة إذا كان ذلك مناسبًا.

للحفاظ على المعرفة مفتوحة ومفهرسة للجميع، من الأفضل على الأرجح طرح الأسئلة هنا. ديسكورد عبارة عن ثقب أسود للمعلومات. تدخل الأشياء ثم لا يتم العثور عليها مرة أخرى :slight_smile: وبخلاف ذلك، لدينا أيضًا دردشة هنا على ديسكورس.

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

مرحباً كيني، إذا لم يكن الأمر تجارياً، فسأكون ممتناً لو طرحت أسئلتك هنا حتى يستفيد المجتمع منها (أو حتى يجيب عليها)

3 إعجابات