Discourse Functionality Query: User blocking

The sad fact of reality is that there are people who rub other people the wrong way. Even if their behaviour fits within the rules of the forum, something about them drives another crazy, ruining the experience of reading the forum.

I’m finding myself in this situation right now—I will not be naming names since the specifics are largely beside the point—and it’s basically making me rethink even having a Discourse account since it doesn’t appear to permit any form of user blocking.

Am I incorrect in this assumption of having no user-side blocking? If so, could someone point me to instructions on how to do it. If not, could the people who make Discourse perhaps be convinced to supply such a facility?

1 Like

Sorry to hear that. I hope this can be fixed as this should be a place where all Prolog people want to be involved with.

It seems that luckily :slight_smile: you are wrong though. Go to your settings (cogwheel), find Notifications/Users where you can flag to ignore a user. That of course only affects notifications. The only action you have for content on the website is to flag it, after which one of the moderators will take action.

You can also send personal messages to one of the moderators. The policy is to be reluctant wrt blocking people. We do have a code of conduct since recently and we will act.

1 Like

Blocking notifications doesn’t remove this person from view. It just means I don’t get emails about the contributions. If I check out the site, I still see multiple threads of interest torn asunder by the (to me) irritating contributions of this person which may actually be within the rules, but … I don’t care. Things within “the rules” and the “code of conduct” that annoy me still annoy me. Without some capacity to mitigate their appearance, the only other real alternative is to ignore the forum.

And a quick exploration of the meta site for Discourse shows me that this is politically-opinionated software and that user-side blocking like I want is seen as a “misfeature”, so … I guess I have my answer.

Browsing this thread indeed seems to hint this is not possible and this a deliberate choice. I think the summary is “if it irritates one, it most likely irritates many”. I guess they are often right, but as a normal user I would love such a feature.

Note that you can also mute topics, but it seems you want to follow the topic except for the contributions from a specific user. If a single person dominates a topic that much with apparently close to off-topic messages it makes sense to block this person. All in all, I think you should flag such posts or send a private message to the moderators (@EricGT, @jamesnvc, @anniepoo or @jan).

1 Like

In support of what Jan W. is saying, please flag or private message us.

While I can’t always be here I do try to respond quickly but fairly.

Also if you private message me or use @EricGT as Jan W. just did, I get an instant notification with an audio chime on my computer, which means I don’t have to actively read all the post all the time. :smiley:

1 Like

Very very hacky, but if you’re comfortable using something like Greasemonkey to run user-scripts, you could try something like this to hide all posts from a given user:

