无法删除分类的默认主题

您好,我正在尝试使用 API 端点删除主题。

我可以删除“普通”主题,但遇到了一个问题,即默认主题无法删除。那个叫做“关于 ________ 类别”的主题。

{{baseUrl}}/t/{{id}}.json

这是我的问题:

  • 如何使用 API 删除此主题?
  • 如何使用 API 识别该主题以便跳过它?

示例

    url = base_url + "/c/" + slug + "/22.json"
    response = requests.request("GET", url, headers=headers, data=payload)

    for topic in response.json()["topic_list"]["topics"]:
        # 删除每个主题

        url =  base_url + "/t/topic_id.json".replace("topic_id", str(topic["id"])  )
        response = requests.request("DELETE", url, headers=headers, data=payload)

您可以将类别描述主题设置为“未列出”。我为我的所有类别都这样设置。我怀疑您可以通过 API 识别未列出的主题?

3 个赞

您能分享一下为什么要删除这些主题吗?这些是特殊主题,不能也不会被删除。

如果您的目标是删除所有主题,然后删除类别,您可以删除类别而不删除“关于”主题。

当人们想以某种方式摆脱“关于”主题时,按照 @Lilly 的建议取消列出它们是可行的方法。

我认为这些帖子没有任何独特的属性。它们被识别为来自 category 表的特殊主题,通过 topic_id 列。

您可以使用 /c/{id}/show.json 端点获取它们:https://docs.discourse.org/#tag/Categories/operation/getCategory
查找 topic_url 键。

例如:

https://meta.discourse.org/c/7/show.json

"topic_url": "/t/about-the-dev-category/1026"

如果这能引起您的兴趣,这里有一些更技术性的信息。

删除保护 :shield: 在这里:discourse/lib/guardian/topic_guardian.rb at 7ecaf6295daf8759aa98d00e7035c4dc0f853303 · discourse/discourse · GitHub

这里定义了使用的方法:discourse/app/models/topic.rb at 7ecaf6295daf8759aa98d00e7035c4dc0f853303 · discourse/discourse · GitHub

2 个赞