Eine recht einfach umzusetzende Möglichkeit wäre, im Posting-Formular ein hidden Feld mit dem Timestamp des Formularaufrufs zu setzen und vor dem Eintragen des Postings in die DB noch mal einen aktuellen Timestamp zu ermitteln. Sind der Timestamp aus dem Formular und der ermittelte Timestamp nur weniger als z.B. 3 Sekunden auseinander, kommt das Posting von einem Bot und kann direkt in die Tonne.
Zeitaufwand dafür dürfte < 5 Minuten sein und ist sehr effektiv.
Irgendsoetwas gibt es offenbar schon. Ich erlebe immer wieder, daß ich parallel an PM und Posting (z.B. bei Rätseln) oder zwei Postings arbeite und dann beim Absenden in kurzer Folge eine Fehlermeldung erhalte, daß ich den Beitrag schon gesendet hätte o.ä. - mit der schönen Folge, daß die Arbeit an dem der Fehlermeldung zugrundeliegenden Post verloren ist.
Ist, technisch gesehen, ein komplett anderer Ansatz.
Der Mechanismus, der dir da scheinbar zum Verhängnis wird, prüft vermutlich gegen deine letzte Aktivität (die wird in Forensoftware idR global in der DB bei deinem User-Datensatz vorgehalten) - das kann man natürlich machen, bringt aber genau das Problem, dass du beschrieben hast, mit sich.
Macht man eine Timestampprüfung pro Formularaufruf/-versand entkoppelt man das von der Aktivität des Users - unabhängig davon ob es sich dabei um einen eingeloggten User oder einen Gast (oder Bot) handelt.