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!
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
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?
Zeigen Sie mir etwas Code, sonst wird es schwierig für mich, Ihnen zu helfen ![]()
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
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?
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.
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.