# 실시간 채팅 전투를 막기 위해 슬로우 모드 사용 범위 확장

**URL:** https://meta.discourse.org/t/extend-usage-of-slow-mode-to-fight-battle-of-live-chat/202204
**Category:** Feature
**Tags:** slow-mode
**Created:** [8월 31, 2021, 8:33오전 UTC](https://meta.discourse.org/t/extend-usage-of-slow-mode-to-fight-battle-of-live-chat/202204 "2021-08-31T08:33:16Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![Ty1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ty1/32/232689_2.png) [@Ty1](https://meta.discourse.org/u/Ty1)
#### Post date: [8월 31, 2021, 8:33오전 UTC](https://meta.discourse.org/t/extend-usage-of-slow-mode-to-fight-battle-of-live-chat/202204/1 "2021-08-31T08:33:16Z")

</div>

저희는 슬로우 모드 기능을 매우 좋아하며, 이 기능의 활용 범위를 확장하고 싶습니다. 모든 카테고리에 대해 영구적인 슬로우 모드를 적용하는 것이 목표입니다. 단순히 새 주제에만 적용하는 것이 아니라, 기존에 존재하는 모든 주제에도 적용되기를 원합니다.

먼저, 왜 이렇게 하고 싶은지 설명드리겠습니다.

현재 저희 커뮤니티에는 약 10,000명의 회원과 13,000개의 주제가 있습니다. 일부 사용자는 의미 있고 깊이 있는 토론을 발전시키는 데 익숙하지 않습니다. 대신, 그들은 실시간 채팅을 하거나 포럼 전체를 메시지 앱처럼 취급합니다. 이는 저희가 보고 싶은 모습이 아닙니다. 저희 커뮤니티에는 의미 있는 토론이 필요하다고 생각합니다. 그러나 대부분의 경우, "정지"나 “말하기 금지” 처분은 너무 가혹하고 적용하기 어렵습니다. 바로 이 부분이 슬로우 모드 기능이 빛을 발하는 지점입니다. 이 기능 덕분에 실시간 채팅이 과열되는 것을 늦추고 방지할 수 있습니다. 저희가 이해한 바로는, 슬로우 모드를 활성화하는 방법은 두 가지입니다. (틀린 부분이 있다면 알려주세요.)

- 특정 주제에 대해 수동으로 활성화하고,
- 카테고리 수준에서 설정합니다: 특정 카테고리에 대해 이 설정을 활성화하면, 해당 카테고리 아래 생성되는 모든 **새** 주제에 슬로우 모드가 자동으로 활성화됩니다.

현재 저희 운영진(모더레이터)은 “과열된 주제”(실시간 채팅으로 변질된 주제)를 발견하면 수동으로 슬로우 모드를 적용하고 있습니다. 문제는 모든 기존 주제가 슬로우 모드에 있지 않기 때문에, 슬로우 모드가 아닌 다른 주제들이 위로 올라와서 다시 실시간 채팅으로 변질된다는 점입니다. 이로 인해 일부 사용자들이 불만을 제기합니다. “왜 어떤 주제는 계속 위로 올라오는데 슬로우 모드(벌)는 적용되지 않나요?”, “이 주제는 4시간 남았는데 다른 주제는 1시간밖에 안 남았나요?” 등입니다. 더 나아가, 슬로우 모드가 얼마나 “임의적으로” 적용되는지에 대한 음모론까지 돌고 있으며, 저희 팀은 이에 대해 많은 비판을 받고 있습니다(물론 저희도 이에 익숙하긴 합니다). 게다가 저희의 자원은 매우 제한적인데, 사용자 수와 주제 수는 계속 증가하고 있기 때문에 이 상황은 더욱 악화될 것입니다.

저희는 다음과 같은 접근 방식을 통해 이 문제를 해결하거나, 적어도 상황을 더 나은 방향으로 개선하고자 합니다:

1. **모든 공개 주제에 슬로우 모드 적용:** 실시간 채팅을 방지하고 의미 있는 토론을 장려하기 위함입니다.
2. **모든 사용자와 사이트의 기본 홈 페이지를 “새로움”(또는 "최근"이 아닌 다른 항목)으로 설정:** 실제 콘텐츠(단순한 "ㅋㅋ"나 “안녕” 같은 스레드가 아닌)를 찾고자 하는 사용자들이 사이트를 방문할 때 더 나은 경험을 할 수 있도록 하기 위함입니다. 처음에는 사이트의 기본 홈 페이지를 "최근"으로 설정했습니다. 그러나 이것이 사용자들이 기본적으로 "과열된 주제"를 보게 만들었습니다. 또한, 이러한 "과열된 주제"가 너무 많기 때문에, 신규 사용자나 사이트 방문 시간이 제한적인 사용자는 보이는 모든 주제가 의미 없는 채팅이라고 생각하거나, 여기에서 실시간 채팅을 하는 것이 정상/허용된다고 오해할 수 있습니다. 안타깝게도 이는 저희 커뮤니티에 심각한 피해를 주고 있습니다. 기본 홈 페이지를 "새로움"으로 변경하면 이 문제가 완화될 수 있기를 바랍니다. 적어도 사용자들이 기본적으로 실시간 채팅 스레드 이외의 것을 먼저 볼 수 있게 될 것입니다.

1번에 대해, 저희는 다음과 같이 계획하고 있습니다:

**1a**. 모든 카테고리에 슬로우 모드를 활성화합니다 – 이는 모든 새 주제를 처리할 것입니다.

**1b**. 모든 기존 공개 주제에 대해 슬로우 모드가 활성화되도록 일괄 업데이트합니다. → 이 단계는 어떻게 수행해야 하는지 모르는 부분입니다. UI를 통해 주제를 일괄 업데이트할 때 슬로우 모드 옵션을 찾을 수 없었습니다. 제한된 자원과 기존 주제의 양을 고려할 때, UI를 통해 주제 하나하나를 수동으로 업데이트하는 것은 선택지가 아닙니다. 이 일을 성사시키기 위해 무엇을 할 수 있는지 아시는 분이 있을까요? 예를 들어, 데이터베이스에 연결하여 일부 필드를 변경하는 것 같은 방법이 있을까요? 공개 주제에 대해서만 변경을 적용하길 원합니다. 메시지에는 영향을 주지 않아야 합니다. 또는, 일괄 업데이트 UI에 “슬로우 모드” 옵션을 추가하는 것이 타당한가요?

2번에 대해, 저희는 다음과 같이 진행할 것입니다:

**2a**. 사이트 설정에서 "새로움"을 상단 메뉴의 첫 번째 항목으로 설정합니다.

**2b**. 모든 사용자의 기본 홈 페이지를 일괄 업데이트합니다. → 이 또한 어떻게 달성해야 할지 조언이 필요한 단계입니다.

1b와 2b에 대해 도움이 필요하며, 더 나은 해결책에 대한 의견도 듣고 싶습니다. 어떤 도움이라도 감사하겠습니다.

---

<div class="post-metadata">

### Author: ![Simon\_Manning](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon_manning/32/198596_2.png) [@Simon\_Manning](https://meta.discourse.org/u/Simon_Manning)
#### Post date: [8월 31, 2021, 2:34오후 UTC](https://meta.discourse.org/t/extend-usage-of-slow-mode-to-fight-battle-of-live-chat/202204/2 "2021-08-31T14:34:37Z")

</div>

카테고리 설정에서 다음과 같은 스타일의 항목을 보고 싶습니다:

 ![image](https://global.discourse-cdn.com/meta/original/3X/1/e/1e879efaf1d9a0e22dcf4436d78f53808b940036.png)

* * *

**1b** 항목은 rails 콘솔을 통해 토픽을 수정함으로써 해결할 수 있다고 생각합니다. 제가 예상한 대로 작동하는지 확인하기 위해 로컬에서 테스트해 보았지만, 라이브 Discourse에서 이 작업을 시도하기 전에 **스테이징 환경에서 반드시 테스트해 보시기를 강력히 권고** 합니다. 또는 Discourse 팀에서 이것이 좋은 해결책인지 확인해 줄 때까지 기다리시는 것이 좋습니다. (확인해 주더라도 여전히 스테이징에서 테스트하는 것이 좋습니다.)

표준 설치로 Linux 서버를 사용 중이라고 가정하고, SSH를 통해 서버 셸에 접속한 후 다음 명령을 사용하세요:

```plaintext
cd /var/discourse
./launcher enter app
rails c

```

그 후 생성된 rails 콘솔에서 다음을 실행하세요:

```plaintext
Topic.where.not(archetype: "private_message").update_all(slow_mode_seconds: 120)

```

`120`은 다음 게시글이 허용되기까지의 초 단위이므로, 원하는 값으로 교체하세요. 특정 카테고리에는 이 설정을 적용하지 않으려면 `.where.not(category_id: n)`을 체이닝하여 사용할 수 있습니다. 예를 들어 3번과 4번 카테고리에 슬로우 모드를 적용하지 않으려면 위 코드를 다음과 같이 수정합니다:

```plaintext
Topic.where.not(archetype: "private_message").where.not(category_id: 3).where.not(category_id: 4).update_all(slow_mode_seconds: 120)

```

카테고리 ID는 브라우저에서 해당 카테고리를 방문하여 주소창에서 "c/staff/ **3**"과 같은 형식의 문자열을 찾아 확인하면 됩니다.

---

<div class="post-metadata">

### Author: ![Ty1](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ty1/32/232689_2.png) [@Ty1](https://meta.discourse.org/u/Ty1)
#### Post date: [9월 22, 2021, 7:15오후 UTC](https://meta.discourse.org/t/extend-usage-of-slow-mode-to-fight-battle-of-live-chat/202204/3 "2021-09-22T19:15:44Z")

</div>

@Simon_Manning 님, 감사합니다! 답변 덕분에 **2b** 에 대해 유사한 해결책을 찾을 수 있었습니다.

**2b** 에 대해 우리가 취할 조치입니다(관심 있는 분들을 위해). Rails 콘솔에 진입한 후:

```plaintext
UserOption.update_all(homepage_id: 4)

```

테스트 사이트에서 homepage\_id 4는 "New"를 의미합니다. 사이트 설정에 따라 일관성이 있을지 확실하지는 않지만, 확인하는 것은 쉽습니다. 기본 홈 페이지가 "New"로 설정된 사용자를 한 명 두고, 데이터베이스에 접속하여 해당 사용자의 homepage\_id를 확인하면 됩니다. 데이터베이스에 접속하고 데이터를 확인하는 방법에 대한 자세한 안내는 [여기](https://meta.discourse.org/t/how-to-access-the-discourse-database/41845/14?u=ty1)에서 찾을 수 있습니다.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [1월 17, 2022, 8:28오후 UTC](https://meta.discourse.org/t/extend-usage-of-slow-mode-to-fight-battle-of-live-chat/202204/4 "2022-01-17T20:28:27Z")

</div>

> [@Ty1](#):
>
> 현재, 우리 모더레이터들은 “핫 토픽”(실시간 채팅이 된 토픽)을 발견하고 수동으로 슬로우 모드로 설정합니다. 문제는 모든 기존 토픽이 슬로우 모드가 아니기 때문에, 슬로우 모드가 아닌 다른 토픽들이 위로 올라와서 다시 실시간 채팅이 된다는 점입니다.

이 과정을 자동화하여 토픽이 자동으로 슬로우 모드로 _강제_ 전환되도록 하는 것에 대해 개방적입니다. 하지만 다음 사항에 대해 결정하는 데 도움을 주십시오:

- 시스템은 _언제_ 슬로우 모드로 전환해야 하는지 어떻게 알 수 있나요?
- 시스템은 슬로우 모드로 전환할지 결정하기 위해 어떤 데이터 포인트를 확인하나요?
