TL0 사용자의 게시 제한이 전체가 아닌 하루 단위로 적용되기를 희망합니다. 왜냐하면 모든 사용자에게 영향을 주지 않으면서 일부 사용자의 게시량을 제한할 수 있는 다른 방법을 찾을 수 없기 때문입니다. 하지만 TL0 사용자가 구체적으로 어떻게 제한되는지 명확한 그림을 그리기 어렵습니다.
결국 몇 가지 도구를 조합해 우회 솔루션을 만들었습니다 (커스텀 플러그인을 직접 만들 만큼 코딩 실력이 좋은 편은 아니거든요!). 테스트는 잘 됐고 실제로도 작동합니다.
restricted-users라는 새 그룹을 생성했습니다.
모더레이터 그룹으로만 접근이 제한된 커스텀 마법사(wizard) 양식을 생성했습니다.
모더레이터만 볼 수 있는 restricted-users-admin이라는 새 카테고리를 생성하고, 작성기(composer)를 해당 커스텀 마법사 양식으로 교체했습니다.
사용자의 게시 권한을 제한해야 할 경우, 모더레이터가 커스텀 마법사 양식을 작성합니다. 양식에는 어떤 사용자를 그룹에 추가할지와 언제 제거할지를 묻는 항목이 있습니다.
양식을 제출하면 restricted-users-admin 카테고리에 새 주제가 생성됩니다.
이 카테고리에 새 주제가 생성될 때마다 웹훅(webhook)을 전송하도록 설정했습니다.
웹훅을 수신하면 먼저 해당 사용자가 이미 그룹에 있는지 확인합니다. 이미 있다면 해당 정보를 게시글 답변으로 작성합니다. 사용자가 그룹에 없다면 그룹에 추가한 뒤, 지정된 종료 날짜/시간까지 대기하다가 그룹에서 제거합니다.
restricted-users 그룹에 속한 사용자의 모든 게시글에 대해 웹훅을 생성했습니다.
제한된 사용자가 게시글을 작성하고 웹훅이 전송되면, API 호출을 통해 해당 사용자가 그날 작성한 게시글 수를 확인합니다 (24시간 주기가 아닌 같은 날짜 기준으로 했습니다. 날짜를 매칭하는 것이 더 쉬울 것 같아서요). 여기서는 개인 메시지(PM)는 제외했습니다.
사용자가 작성할 수 있는 게시글 중倒数 두 번째 글이라면, API가 사용자에게 개인 메시지를 보내 한도에 임박했으며 오늘 한 개의 게시글만 더 작성할 수 있음을 알립니다. 개념 증명(PoC)으로 한도를 5개로 설정했으므로, 사용자가 4번째 글을 작성한 후에 개인 메시지가 전송됩니다.
마지막 게시글이라면, API가 사용자를 24시간 동안 침묵(silence) 처리합니다.
사용자가 restricted-users 그룹에서 제거되면, API가 restricted-users-admin 카테고리의 원래 주제에 게시글 답변을 전송합니다.
이것은 우리에게는 극히 드문 특수한 경우입니다. 많은 소통과 모더레이터의 노력 끝에 사용자와 함께 해결책을 모색한 끝에 취하는 '마지막 수단 직전’의 조치입니다. 이 기능에 대한 트래픽이 부담스러울 정도로 많을 것으로는 예상하지 않습니다. 대상은 아주 아주 적은 수의 사용자들뿐입니다. 우리는 회원제 조직이고, Discourse 포럼은 다양한 리소스를 저장하는 역할을 하므로 회원들이 접근할 수 있어야 합니다. 따라서 정지(suspension) 대신 다른 해결책을 마련해야 합니다.