我遇到了同样的故障,但我走了另一条路。我的导入器不直接使用日历 API 端点,而是构建 [event] BBCode 并将其发布到 Discourse,让插件像管理员手动创建事件一样解析它。这样,我就避免了依赖 include_expired 等瞬时查询参数,并获得了更稳定的契约——纯文本帖子和 BBCode 不太可能在未经通知的情况下更改。
[event start="2025-09-29 09:00" end="2025-10-29 10:00" location="Office B1"]
讨论 Discourse RESTful API 的会议
[/event]
权衡是我的工作量增加了:我不得不编写一个格式化程序,将 ICS 数据转换为正确转义的 [event] 标签,处理全天事件或定时事件等。但实际上,这种方法在升级过程中一直更具弹性。它并没有消除对上游弃用通知的需求(我仍然希望 API 在选项被移除时能快速失败或至少发出警告),但它降低了我的脚本无声中断的风险。