إنشاء أتمتة مخصصة

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

إعجابَين (2)

نعم، يحتاج إلى إضافة لتحديد نص برمجي مخصص.

شيء كهذا في plugin.rb

after_initialize do
  if defined?(DiscourseAutomation)
    add_automation_scriptable("my_custom_script") do
      # ...
    end
  end
end
3 إعجابات

حاولت ولكن ظهرت الرسالة:

تعذر العثور على البرنامج النصي lb-script للأتمتة testing، تأكد من تثبيت المكون الإضافي المرتبط

ربما أكون مخطئًا، ولكن هل يجب علي إنشاء ملف منفصل أم أنه لا بأس بوضع كل شيء في ملف plugin.rb؟

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

أرني بعض الأكواد وإلا سيكون من الصعب علي مساعدتك :slight_smile:

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

لقد جربت للتو مع النص البرمجي بعد النسخ من مجلد البرامج النصية لمكون الأتمتة الإضافي:

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

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

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

هل أنت متأكد من تمكين المكون الإضافي الجديد الخاص بك؟

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

نعم، بالطبع. إنه ممكّن تمامًا.

هل يمكنك محاولة استخدام التعيين محليًا ومعرفة ما إذا كنت تتمكن من عرضه في القائمة؟ إذا لم يكن الأمر كذلك، فهناك شيء آخر يحدث.

يمكنني التأكيد على أن التعيين العشوائي يعمل حتى لو لم يكن المكون الإضافي للتعيين ممكّنًا. ربما هناك شيء فاتني، لا أريد أن أضيع وقتك.

3 إعجابات

لقد اكتشفت سبب المشكلة.

لقد قمت بتغيير lb-script إلى lb_script وهي تعمل الآن. من الواضح أنه لا يمكنك استخدام الرمز الواصل (-).

3 إعجابات