You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python创建Discourse主题并立即回复该新主题?

解决Discourse主题回复的API操作问题

核心结论

  • 回复主题必须用POST请求,PUT仅用于编辑已有帖子,二者不要混淆。
  • topic_slug是主题的URL友好别名,API请求中非必填项,仅用topic_id即可准确定位主题。它的作用是让主题URL更易读(比如标题为"每日产品更新",slug可能是"mei-ri-chan-pin-geng-xin"),但不影响API调用的有效性。

Python示例代码

需提前准备Discourse论坛域名、API密钥和对应用户名,以下是创建主题+跟进回复的完整代码:

import requests

# 基础配置
DISCOURSE_DOMAIN = "你的论坛域名,例如https://your-forum.com"
API_KEY = "你的API密钥"
API_USERNAME = "你的API用户名"

def create_topic(title, content, category_id=1):
    """创建新主题"""
    url = f"{DISCOURSE_DOMAIN}/posts.json"
    payload = {
        "title": title,
        "raw": content,
        "category": category_id
    }
    headers = {
        "Api-Key": API_KEY,
        "Api-Username": API_USERNAME
    }
    response = requests.post(url, json=payload, headers=headers)
    response.raise_for_status()
    return response.json()

def reply_to_topic(topic_id, content):
    """回复指定ID的主题"""
    url = f"{DISCOURSE_DOMAIN}/posts.json"
    payload = {
        "topic_id": topic_id,
        "raw": content
    }
    headers = {
        "Api-Key": API_KEY,
        "Api-Username": API_USERNAME
    }
    response = requests.post(url, json=payload, headers=headers)
    response.raise_for_status()
    return response.json()

# 实际使用示例
if __name__ == "__main__":
    # 1. 创建主主题(第一部分内容)
    main_topic = create_topic(
        title="2024年XX月XX日产品更新",
        content="这是第一部分内容,控制在150000字符以内..."
    )
    topic_id = main_topic["topic_id"]
    print(f"主题创建成功,ID: {topic_id}")

    # 2. 发送拆分后的第二部分内容作为回复
    reply_result = reply_to_topic(
        topic_id=topic_id,
        content="这是拆分后的第二部分内容,继续补充产品更新细节..."
    )
    print(f"回复发送成功,回复ID: {reply_result['id']}")

关键细节补充

  • 请求方式区分:Discourse API中,所有创建新内容的操作(主题、回复)都用POST;PUT仅用于修改已存在的帖子(比如编辑主题正文或回复内容)。
  • 字符拆分逻辑:可以先判断内容长度,超过150000字符时,截取前N字符作为主题内容,剩余部分循环调用reply_to_topic接口分开发送即可。

内容的提问来源于stack exchange,提问作者Sev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 23:05:26