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

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

Так возможно ли обновить уровень уведомлений для них?

Вам стоит обратить внимание на группу настроек default categories ... в вашей панели администратора. Если вы удалили категории из настройки сайта default categories muted, вы можете попробовать использовать любую из других настроек сайта default categories ..., чтобы применить изменения ретроспективно.

Здесь можно использовать настройки сайта default categories watching, default categories tracking и default categories regular, они работают ретроспективно.

Я попытался использовать эту настройку, чтобы отключить мут категории, но система сообщает, что будет обновлено только 8 пользователей. Однако, как я проверил через Data Explorer, примерно 1100 пользователей имеют эту категорию отключенной (из-за моих предыдущих настроек).

Также эта категория раньше была отключена по умолчанию для группы. Есть ли разница между настройкой категории по умолчанию для группы и глобальной настройкой?

Одно из решений — если существует общая категория новостей. Создайте пост с объяснением, как подписаться на категорию, и предоставьте ссылки на каждую категорию с описанием.

Я тоже пробовал это сделать, но это не работает, как ожидалось… Возможно ли выполнить массовое обновление в консоли?

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

Думаю, должна быть возможность массово изменять данные для всех пользователей или только для пользователей определённой группы.

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

Это также можно сделать через API.

У вас есть пример того, как это сделать через API?

Да, именно так.


    category_notifications = {'muted_category_ids': [54],
                              'regular_category_ids': [],
                              'tracked_category_ids': [],
                              'watched_category_ids': [],
                              'watched_first_post_category_ids': [61],
                             }
	
    api(config, f"u/{username}.json", method='put',
          json=category_notifications)

… где api() — это тонкая обертка вокруг модуля Requests для Python, которая просто выполняет HTTP PUT запрос к /u/whateverusernameyouarechanging.json на вашем сайте Discourse, а полезная нагрузка содержит только те категории, которые нужно изменить. (Вы можете пропустить те, которые менять не хотите.)

Обратите внимание, что вам нужны числовые ID категорий — имена не подойдут. И, конечно же, если вы хотите объединить изменения или сохранить текущие настройки, вам сначала нужно получить данные о пользователе.