Расширить использование режима медленного чата для борьбы за «живой чат»

Мы очень любим функцию «медленного режима» и хотели бы расширить её применение. Мы хотим установить постоянный медленный режим для всех категорий — не только для новых тем, но и для всех существующих.

Сначала давайте объясним, зачем нам это нужно.

На данный момент у нас около 10 000 участников и 13 000 тем. Некоторые пользователи не привыкли вести содержательные и вдумчивые обсуждения. Вместо этого они ведут живой чат и воспринимают весь форум как мессенджер. Это не то, что мы хотим видеть — мы стремимся к содержательным обсуждениям в нашем сообществе. Однако в большинстве случаев такие меры, как «временная блокировка» или «заглушение», слишком суровы и неприменимы. Именно здесь на помощь приходит функция медленного режима. Благодаря ей мы можем замедлить темп и предотвратить превращение тем в живой чат. Насколько мы понимаем (поправьте нас, если мы ошибаемся), есть два способа активировать медленный режим:

  • вручную активировать его для конкретной темы, и
  • на уровне категории: при включении настройки для определённой категории медленный режим автоматически активируется для всех НОВЫХ тем в этой категории.

В настоящее время наши модераторы выявляют «горячие темы» (темы, превратившиеся в живой чат) и вручную включают для них медленный режим. Проблема в том, что поскольку не все существующие темы находятся в медленном режиме, другие темы, не имеющие такой настройки, поднимаются вверх и снова превращаются в живой чат. В результате некоторые пользователи начинают жаловаться: «почему некоторые темы постоянно поднимаются вверх, но не получают медленный режим (наказание)», «почему в одной теме медленный режим действует ещё 4 часа, а в другой — только 1 час» и т. д. Более того, появляются конспирологические теории, и нашу команду часто критикуют (хотя мы к этому уже привыкли) из-за того, как «случайно» активируется медленный режим. И ситуация будет только ухудшаться, поскольку у нас очень ограниченные ресурсы, а количество пользователей и тем продолжает расти.

Мы хотим решить эту проблему, или хотя бы улучшить ситуацию, следуя следующим подходам:

  1. Включить медленный режим для ВСЕХ публичных тем: это поможет предотвратить превращение тем в живой чат и поощрит содержательные обсуждения.
  2. Установить страницу по умолчанию «Новые» (или любую другую, кроме «Последние») для всех пользователей и всего сайта: это позволит пользователям, которые ищут действительно интересный контент (а не просто темы с «ха-ха» и «привет»), получить лучший опыт при посещении нашего сайта. Изначально мы установили «Последние» в качестве главной страницы по умолчанию. Мы заметили, что это приводит к тому, что пользователи по умолчанию видят «горячие темы». Кроме того, поскольку у нас слишком много таких «горячих тем», новые пользователи или те, кто имеет ограниченное время для посещения нашего сайта, могут подумать, что все видимые ими темы — это бессмысленные болтовни, или что живой чат здесь — это нормально и допустимо. К сожалению, это серьёзно вредит нашему сообществу. Мы надеемся, что изменение страницы по умолчанию на «Новые» поможет смягчить проблему. По крайней мере, пользователи по умолчанию будут видеть что-то другое, кроме тем живого чата.

Для пункта 1 мы планируем:

1a. Активировать медленный режим для всех категорий — это обеспечит применение режима ко всем новым темам.

1b. Пакетно обновить все существующие публичные темы, чтобы активировать для них медленный режим. → Это шаг, который мы не знаем, как выполнить. Мы не нашли опцию медленного режима при пакетном обновлении тем через интерфейс. Ручное обновление каждой темы по отдельности через интерфейс невозможно из-за наших ограниченных ресурсов и большого количества существующих тем. Знает ли кто-нибудь, что можно сделать для реализации этого? Например, подключиться к базе данных и изменить некоторые поля? Мы хотим изменить только публичные темы. Личные сообщения не должны быть затронуты. Или имеет ли смысл добавить опцию «медленный режим» в интерфейс пакетного обновления?

Для пункта 2 мы сделаем следующее:

2a. В настройках сайта сделать «Новые» первым пунктом верхнего меню.

2b. Пакетно обновить страницу по умолчанию для всех пользователей. → это также шаг, по которому нам нужна консультация о том, как его реализовать.

Нам нужна помощь в выполнении пунктов 1b и 2b, а также любые предложения по более эффективным решениям. Любая информация будет полезна. Заранее благодарим!

6 лайков

Я думаю, что в настройках категорий было бы полезно увидеть что-то вроде этого:


Я считаю, что задачу 1b можно решить, изменив темы через консоль Rails. Я протестировал это локально, чтобы убедиться, что всё работает так, как я ожидаю, но всё же настоятельно рекомендую протестировать это в тестовой среде (staging), прежде чем применять на вашем рабочем сервере Discourse, или дождаться подтверждения от команды Discourse, что это хорошее решение. (И даже в этом случае, вероятно, стоит провести тестирование в staging.)

Предполагая, что вы используете Linux-сервер со стандартной установкой, подключитесь по SSH или любым другим способом к оболочке сервера и выполните следующие команды:

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

Затем в появившейся консоли Rails:

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

120 — это количество секунд перед тем, как будет разрешена следующая публикация, поэтому при необходимости замените это значение. Если вы также хотите избежать установки этого параметра для определённых категорий, вы можете добавить к запросу условие .where.not(category_id: n). Например, чтобы не включать режим медленного обсуждения для категорий 3 и 4, измените запрос следующим образом:

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”.

3 лайка

Спасибо вам, @Simon_Manning! Ваш ответ помог и направил нас на поиск похожего решения для 2b.

Вот что мы собираемся сделать для 2b (на случай, если кому-то это интересно). После входа в консоль Rails:

UserOption.update_all(homepage_id: 4)

homepage_id 4 соответствует «Новое» на нашем тестовом сайте. Я не уверен, что это значение всегда одинаково из-за различных настроек сайтов, но это легко проверить. Просто создайте одного пользователя с домашней страницей по умолчанию, установленной на «Новое», и проверьте в базе данных значение homepage_id для этого пользователя. Дружелюбные инструкции о том, как получить доступ к базе данных и проверить данные, можно найти здесь.

2 лайка

Я готов автоматизировать этот процесс, чтобы темы автоматически принудительно переводились в режим медленного обсуждения. Но, пожалуйста, помогите мне принять решение:

  • как система определяет, когда переходить в режим медленного обсуждения?
  • какие данные система анализирует, чтобы принять решение о переходе в режим медленного обсуждения?
1 лайк