One note, this is to make it easier to clean the SPAM here.
Part of the issue is that this database is too denormalized. The insert for a new thread hits 3 tables, and I'm not confident it's always in the same order. The text and the subject/user info are separated, so it's hard to use a trigger in the db side to catch what might be SPAM and have it work. I'm not even sure that the inserts are transactionally consistent together.
This really needs an app change to make a logical decision before even hitting the db. However in addition to adding some logic around the insert, there might need to be changes to get more data ahead of time about the user. Someone has been reluctant to try and they don't let me see the repo 🙁