Un truc qui marcherait bien, je pense, serait comme le "slow start" dans TCP je pense. Tu asssocies à chaque utilisateur un compteur. Au début se compteur démarre à 1. Pour chaque message flaggé, tu augmentes ce compteur n'ont pas de façon linéaire mais exponentielle, typiquement en le multipliant par 2. Si bien que tu auras un compteur qui va monter très rapidement dès que tu auras un mec qui va flooder/spammer ou bien dire des propos violents.
Ensuite ce compteur il faut que tu puisses le baisser. Tu décides par exemple d'un certain interval de temps, ou tu vas descendre le compteur. Tu peux le diviser par deux je pense que c'est pas mal.
Et donc au final, tu as juste à fixer un seuil à partir du quel le mec se fait bannir. Au niveau du temps, il faut que tu trouves une fonction qui soit inversement proportionnel au temps qu'il a mis à se faire ban. Un truc du genre $\frac{1}{x}$ mais en un peu plus échelonné.
Et tu remets le compteur à 0 à chaque ban.