بعد التثبيت، يرجى اتباع التعليمات أدناه قبل تمكين الإضافة
قبل تمكين هذه الإضافة، تحتاج إلى إنشاء حساب ليتم استخدامه كـ “بوت مساعد المستخدم”. على الرغم من أن هذه الإضافة يمكنها إنشاء مستخدم بوت تلقائيًا أو استخدام @Discobot الموجود، إلا أنني لا أوصي بذلك، لأن مستخدمي البوت الذين تم إنشاؤهم بواسطة الإضافة لا يمكن تعديلهم في لوحة الإدارة. يمكنك منحه أي صلاحيات تريدها، لأنه في الواقع، تم كتابة الكود ذي الصلة خصيصًا لجعل البوت يتصرف دائمًا كمسؤول، ولكن أقترح أنه من الأفضل منحه صلاحيات المسؤول أو المشرف. أثناء التطوير، تحدث أحيانًا أخطاء غير معروفة لا يمكنني إعادة إنتاجها بثبات بسبب هذا السبب.
بعد ذلك، تحتاج إلى إنشاء موضوع، يمكن أن يكون رسالة خاصة أو موضوعًا عامًا. املأ topic_id الخاص به في SiteSetting.topic_op_admin_logger_topic. إذا تم تشغيل topic_op_admin_enable_topic_log، فسيقوم البوت المذكور أعلاه بإنشاء منشورات سجل أكثر تفصيلاً داخل الموضوع.
بعد إنشاء روبوت مساعد المستخدم، قم بتدوين معرف المستخدم الخاص به، ثم قم بملئه في SiteSetting.topic_op_admin_bot_user_id أعلاه.
قد يتسبب فتح إعدادات معينة دون اتباع الخطوات المذكورة أعلاه بشكل صحيح في حدوث أخطاء أو حتى تعطل موقعك.
الإضافات هي أكواد تعمل جنبًا إلى جنب مع Discourse. لا توجد مشكلة في أن يكون لدى البوت أي أذونات، من المسؤول إلى TL0، لأنه في الواقع مجرد كائن عمليات برمجية، ولديه أذونات غير محدودة.
في الواقع، لقد انتهيت الآن من تطوير هذا الجزء من الإضافة. لكنني سأكون حذرًا بشأن نشر هذه الإضافة في Plugin نظرًا للعواقب الكارثية إذا حدث خطأ ما في إضافة (بدلاً من مكون سمة).
سأقوم بإصدارها رسميًا بعد إطلاق الإضافة في منتدى الخاص بي وبعد فترة من التحقق.
@Lhc_fl يبدو هذا مفيدًا للغاية، ولكنه يسمح لصاحب الموضوع الأصلي بالنشر في موضوعه الخاص أثناء إغلاقه، كما يمكن للمشرف أو المسؤول القيام بذلك؟ بالنسبة لنا، يبدو هذا تدفقًا أفضل بكثير من جعله يفتح الموضوع، وينشر، ثم يعيد إغلاقه.
أعتذر لأن هذه الإضافة غير متوافقة مع الإصدار الجديد من discourse بسبب ترقية ember.js، لكنني مشغول جدًا الآن لإصلاحها. إذا كان أي شخص على استعداد لإصلاحها، فيرجى تقديم طلب سحب (PR) على Github.
chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:393
SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
at D.parse [as parseJSON] (<anonymous>)
at l (chunk.7b3110aa5b5be8…1d8cd9.js:393:63167)
at p (chunk.7b3110aa5b5be8…1d8cd9.js:393:63847)
at k (chunk.7b3110aa5b5be8…41d8cd9.js:308:3688)
at w (chunk.7b3110aa5b5be8…41d8cd9.js:308:3581)
at f (chunk.7b3110aa5b5be8…41d8cd9.js:308:3077)
at invoke (chunk.7b3110aa5b5be8…41d8cd9.js:121:10063)
at m.flush (chunk.7b3110aa5b5be8…41d8cd9.js:121:9140)
at g.flush (chunk.7b3110aa5b5be8…41d8cd9.js:121:11012)
at q._end (chunk.7b3110aa5b5be8…41d8cd9.js:121:16062)
at q.end (chunk.7b3110aa5b5be8…41d8cd9.js:121:13189)
at q._run (chunk.7b3110aa5b5be8…41d8cd9.js:121:16576)
at q.run (chunk.7b3110aa5b5be8…41d8cd9.js:121:13722)
at c (chunk.7b3110aa5b5be8…41d8cd9.js:161:53419)
at t.error (chunk.7b3110aa5b5be8…41d8cd9.js:302:131483)
at l (chunk.7b3110aa5b5be8…41d8cd9.js:191:58317)
at Object.fireWith [as rejectWith] (chunk.7b3110aa5b5be8…41d8cd9.js:191:59062)
at C (chunk.7b3110aa5b5be8…41d8cd9.js:194:5783)
at XMLHttpRequest.<anonymous> (chunk.7b3110aa5b5be8…41d8cd9.js:194:8211)
l @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:393
p @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:393
k @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
w @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
f @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
invoke @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
flush @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
flush @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_end @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
end @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_run @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
run @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
c @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:161
t.error @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:302
l @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:191
fireWith @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:191
C @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:194
(anonymous) @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:194
XMLHttpRequest.send
send @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:194
ajax @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:194
o @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:302
(anonymous) @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
e @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
D @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:302
submit @ request-op-admin-form.js:106
(anonymous) @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:421
invoke @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
flush @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
flush @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_end @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
end @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_runExpiredTimers @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
setTimeout
setTimeout @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_installTimerTimeout @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_reinstallTimerTimeout @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_later @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
later @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
T @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:161
_triggerAction @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:421
click @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:421