Нужна помощь с огромным количеством спама

Я благодарен за все ответы, которые уже получил.

Благодаря временному отключению регистрации на один день нам удалось снова прийти в себя.

@RGJ Мне нравится ваша идея с дополнительными проверками для добавления в группу с правами на публикацию — мы обязательно рассмотрим этот вариант.

С помощью Data Explorer я смог выявить около 5 000 дополнительных бот-аккаунтов, которые до сих пор оставались незамеченными.

@MikeNolan Пока не уверен, есть ли у меня доступ к консоли Rails. Мы хостимся напрямую через Discourse, и я не участвовал в процессе покупки или онбординга, поэтому сейчас уточняю у руководства, какие у нас есть права доступа.

Думаю, что удаление пользователей можно выполнять и через API? Я вижу, что могу легко сгенерировать собственные учётные данные для API.

Что-то вроде этого:

import csv
import requests
import time

api_key = 'api_key'
api_username = 'api_username'
base_url = 'https://mydomain.com'
headers = {
    'Api-Key': api_key,
    'Api-Username': api_username
}

def delete_user(user_id):
    delete_url = f'{base_url}/admin/users/{user_id}.json'
    response = requests.delete(delete_url, headers=headers)
    
    if response.status_code == 200:
        print(f'Пользователь {user_id} успешно удалён')
    else:
        print(f'Не удалось удалить пользователя {user_id}. Код статуса: {response.status_code}, Ответ: {response.text}')

with open('user_ids_to_delete.csv', 'r') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        user_id = row[0]
        try:
            delete_user(user_id)
        except Exception as e:
            print(f'Произошла ошибка при удалении пользователя {user_id}: {e}')
        
        time.sleep(1)  # Добавляем задержку, чтобы не перегружать сервер запросами