Totally open for suggestion on how to fix this - right now I'm using regex and a list of "profane" words, so nothing too fancy. But I'm interested in looking into solutions for this problem.
This approach is at least 20 years old. Others have worked on it. Try investigating one or more of https://github.com/topics/profanity .