신뢰 수준 3인 대상 그룹의 사용자를 포함하는 새 그룹을 만드는 것이 제가 생각할 수 있는 유일한 방법입니다. Discourse에는 카테고리 보안 권한과 함께 사용할 수 있는 AND 규칙이 없습니다. 하나 이상의 그룹 구성원을 _제외_하는 카테고리 규칙을 만드는 방법에 대한 유사한 질문이 몇 번이나 제기된 바 있습니다.
사이트에서 Data Explorer 플러그인이 사용 가능하다면, 신뢰 수준 3인 대상 그룹의 모든 사용자를 목록으로 반환하는 Data Explorer 쿼리를 사용할 수 있습니다. 사용자가 매우 많지 않다면, 쿼리에서 반환된 사용자 이름을 그룹의 사용자 추가(Add Users) 양식에 직접 복사/붙여넣기할 수 있어야 합니다. Discourse는 이미 해당 그룹에 존재하는 사용자 이름을 이 양식에 추가하는 것을 처리하는 것 같으므로, 쿼리를 주기적으로 실행하면 반환된 사용자 이름을 계속 복사하여 그룹의 사용자 추가 양식에 붙여넣기만 하면 됩니다. 참고로, 이 양식에 붙여넣을 수 있는 최대 사용자 이름 수는 정확히 모르겠습니다. 80명의 사용자로 테스트해 보았는데 문제는 없었습니다. 또한, 완전히 동일한 사용자 목록을 사용자 추가 양식에 붙여넣으려고 하면 Discourse가 오류를 반환하는 것 같습니다. 하지만 이 오류는 무시할 수 있습니다.
제가 이 방법으로 테스트해 본 쿼리는 다음과 같습니다. 쿼리를 실행하기 전에 그룹 이름(예: ‘year_2’)을 제공해야 합니다.
--[params]
-- string :group_name
SELECT u.username
FROM group_users gu
JOIN groups g ON g.id = gu.group_id
JOIN users u ON u.id = gu.user_id
WHERE g.name = :group_name
AND u.trust_level = 3
API를 통해 Data Explorer 쿼리를 실행하고, API 요청의 결과를 사용하여 그룹을 업데이트함으로써 위의 과정을 자동화할 수도 있습니다. 이에 대한 자세한 내용은 여기에서 확인할 수 있습니다: Run Data Explorer queries with the Discourse API. 그런 다음 API를 통해 그룹 구성원을 업데이트해야 합니다.
Data Explorer 쿼리의 결과에 대해 일부 유형의 작업을 직접 수행할 수 있다면 흥미로울 것입니다. 예를 들어, 사용자 이름 목록을 반환하는 쿼리의 경우, 복사/붙여넣기 단계를 거치지 않고 모든 사용자를 그룹에 추가할 수 있습니다.