撤销官方警告

:bookmark: 本指南说明如何通过控制台删除 Discourse 中的官方警告,尤其针对自托管用户。

:person_raising_hand: 所需用户级别:系统管理员
:desktop_computer: 需要控制台访问权限

在某些情况下,需要撤销对用户的警告。此操作涉及通过控制台(有服务器访问权限的用户可访问)删除警告。如果您是托管客户,请联系 Discourse 团队 (team@discourse.org) 寻求此过程的帮助。

了解用户警告

官方警告在 Discourse 数据库中涉及两个数据项:

  1. user_warnings 表中一条将警告链接到用户和主题的记录。
  2. 相关的私信主题的 subtype 设置为 \"moderator_warning\"

要完全撤销警告,需要解决这两点:必须删除 user_warnings 记录,并且必须重置主题的 subtype

删除官方警告

要删除警告,请执行以下步骤:

  1. 访问服务器控制台:

    • 使用 SSH 连接到您的 Discourse 服务器。
    • 使用以下命令进入控制台:
      cd /var/discourse/
      ./launcher enter app
      rails console
      
  2. 删除最新警告:
    如果您要删除的警告是最近的一个,请执行:

    warning = UserWarning.last
    warning.topic.update(subtype: TopicSubtype.user_to_user)
    warning.destroy
    
  3. 查找并删除特定警告:
    如果警告不是最新的,请使用 user_id 搜索特定警告:

    UserWarning.where(user_id: the_user_id)
    

    这将返回一个与该用户相关的警告数组。找到正确的 id 后,使用以下命令删除它:

    warning = UserWarning.find(3)
    warning.topic.update(subtype: TopicSubtype.user_to_user)
    warning.destroy
    

删除警告记录并重置主题 subtype 将会从用户的警告计数中移除该警告,并将私信标记为非官方警告。私信本身不会被删除。

20 个赞

Is there any chance you could share the steps that I’d need to take to log in to the Console? I’ve tried Googling this but every guide seems to assume that the user will know how to do that.

Assuming you followed the standard installation guide, you would SSH into the server and run:

cd /var/discourse/
./launcher enter app
rails console
3 个赞

@JammyDodger。也许需要一个魔法链接将“console”和/或“rails”(或者“rails console”)链接到

2 个赞

嗯。这倒是个主意。:thinking: 不过我以前在这上面吃过亏。:slight_smile:

你说完之后,我会留意一下,看看它出现的频率。:+1:


我们目前正在查看文档,所以也许在这种情况下,在指南中添加完整的说明会比较好。

3 个赞

或者也许该部分将是“您可以在 Rails 中做的事情”,而“关于”或任何其他内容就足够了。

难道不应该更容易将这些作为处罚来处理,并有一个所有官方警告的日志,供管理员和版主随时管理吗?当版主不小心警告了一个名字相似的用户,然后不得不联系网站维护人员来解决问题时,这会非常困难。

1 个赞

我认为这里有一个#feature request:

2 个赞

是否可以通过 API 来完成此操作,而不仅仅是通过 Rails 控制台?