const username = "some_user_name";
  `article.onscreen-post .first.username [data-user-card="${username}"]`
).forEach((node) => {
 const postElt = node.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement; postElt.style.display = "none" 

If that’s something people want, I can try to clean that up & package as an extension or something.

Here’s a Greasemonkey script that seems to work for me

// ==UserScript==
// @name     Discourse user blocking
// @version  1
// @grant    none
// @include  https://swi-prolog.discourse.group/*
// ==/UserScript==

const blockNames = ["USERNAMES", "HERE"];

const hideElements = () => {
  for (username of blockNames) {
      `article.onscreen-post .first.username [data-user-card="${username}"]`
    ).forEach((elt) => {
     do { elt = elt.parentElement } while (elt.tagName !== "ARTICLE")
     elt.style.display = "none" 

const MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;

const observer = new MutationObserver((mutations) => {

                 {attributes: true, childList: true, subtree: true})
1 Like

If you click on your profile pic on the top right, then on the preferences “gear” icon, then on Users in the left column, a screen appears with an option to “+ Add…” users to an ignored list or alternatively enter them in the text field labeled Muted.

I haven’t personally used either feature. Mercifully, I’ve found this group has a fairly high signal to noise ratio.


I only see the option to mute, not to ignore. And muting doesn’t help when I visit the forum and see fully a third of the threads with the target user’s icon in it.

edited to add

Unless I’m missing something staring me in the face?

See: What are Flags and how do they work?

A post with 3 flags will be automatically hidden. Users may click-to-view the post.

  • A staff member can use the “Take Action” button, which will cause this to happen immediately.
  • When a post is automatically hidden due to flags, the user receives a PM informing them their post was flagged. After 10 minutes, the user may edit their post and it will be unhidden.
    If another 3 flags occur, the post will be hidden again and editing will not unhide the post.

The down side of using flags as noted above are:

  1. There are very few active users at this site, so getting three of the same flags on a single topic may not be easy.
  2. Users are very hesitant to flag a post.
  3. The admins usually see the flag and take action before a second flag is added so users are not seeing post hidden via the three flag rule.

Note: Flags go into a queue to be handled by moderators/admins and not a specific user, so I do not get an audible alert when a flag is used, but I do see a notification icon when there are unprocessed flags in the queue.

The only way to be able do it as an individual with the way the SWI-Prolog Discourse site as currently used/configured is to be manually approved for one of the higher trust levels, e.g. TL4, moderator, admin

For more details on this and related topics:

Discourse New User Guide

Discourse Moderation Guide

One thing that was done recently to give more rights to an individual who creates a topic was to create the tags on-topic-only and discussion. See: Tags to clarify a topic as ‘discussion’ or ‘on-topic-only’

I appreciate the help you and Jan are offering, but the issue here isn’t one of rules or codes of conduct. It’s a simple personality clash. The person in question is just an irritant. Literally anything seen is annoying, and being rather prolific it means about a third of the threads here are annoying (I stress: to me).

This isn’t something it would be appropriate to flag to moderators because nothing the person does (thus far) is actually against the rules or the community standards or what-not. I just really don’t want to see their stuff. Ever.

I’m sure if users goes off the deep end the mods will intervene. You guys strike me as having level heads about things like this.

1 Like

That’s odd. My screen looks like this (I’m using firefox, sometimes these things are browser related).


The difference is do to your different trust levels

ttmrichter: TL1 - Basic
joeblog: TL3 - Regular which includes all lower privileges.

See: Understanding Discourse Trust Levels

TL1 grants: Mute other users
TL2 grants: Ignore other users

See: Ability to Ignore a User

1 Like

Mine’s Firefox too. I suspect there’s a “user level” thing involved as well.

Apparently you have to earn the right to not be annoyed. :-/

1 Like

I think the summary of all this is that Discourse-based communities are not for me. Thank you for your time.

I’m more interested in getting this to work for you (and others). In general I think Discourse works a lot better than all we had before. It still needs some leaning and possibly some tweaks. @EricGT and @jamesnvc are quite keen on getting this sorted out. Possibly we can lower the requirement or give you a higher trust level by hand?


Unfortunately it doesn’t seem there’s an option to make the mute/ignore functionality available at all trust levels; we can lower the requirements, but for now I’ve just manually given @ttmrichter trust level 3 while we determine what the requirements should be.


Hey @ttmrichter, I just came here to say that I empathise with you about the feeling of recent changes in this forum. While I like the new opportunities and activity the move to Discourse brought this forum, this might somehow be related to the fact that at first some annoying people, who were hijacking complete threads, did not make it to Discourse in time :wink: I also searched for a mean to block specific users.

but the issue here isn’t one of rules or codes of conduct

In my impression, we as a community should address it as what it is: bad behaviour, at least a bad culture of discussion, which is what we should not tolerate. Last time this ended in personal fights on SWI’s mailing list – sadly, without people standing up, disapproving it.


Although I’m not sure I would use it myself, I think it’s reasonable for a site like this to provide a way to hide posts coming from another member. I found a way (different from the way found by @joeblog) to do just that. You need to visit the offending user’s profile, and then select the button marked “Normal”. It may be that this button too is available only to users with a high trust level? Anyway, here’s a screenshot :

And I agree that three trust levels should be enough.