Creando una automatización personalizada

¿Es posible crear mis propios scripts sin ningún problema? ¿Simplemente poniéndolos en la carpeta y con las actualizaciones del plugin, no pasa nada? ¿O tengo que crear un plugin que interactúe con este plugin? Por ejemplo, necesito un script para crear un tema. Hay un script de creación de publicaciones, pero necesito crear temas automáticos. ¡Gracias!

2 Me gusta

Sí, necesita un plugin para definir un script personalizado.

Algo como esto en plugin.rb

after_initialize do
  if defined?(DiscourseAutomation)
    add_automation_scriptable("my_custom_script") do
      # ...
    end
  end
end
3 Me gusta

Lo intenté pero dice:

No se encontró el script lb-script para la automatización testing, asegúrate de que el plugin asociado esté instalado

Quizás me equivoque, pero ¿debería crear un archivo separado o está bien poner todo en el archivo plugin.rb?

1 me gusta

Muéstrame algo de código o me será difícil ayudarte :slight_smile:

1 me gusta

Acabo de intentarlo con el script posterior copiado de la carpeta de scripts 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

Me falta contexto sobre lo que estás haciendo aquí, aquí tienes un ejemplo completo en un plugin externo: discourse-assign/plugin.rb at main · discourse/discourse-assign · GitHub

1 me gusta

No entiendo cuál es la diferencia con lo que hice. Obviamente, usé el script posterior solo para ver si funcionaba. Pero cuando voy a crear una automatización, no me encuentra ningún disparador y dice que no puede encontrar el script. Pero el código debería permitirme elegir entre los 2 disparadores para crear una publicación, ¿verdad? Definitivamente me equivoco, pero no lo entiendo realmente.

¿estás seguro de que tu nuevo plugin está habilitado?

1 me gusta

Sí, por supuesto. Está absolutamente habilitado.

¿Puedes intentar usar assign localmente y ver si logras que aparezca en la lista? Si no, algo más está sucediendo.

Confirmo que Asignación Aleatoria funciona incluso si el plugin Asignar no está habilitado. Probablemente me falte algo, no quiero hacerle perder el tiempo.

3 Me gusta

Descubrí cuál era el problema.

Cambié lb-script a lb_script y ahora funciona. Evidentemente no se puede usar el símbolo del guion (-).

3 Me gusta