Процедурно отключить уведомления для группы

TL;DR: В феврале 2024 года Google изменит допустимое соотношение спама до 0,3%. Я хочу сократить объём исходящей почты, чтобы избежать блокировки (3 жалобы на спам на 1000 писем приведут к попаданию домена в чёрный список). Мне нужно программно изменить настройку «Следить за первым постом» для определённых групп.

Наша некоммерческая организация — это физическое лицо, использующее Discourse для вовлечения членов и сообщества. В частности, мы автоматически подписываем новых членов на обязательные уведомления о деятельности нашей организации (повестки собраний, голосования и критически важные обновления. Мы имеем на это законное право и обязаны отправлять такие письма).

  • Сейчас: Наш портал для участников добавляет новых пользователей Discourse через API и назначает их в группу «current_members», пока они находятся в хорошем статусе.
  • Группа «current_members» настроена на категории: Следить за первым постом: Официальные объявления.

Пока всё хорошо.

  • Когда они выходят или их статус истекает, мы (через API) перемещаем их в группу «former_members» для изменения различных прав доступа. Когда членство истекает или человек выходит и т.д., мы оставляем их аккаунт активным с уровнем прав «публичный не-участник», чтобы они могли продолжать взаимодействовать с сообществом.
  • Цель: Убрать выбор «Следить за первым постом» при добавлении в группу.
Скриншоты


Настройки группы не назначают слежение.


Участник группы всё ещё имеет слежение.

  • Перемещение в группу, похоже, работает только как добавление. Есть ли способ указать «удалить» отслеживание при добавлении в группу?
  • Есть ли способ удалить настройки отслеживания, которые были добавлены через членство в группе? (например, при выходе из группы отменить всё, что было добавлено).

В качестве альтернативы мы могли бы использовать тегирование @, но это слишком легко случайно злоупотребить. Управление уровнем уведомлений через группы было бы самым простым решением.

Думаю, именно это и нужно сделать. Удаляйте отслеживаемые категории, когда они покидают группу. Вы можете провести реверс-инжиниринг API Discourse, чтобы найти вызов API для изменения их отслеживаемых категорий.

Проблема в том, что у меня сотни пользователей в такой же ситуации. Настройка на будущее — это плюс, но наличие явного пустого списка null было бы отличным дополнением.

Тогда решением может быть команда Rails, которая удалит подписки пользователей из истекшей группы. Не помню, предложит ли изменение настройки группы применить её ко всем участникам. Можете попробовать это (сделать так, чтобы истекшая группа подписывалась на категорию, а затем удалить эту подписку?)

Я попробую. Я знаю, что добавление слежения обеспечит рекурсию. Я не смог найти способ удалить слежение, которого не было. Вы правы, возможно, это вопрос добавления и удаления.

В этом и вся магия. Добавление в группу, у которой нет флага, не означает автоматического удаления флага — это было бы кошмаром в поддержке… но ретроактивное применение флага и последующее его удаление из группы работает как достойное решение, если делать это примерно раз в год.

#feature-request — возможность явно указать «обнуление» категории или тега при добавлении в группу была бы отличной идеей.