사용자 카테고리 알림 수준을 일괄 업데이트하는 방법은?

이전에는 모든 사용자에게 특정 카테고리를 기본적으로 음소거(mute) 처리해 두었습니다. 그런데 사용자 중 누구도 카테고리 목록을 확인해서 해당 카테고리를 음소거 해제하는 경우가 없었습니다. 기본 설정을 제거한 후, 신규 사용자들은 해당 카테고리에 게시물을 올리기 시작했지만, 기존 사용자(약 절반 정도)는 여전히 카테고리를 음소거 해제하는 방법을 몰랐습니다. 어떻게 해야 하는지 설명하기 위해 고정 게시물을 사용했지만, 효과적이지 않았습니다.

그래서 해당 사용자들의 알림 수준을 업데이트할 수 있는 방법이 있을까요?

관리자 대시보드에서 default categories ... 설정 그룹을 확인해 보세요. default categories muted 사이트 설정에서 카테고리를 제거한 경우, 다른 default categories ... 사이트 설정을 사용하여 변경 사항을 소급 적용할 수 있습니다.

여기서 사용할 수 있는 사이트 설정으로는 default categories watching, default categories tracking, default categories regular가 있으며, 이들은 소급 적용됩니다.

이 설정을 사용하여 카테고리를 음소거 해제하려고 했지만, 8명의 사용자만 업데이트된다고 표시되었습니다. 하지만 데이터 탐색기를 통해 확인해 보면, 이전에 제가 설정한 내용으로 인해 이 카테고리가 음소거된 사용자는 대략 1,100명입니다.

또한, 이 카테고리는 특정 그룹에 대해 기본적으로 음소거되어 있었습니다. 그룹별 기본 카테고리 설정과 전역 설정 사이에 차이가 있나요?

공통된 뉴스 카테고리가 있는 경우, 하나의 해결책은 카테고리에 구독하는 방법을 설명하는 게시물을 작성하고, 각 카테고리에 대한 설명과 함께 링크를 제공하는 것입니다.

저도 이 방법을 시도해 보았지만, 예상대로 작동하지 않습니다… 콘솔에서 일괄 업데이트가 가능한가요?

그 부분은 확신할 수 없습니다. 명령줄에서는 가능할 수도 있겠다는 생각이 드네요. 다만, 가능하다면 어떻게 해야 하는지는 잘 모르겠습니다.

모든 사용자나 특정 그룹에 속한 사용자를 대상으로 일괄 변경을 할 수 있는 기능이 있으면 좋겠습니다.

제 이해로는, 그룹 설정은 사용자가 그룹에 가입할 때만 적용되는 것 같습니다. 따라서 이 설정을 조정하는 한 가지 방법은 변경하려는 설정으로 그룹을 만들고, 설정을 변경할 사람들을 해당 그룹에 추가하는 것입니다.

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 파이썬 모듈을 감싼 얇은 래퍼(wrapper)이며, Discourse 사이트의 /u/whateverusernameyouarechanging.json에 HTTP PUT 요청을 보내는 역할만 합니다. 페이로드(payload)에는 변경하려는 카테고리만 포함하면 됩니다. (변경하지 않으려는 항목은 생략할 수 있습니다.)

숫자 형식의 카테고리 ID가 필요하다는 점에 유의하세요. 이름은 작동하지 않습니다. 또한 기존 설정을 병합하거나 유지하려면 먼저 해당 사용자의 설정을 읽어 와야 합니다.