User blocked for no apparent reason

So…the other day (well, 14 days ago, but I forgot…) we noticed that a user on Stonehearth was blocked, and we can’t figure out why! For the Discourse devs, here is the PM where we discussed the randomly blocked user:

Both moderators (myself and @8bitcrab) and admins (@sdee and @brad) on the site checked the logs, and we confirmed on Slack that no-one initiated the block manually. No posts appeared for approval or in Akismet. Can you check why the user was blocked please?


Likely a post was sent through the anti spam mechanism, I.e. Pasting in a reply instead of typing it, tripping our “boy you sure do type awful fast for a new human user” protection and rejected by a mod or admin. This would block the user indefinitely.

In other words rejecting that post by a new user will auto block the user even though it does not explicitly say that. But possibly should. It is unclear what to do with a new user who trips this detector and has their first post rejected.


@codinghorror, thanks for the quick reply. That’s what we assumed at first, but no one remembers dealing with any spam or needs approval posts around the time the user was blocked…is there anything in the logs or database that could tell you why the user was blocked? This is moving towards a feature request now, but it would be nice to have a “blocked reason” that could be automatic (post rejected as spam) or manually entered (if staff initiates the block like suspension).

Seeing as the minimum post length is (default) 20 characters
IMHO, as a poor typist, faster than 3 seconds is very fast indeed.

min first post typing time (default 3000)
Minimum amount of time in milliseconds a user must type during first post, 
if threshold is not met post will automatically enter the needs approval queue. 
Set to 0 to disable (not recommended)

auto block fast typers on first post (default checked)
Automatically block users that do not meet min_first_post_typing_time

Admin → Logs → Staff Actions does have the “block_user” action, but there are some problems.
The result set returned in the UI is truncated and although it can be “filtered” to remove “extra stuff” I know of no way to initiate filtering other than by clicking on what is available in the results the UI displays.

It is likely possible to use the API but I haven’t looked into to trying that so I don’t know.

I do know you can run a CSV Export that will contain everything eg. This one I Blocked directly from Admin Users using one of my aliases on a newly created account (BlockedGuy1)

staff_user,  action,	subject,  created_at,            details,context
AdminGuy1,   block_user, ,        2016-02-18 05:48:30 UTC, ,
1 Like

I checked and what @codinghorror described is what happened. User was automatically blocked because they were identified as a fast typer (ie. they copied and pasted something).

It was unfortunately not logged, so I fixed it :wink: