Здравствуйте,
Я импортировал 20-летний форум в Discourse.
В нём много неиспользуемых или спам-аккаунтов и спам-сообщений.
Я хочу провести очистку.
Я установил уровень доверия для всех пользователей на 0.
Я попытался узнать, сколько пользователей никогда не публиковали сообщений, используя этот запрос для Data Explorer:
SELECT COUNT (DISTINCT user_id) from posts
Он показал 28530.
Я попытался узнать общее количество пользователей:
SELECT COUNT (DISTINCT id) FROM users
Он показал 180000 (статистика vBulletin действительно указывала на 180000 аккаунтов).
Я запустил Sidekiq-задачу CleanUpInactiveUsers.
Было удалено лишь несколько сотен пользователей. Я проверил один из таких неиспользуемых профилей и не обнаружил активности: ни постов, ни тем… Однако Discobot отправил им сообщение после импорта всех пользователей из vBulletin. Это было 5 дней назад.
Поэтому в настройках Discourse я установил параметр clean up inactive users after days на 1.
Я снова запустил Sidekiq-задачу CleanUpInactiveUsers.
Я потерял около 1000 пользователей.
У меня всё ещё 178000 пользователей, и я знаю, что большинство из них — пустые и неиспользуемые профили без сообщений.
Есть ли идеи, почему они не удаляются задачей CleanUpInactiveUsers?
Кроме того, поскольку существует много спам-аккаунтов и сообщений, можно ли запустить обнаружение спама для существующих пользователей и сообщений и также очистить всё это?
Честно говоря, я не знаю. Я не знаю, что использует Discourse для обнаружения и предотвращения спама.
Кроме того, я считаю, что значительная часть моих спамеров публиковала сообщения на профилях публичных пользователей — функции, которой нет в Discourse.
Эти сообщения были импортированы в Discourse как «обычные» темы без категории и заголовка, что облегчает их идентификацию:
Я не хочу удалять все эти сообщения без заголовков, так как большинство из них безвредны и могут содержать информацию, которую некоторые пользователи хотели бы восстановить.
Что я хочу сделать, так это удалить пользователей, которые опубликовали только темы без заголовков, и одновременно удалить их темы.
Можно ли это сделать относительно легко с помощью команд Rails?