撤销官方警告

: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 个赞

您能否分享一下登录控制台所需的步骤?我尝试过搜索,但每份指南似乎都假设用户已经知道如何操作。

假设您已按照标准安装指南操作,您将 SSH 登录到服务器并运行:

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 控制台?