Как изменить уровни уведомлений для всех пользователей по теме?

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

Я хочу установить для всех пользователей по теме значение «Отключить» или «Обычный» вместо «Слежение» или «Отслеживание».

Цель — снизить активность по большой теме в сложной ситуации модерации.

Меню администратора
Настройки
Предпочтения пользователя


Подождите, извините, вы имеете в виду всего одну тему. Да, представьте, возможно, понадобятся Rails.

А что насчет включения режима «Медленный режим»? Не помогло бы это снизить активность? :thinking:

Ситуация сложная, и я не хочу визуального уведомления, которое спровоцирует публичное обсуждение этого вопроса, способное занять часы времени модерации. (Я уже полностью перегружен.) Идеальный исход — чтобы люди просто не напоминали себе о существовании этой темы.

Я бы снял тему с публикации. Тогда она будет скрыта с форума, и, вероятно, большинство пользователей больше не увидят её там. Однако если у них есть ссылка на эту тему (например, потому что они получили уведомление), они всё ещё смогут открыть её.

Хотя, стоит отметить: если они смотрят тему, они всё равно будут получать уведомления, даже если она установлена как «Скрытая».

Кажется, теперь можно использовать эндпоинт /t/ID_ТЕМЫ/notifications, чтобы установить уровень уведомлений для конкретного пользователя в определённой теме, если это кажется более удобным вариантом, чем консоль Rails?

Дополнительные детали
  • Пользователь API должен быть администратором (то есть иметь глобальные права), чтобы иметь возможность изменять уровень уведомлений другого пользователя.
  • URL эндпоинта: siteurl/t/<topic_id>/notifications
  • Тип запроса: POST
  • Параметры:
    • username или external_id целевого пользователя. Если пусто, будет изменён уровень уведомлений самого администратора для этой темы.
    • notification_level: целочисленное значение, соответствующее уровню
      • muted: 0,
      • regular: 1,
      • normal: 1, # алиас для regular
      • tracking: 2,
      • watching: 3,

Но для консоли Rails, как я понимаю, это будет выглядеть так: (не забудьте сделать резервную копию на всякий случай перед внесением изменений в Rails :warning:)

TopicUser.where(topic_id: TOPIC_ID).update(notification_level: 1)

(1 — normal, 0 — mute)

Это изменит уровни для самой темы, но могут существовать уровни для категории и тегов, которые всё ещё могут влиять на то, кто получит уведомление о новой активности.

И небольшой запрос через Data Explorer для проверки уровней уведомлений пользователей в теме, если это будет полезно:

SELECT 
    topic_id,
    user_id,
    notification_level
FROM topic_users
WHERE topic_id = TOPIC_ID

Спасибо за подробный ответ. Завтра я попробую API.