Можно ли создавать собственные скрипты без каких-либо проблем? Достаточно ли просто поместить их в папку, чтобы при обновлениях плагина ничего не происходило? Или мне нужно создать плагин, который будет взаимодействовать с этим плагином? Например, мне нужен скрипт для создания темы. Есть скрипт создания поста, но мне нужно создавать темы автоматически. Спасибо!
Да, для определения пользовательского скрипта требуется плагин.
Что-то вроде этого в plugin.rb:
after_initialize do
if defined?(DiscourseAutomation)
add_automation_scriptable("my_custom_script") do
# ...
end
end
end
Я попробовал, но получил сообщение:
Не удалось найти скрипт lb-script для автоматизации testing, убедитесь, что установлен соответствующий плагин
Возможно, я ошибаюсь, но должен ли я создать отдельный файл, или можно всё разместить в файле plugin.rb?
Покажите мне код, иначе мне будет трудно помочь вам ![]()
Я только что попробовал с пост-скриптом, скопированным из папки скриптов плагина 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
Мне не хватает контекста о том, что вы здесь делаете. Вот полный пример во внешнем плагине: discourse-assign/plugin.rb at main · discourse/discourse-assign · GitHub
Я не понимаю, в чём разница по сравнению с тем, что я сделал. Очевидно, я использовал скрипт в разделе Post только для проверки работоспособности. Но когда я пытаюсь создать автоматизацию, система не находит ни одного триггера и сообщает, что не может найти скрипт. Однако код должен позволять выбирать между двумя триггерами для создания поста, верно? Я, наверное, ошибаюсь, но я действительно не понимаю.
Вы уверены, что ваш новый плагин включен?
Да, конечно. Это полностью включено.
Попробуйте использовать assign локально и посмотрите, удастся ли вам отобразить элемент в списке. Если нет, значит, дело в чём-то другом.
Могу подтвердить, что Random Assign работает даже в том случае, если плагин Assign не включен. Вероятно, я что-то упускаю и не хочу тратить ваше время.
Я понял, в чём была проблема.
Я заменил lb-script на lb_script, и теперь всё работает. Очевидно, что использовать символ дефиса (-) нельзя.