Consequences of warnings, Silencing, and Suspensions

It looks like I missed something in this post: Let's talk Moderation - #2 by simon. Previous suspensions actually do affect tl3 promotions. It’s odd how the requirements listed here are calculated twice in the promotion process:

First in the tl3 promotion job, then again from the call to review_tl2. That method calculates the tl3 requirements again, this time taking penalty counts for silencing and suspensions into account: https://github.com/discourse/discourse/blob/main/app/models/trust_level3_requirements.rb#L15.

This is kind of significant, because suspensions are often used as a way of temporarily revoking access to a site in a way that is not intended to penalize users, for example, users are suspended when a paid membership on an external application has expired.

Edit: it looks like if a user is suspended, then unsuspended by a user who is not the system user, the penalty count is removed: https://github.com/discourse/discourse/blob/main/app/models/trust_level3_requirements.rb#L131. This means that if a user is accidentally suspended, then unsuspended by a human user, there won’t be a penalty count. It also means that for the case where users are being suspended “forever” as a means of removing access to the site when an external subscription has expired, there won’t be a penalty count when they are unsuspended, as long as the unsuspension is not performed by the system user.

This logic makes sense, but maybe it could be made explicit somewhere. It’s fairly common to suspend and unsuspend users via the API. I didn’t know until now that it was significant whether or not the action was performed by the system user.

The same logic is used for penalty counts for silencing a user.

4 Likes