Erstellen einer eigenen Automatisierung

Ist es möglich, eigene Skripte ohne Probleme zu erstellen? Einfach in den Ordner legen und bei Plugin-Updates passiert nichts? Oder muss ich ein Plugin erstellen, das mit diesem Plugin interagiert? Ich brauche zum Beispiel ein Skript, um ein Thema zu erstellen. Es gibt ein Skript zur Beitragserstellung, aber ich muss automatische Themen erstellen. Danke!

2 „Gefällt mir“

Ja, es wird ein Plugin benötigt, um ein benutzerdefiniertes Skript zu definieren.

Etwas wie dies in plugin.rb

after_initialize do
  if defined?(DiscourseAutomation)
    add_automation_scriptable("my_custom_script") do
      # ...
    end
  end
end
3 „Gefällt mir“

Ich habe es versucht, aber es sagt:

Skript lb-script für die Automatisierung testing nicht gefunden. Stellen Sie sicher, dass das zugehörige Plugin installiert ist.

Vielleicht irre ich mich, aber sollte ich eine separate Datei erstellen oder ist es in Ordnung, alles in die Datei plugin.rb zu schreiben?

1 „Gefällt mir“

Zeigen Sie mir etwas Code, sonst wird es schwierig für mich, Ihnen zu helfen :slight_smile:

1 „Gefällt mir“

Ich habe es gerade mit dem Post-Skript versucht, das aus dem Skriptordner des Automation-Plugins kopiert wurde:

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

Ich habe keinen Kontext dazu, was Sie hier tun. Hier ist ein vollständiges Beispiel in einem externen Plugin: discourse-assign/plugin.rb at main · discourse/discourse-assign · GitHub

1 „Gefällt mir“

Ich verstehe nicht, was der Unterschied zu dem ist, was ich getan habe. Offensichtlich habe ich das Post-Skript nur benutzt, um zu sehen, ob es funktioniert. Aber wenn ich eine Automatisierung erstellen möchte, findet es keine Trigger und es wird gesagt, dass es das Skript nicht finden kann. Aber der Code sollte es mir ermöglichen, zwischen den beiden Triggern zu wählen, um einen Beitrag zu erstellen, oder? Ich liege definitiv falsch, aber ich verstehe es nicht wirklich.

Sind Sie sicher, dass Ihr neues Plugin aktiviert ist?

1 „Gefällt mir“

Ja, natürlich. Es ist absolut aktiviert.

Können Sie versuchen, es lokal zuzuweisen und zu sehen, ob es in der Liste angezeigt wird? Wenn nicht, liegt etwas anderes vor.

Ich kann bestätigen, dass Random Assign auch dann funktioniert, wenn das Assign-Plugin nicht aktiviert ist. Wahrscheinlich übersehe ich etwas, ich möchte Ihre Zeit nicht verschwenden.

3 „Gefällt mir“

Ich habe herausgefunden, was das Problem war.

Ich habe lb-script in lb_script geändert und es funktioniert jetzt. Offenbar kann man das Bindestrichsymbol (-) nicht verwenden.

3 „Gefällt mir“