Как удалить тысячи личных сообщений?

Что ж, думаю, это сделает то, что вы просили. Это удалит любые личные сообщения, которые не были созданы системным пользователем или discobot. При этом будут удалены и любые другие личные сообщения, включая сообщения от администраторов.

Это не протестировано. Я не утверждаю, что это хорошая идея. Я не обещаю, что это не приведёт к чему-то плохому.

cd /var/discourse
discourse backup
./launcher enter app
rails s
Topic.where(archetype: 'private_message').where("user_id > 0").destroy_all
exit
discourse enable_restore
discourse restore

Если ничего плохого не произойдёт, вы можете пропустить последние два шага. Если что-то пойдёт не так, вам нужно будет скопировать и вставить последнюю резервную копию, выведенную командой discourse restore, чтобы восстановить данные из резервной копии.