Как остановить/заблокировать отправку уведомлений и писем конкретному внешнему пользователю
Не хочу отключать уведомления для этого пользователя
Поможет ли в данном случае изменение их настроек электронной почты на «никогда»?
В ваших настройках да, это отключит все уведомления по электронной почте.
Я делаю так, когда создаю тестового пользователя с поддельным адресом электронной почты. Я отключаю все триггеры отправки писем в настройках пользователя.
Теперь, если вы хотите, чтобы он не получал, например, письма о новых комментариях или новых темах в категории или теме, вам нужно перейти в настройки и убрать все категории, теги и темы из списка «Слежение». Слежение отправляет уведомления, а «Следить за первым постом» отправит письмо только для первого поста темы.
Да, действительно, это приведёт к тому, что он перестанет получать любые уведомления по электронной почте. Я не осознавал, что вы хотите предотвратить только определённые типы.
Я не думаю, что это покроет конкретные темы, установленные на уровень «Отслеживание» на уровне самой темы. В таких случаях пользователю потребуется изменить уровень уведомлений непосредственно внутри темы (либо администратор может войти в аккаунт от имени пользователя и сделать это за него. Если таких тем много, существуют обходные пути, если они вам понадобятся).
Да, могу представить, что это может стать настоящим кошмаром. Однако в настройках можно управлять тегами и категориями.
Хотя я надеюсь, что участники не будут следить за отдельными темами. Даже с функцией имперсонации это, думаю, было бы довольно трудоемким занятием. Но, возможно, есть командные опции для массового отписывания от тем?
Возможный вариант через интерфейс — временно повысить их уровень доверия до TL4, а затем действовать от их имени. Это позволит использовать массовые действия для изменения уровней уведомлений по темам сразу для всех. (После этого можно отменить повышение уровня доверия.)
Также может помочь использование отфильтрованного списка только для тех, кто установил статус «Слежение»: {YourSite}/latest?state=watching
Если вы имитируете пользователя, то отфильтрованный список должен работать:
В противном случае, думаю, вам потребуется запрос через Data Explorer. Возможно, что-то вроде этого:
-- [params]
-- user_id :user
SELECT tu.topic_id
FROM topic_users tu
JOIN topics t ON t.id = tu.topic_id
WHERE tu.user_id = :user
AND tu.notification_level = 3
AND t.archetype <> 'private_message'
AND t.deleted_at IS NULL

