Création d'une automatisation personnalisée

Est-il possible de créer ses propres scripts sans aucun problème ? Il suffit de le mettre dans le dossier et avec les mises à jour du plugin, rien ne se passe ? Ou dois-je créer un plugin qui s’interface avec ce plugin ? Par exemple, j’ai besoin d’un script pour créer un sujet. Il existe un script de création de messages, mais j’ai besoin de créer des sujets automatiques. Merci !

2 « J'aime »

Oui, cela nécessite un plugin pour définir un script personnalisé.

Quelque chose comme ceci dans plugin.rb

after_initialize do
  if defined?(DiscourseAutomation)
    add_automation_scriptable("my_custom_script") do
      # ...
    end
  end
end
3 « J'aime »

J’ai essayé mais il dit :

Impossible de trouver le script lb-script pour l’automatisation testing, assurez-vous que le plugin associé est installé

Je me trompe peut-être, mais dois-je créer un fichier séparé ou est-il acceptable de tout mettre dans le fichier plugin.rb ?

1 « J'aime »

Montrez-moi du code, sinon il me sera difficile de vous aider :slight_smile:

1 « J'aime »

J’ai juste essayé avec le post script copié du dossier des scripts du 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

Je manque de contexte sur ce que vous faites ici, voici un exemple complet dans un plugin externe : discourse-assign/plugin.rb at main · discourse/discourse-assign · GitHub

1 « J'aime »

Je ne comprends pas la différence par rapport à ce que j’ai fait. Évidemment, j’ai utilisé le post script juste pour voir si ça marchait. Mais quand je vais créer une automatisation, il ne me trouve aucun déclencheur et il dit qu’il ne trouve pas le script. Mais le code devrait me permettre de choisir entre les 2 déclencheurs pour créer un post, n’est-ce pas ? Je me trompe certainement mais je ne comprends pas vraiment.

Êtes-vous sûr que votre nouveau plugin est activé ?

1 « J'aime »

Oui, bien sûr. C’est absolument activé.

Pouvez-vous essayer d’assigner localement et voir si vous parvenez à l’afficher dans la liste ? Sinon, il y a autre chose qui se passe.

Je peux confirmer que l’attribution aléatoire fonctionne même si le plugin d’attribution n’est pas activé. Il y a probablement quelque chose qui m’échappe, je ne veux pas vous faire perdre votre temps.

3 « J'aime »

J’ai compris quel était le problème.

J’ai changé lb-script en lb_script et cela fonctionne maintenant. Il semble qu’on ne puisse pas utiliser le symbole du trait d’union (-).

3 « J'aime »