Creazione di un'automazione personalizzata

È possibile creare script personalizzati senza problemi? Basta metterli nella cartella e con gli aggiornamenti dei plugin, non succede nulla? O devo creare un plugin che si interfaccia con questo plugin? Ad esempio, ho bisogno di uno script per creare un argomento. Esiste uno script per la creazione di post, ma ho bisogno di creare argomenti automatici. Grazie!

2 Mi Piace

Sì, necessita di un plugin per definire uno script personalizzato.

Qualcosa del genere in plugin.rb

after_initialize do
  if defined?(DiscourseAutomation)
    add_automation_scriptable("my_custom_script") do
      # ...
    end
  end
end
3 Mi Piace

Ho provato ma dice:

Impossibile trovare lo script lb-script per l’automazione testing, assicurati che il plugin associato sia installato

Forse sbaglio, ma dovrei creare un file separato o va bene mettere tutto nel file plugin.rb?

1 Mi Piace

Mostrami del codice, altrimenti sarà difficile aiutarti :slight_smile:

1 Mi Piace

Ho appena provato con lo script post copiato dalla cartella degli script del plugin Automation:

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

Mi manca il contesto su cosa stai facendo qui, ecco un esempio completo in un plugin esterno: discourse-assign/plugin.rb at main · discourse/discourse-assign · GitHub

1 Mi Piace

Non capisco quale sia la differenza rispetto a quello che ho fatto. Ovviamente ho usato lo script post solo per vedere se funzionava. Ma quando vado a creare un’automazione, non mi trova alcun trigger e dice che non riesce a trovare lo script. Ma il codice dovrebbe permettermi di scegliere tra i 2 trigger per creare un post, giusto? Mi sbaglio sicuramente ma non capisco bene.

sei sicuro che il tuo nuovo plugin sia abilitato?

1 Mi Piace

Sì, certo. È assolutamente abilitato.

Puoi provare a usare assign localmente e vedere se riesci a farlo apparire nell’elenco? Altrimenti c’è qualcos’altro che non va.

Posso confermare che Assegnazione Casuale funziona anche se il plugin Assegnazione non è abilitato. Probabilmente mi sfugge qualcosa, non voglio farti perdere tempo.

3 Mi Piace

Ho capito qual era il problema.

Ho cambiato lb-script in lb_script e ora funziona. Evidentemente non si può usare il simbolo del trattino (-).

3 Mi Piace