На случай, если кому-то ещё будет интересно это сделать, вот краткое описание того, что я сделал:
- Сначала вам нужно включить Badge SQL через CLI вашего сервера Discourse:
./launcher enter app
rails c
SiteSetting.enable_badge_sql = true
- Далее найдите ID темы, с которой участники должны взаимодействовать, чтобы получить значок. В моём случае ID темы — 117.
![]()
- Создайте свой пользовательский значок:
- Администрирование → Значки → Новый
- Дайте значку любое название (например, «Читатель правил B/S/T»)
- Выберите тип значка, иконку и добавьте описание
- Если вы выполнили шаг 1, вы увидите поле запроса, где можно ввести SQL-запрос. Вставьте этот запрос (замените p.topic_id = 117 на ваш ID темы):
-
SELECT DISTINCT ON (pa.user_id) pa.user_id, pa.post_id, pa.created_at granted_at FROM post_actions pa JOIN posts p ON pa.post_id = p.id AND p.post_number = 1 WHERE pa.post_action_type_id = 2 AND p.topic_id = 117 AND (:backfill OR pa.post_id IN (:post_ids))
-
- Убедитесь, что отмечены опции Запускать запрос на отзыв ежедневно и Запрос нацелен на сообщения.
- Триггер должен быть установлен на Когда пользователь действует над сообщением.
- Теперь создайте автоматизацию:
- Сначала создайте новую группу, в которую будут добавляться участники. Я назвал её bst_rules_agreed, и настройки сделаны так, что членство могут видеть только владельцы группы и модераторы. Никаких эффектов уровня доверия не требуется.
- Далее перейдите в Плагины → Автоматизация
- Добавьте новую автоматизацию
- Выберите Членство в группе пользователей через значок
- Триггер: Повторяющийся
- Периодичность: у меня установлено каждый час. Выберите подходящий для вас вариант.
- Выберите дату начала
- Параметры скрипта:
- Значок: выберите созданный вами значок
- Группа: выберите созданную вами группу
- Добавьте новую автоматизацию
Вот и всё. Теперь у вас должна быть система, которая гарантирует, что участники согласились с правилами категории, прежде чем смогут публиковать сообщения в ней.
Следующий шаг, который я планирую исследовать, — это возможность скрыть все темы, кроме правил, от всех, кто не входит в эту группу. Но пока этой базовой системы достаточно.