Why aren't warnings easily accessible like suspensions are?

My sock puppet has not been on its best behavior so I’ve had to warn it and suspend it:

Screen Shot 2020-09-14 at 3.15.21 PM

Clicking on the “1 suspensions” link takes me to the staff actions logs where its suspension is listed, which is pretty handy if it starts acting up again. Moderators can decide how long to suspend the next time.

But there’s no link behind “1 warnings”. Poking around the logs, I don’t see a report of official warnings for the user. I can see my warning if I look in the user’s inbox, but I believe other moderators do not see my warning there. They can see the actual message if they have a link, but other than sharing the link out of band, I don’t believe there is a way for them to find it. Worse, I don’t think there’s a way for other moderators to know who warned the user or when.

Perhaps I’m missing something, but this seems to make warnings less useful for a team of moderators and could lead to mistakes. For instance, if I warn a user on their first day about spamming their website and they go on to become a model citizen, the warning count sticks around without context. Then if that user has a bad day sometime down the road, another moderator might assume they’ve been warned about that behavior and issue a suspension when they would typically just warn. Or the reverse: the other moderator might warn about the same behavior again rather than issuing a deserved suspension.

In summary, why display the number of warnings if there’s no context for that number? Or, alternatively, how might moderators have access to a user’s history of warnings so they can make informed decisions in the future?


Warnings are sent as a PM, and moderators can’t see PM conversations they weren’t a member of.

It’s probably better to know a warning was issued even if it can’t be seen. An administrator can always provide more detail if it’s appropriate to do so.

1 Like

Are you sure that’s true of PMs that have been marked as “official warnings”? I used the impersonate feature to verify that another moderator can see the PM if they visit the URL. Also, the code seems to allow moderators to see those PMs as if they were flagged.

1 Like

Can you provide a specific URL where you think clicking/tapping that should take you? :thinking:

1 Like

Well, that’s sorta why I asked the question in the first place. :wink: I put together the world’s lamest mockup of a script to generate a page that would be useful for my moderators. Doesn’t need much. Just a list of warnings with:

  1. Date of warning.
  2. Name of the moderator who issued the warning.
  3. A link to the warning itself.

(My script uses last_poster_username to identify the sending moderator, but that’s the wrong thing to do. If the user replies, it’ll show their name instead. I didn’t want to spend a lot of time figuring out how to extract the sender’s user name via the API, though.)

Speaking with my moderators, this is a feature we are going to need to have before we switch off of Vanilla. For more of my reasoning, see a blog post I recently wrote. Ideally, since this seems generally useful, it would be a built-in feature, but if not, we’ll need to build it ourselves.

Total aside: I love the thought and care put into moderator tools on Discourse. It’s a joy to discover and I can’t wait to use them in production.


Your method is probably better than what I ended up doing on my forums. I’d have to lookup the specifics as it’s been awhile since I implemented it, but basically what I ended up doing was using a combination of a webhook and a script that would use the API to post a topic in the default Staff category when a warning is issued with the information.

Having a page on Discourse itself that shows that information would be helpful. Alternately, I’d be happy if checking the official warning box automatically added the moderators group to the PM thread as currently Discourse (understandably) does not let you use the official warning option if you include additional recipients.


I think we’d need to add a new messages filter, and point the link to https://meta.discourse.org/u/riking/messages/warnings.


Sure, if you want to take that, go for it.


We implemented a temporary solution using the Data Explorer plugin. I wrote a query that returns a list of warning for a particular user:

-- [params]
-- string :username
select topic_id
from user_warnings
join users u on user_id = u.id
where username = :username

Then I made query available to moderators. That way they can go to /g/moderators/reports, pick the report for official warnings and enter a usename. It’s not quite as nice as being able to click the “1 warnings” text on a profile, but it does give moderators access to the information they need.


I ran into this myself, seeing a warning and racking my brains what happened.

For personal reference include the full (not @'d) username in the warning (even though that looks a bit stiff) - and if you have your mods go to Add/Remove & add @moderators (or whatever the title is for your forum) to the warning immediately after it’s been sent, that places the warning in the public mods inbox.

Then mods just have to search for the person’s username, “Warning” (assuming that word is included as a protocol) and anyone who needs to, can see it immediately.

Seeing the message, immediately followed by (your username) invited @moderators 1 min ago might also have the effect of making the message seem more serious, and more authoritative.


Got a draft PR up for this, need to add tests.


Made sure that moderators can access the list, and they get this special warning when they do:

It’s also available at /my/messages/warnings for regular users, but the UI will never generate a link there.


This was finally just merged :slight_smile: Sorry for the delay, folks!


This topic was automatically closed after 5 days. New replies are no longer allowed.