هل من الممكن إنشاء نصوص برمجية خاصة بي دون أي مشكلة؟ فقط بوضعها في المجلد ومع تحديثات المكون الإضافي، لا يحدث شيء؟ أم يجب عليّ إنشاء مكون إضافي يتفاعل مع هذا المكون الإضافي؟ على سبيل المثال، أحتاج إلى نص برمجي لإنشاء موضوع. يوجد نص برمجي لإنشاء منشورات ولكني أحتاج إلى إنشاء مواضيع تلقائية. شكرًا!
نعم، يحتاج إلى إضافة لتحديد نص برمجي مخصص.
شيء كهذا في plugin.rb
after_initialize do
if defined?(DiscourseAutomation)
add_automation_scriptable("my_custom_script") do
# ...
end
end
end
حاولت ولكن ظهرت الرسالة:
تعذر العثور على البرنامج النصي lb-script للأتمتة testing، تأكد من تثبيت المكون الإضافي المرتبط
ربما أكون مخطئًا، ولكن هل يجب علي إنشاء ملف منفصل أم أنه لا بأس بوضع كل شيء في ملف plugin.rb؟
أرني بعض الأكواد وإلا سيكون من الصعب علي مساعدتك ![]()
لقد جربت للتو مع النص البرمجي بعد النسخ من مجلد البرامج النصية لمكون الأتمتة الإضافي:
after_initialize do
if defined?(DiscourseAutomation)
add_automation_scriptable("lb-script") do
version 1
placeholder :creator_username
field :creator, component: :user
field :topic, component: :text, required: true
field :post, component: :post, required: true
triggerables %i[recurring point_in_time]
script do |context, fields, automation|
creator_username = fields.dig("creator", "value") || Discourse.system_user.username
placeholders = { creator_username: creator_username }.merge(context["placeholders"] || {})
creator = User.find_by!(username: creator_username)
PostCreator.new(
creator,
topic_id: fields.dig("topic", "value"),
raw: fields.dig("post", "value"),
).create!
end
end
end
end
أفتقر إلى السياق حول ما تفعله هنا، إليك مثال كامل في مكون إضافي خارجي: discourse-assign/plugin.rb at main · discourse/discourse-assign · GitHub
لا أفهم ما هو الاختلاف مقارنة بما فعلته. من الواضح أنني استخدمت البريد النصي فقط لمعرفة ما إذا كان يعمل. ولكن عندما أذهب لإنشاء أتمتة، لا أجد أي مشغل ويقول إنه لا يمكنه العثور على النص البرمجي. ولكن يجب أن يسمح لي الكود بالاختيار بين المشغلين لإنشاء منشور، أليس كذلك؟ أنا بالتأكيد مخطئ ولكنني لا أفهم حقًا.
هل أنت متأكد من تمكين المكون الإضافي الجديد الخاص بك؟
نعم، بالطبع. إنه ممكّن تمامًا.
هل يمكنك محاولة استخدام التعيين محليًا ومعرفة ما إذا كنت تتمكن من عرضه في القائمة؟ إذا لم يكن الأمر كذلك، فهناك شيء آخر يحدث.
يمكنني التأكيد على أن التعيين العشوائي يعمل حتى لو لم يكن المكون الإضافي للتعيين ممكّنًا. ربما هناك شيء فاتني، لا أريد أن أضيع وقتك.
لقد اكتشفت سبب المشكلة.
لقد قمت بتغيير lb-script إلى lb_script وهي تعمل الآن. من الواضح أنه لا يمكنك استخدام الرمز الواصل (-).