摘要

对话回答「flowerss-bot 的原理」:将其概括为 带持久化的定时 RSS 抓取器,在 RSS/AtomTelegram Bot API 之间做桥接;用户通过 Bot 指令管理订阅,进程按周期拉取 feed、解析条目、与库中已推送记录比对去重,再组装消息推送。可选 Telegraph 将正文转为应用内可读页面。

技术栈(与仓库核对)

  • 语言:Go。
  • 订阅解析github.com/mmcdole/gofeed
  • Telegramgopkg.in/telebot.v3(对话中写「tucnak/telebot」为旧名/泛指,以仓库为准)。
  • 存储:GORM + SQLite(默认)或 MySQL(go.mod 中驱动齐全)。
  • Telegraphgithub.com/indes/telegraph-go(Instant View / 长文排版类能力依赖此链)。

工作流程(对话归纳)

  1. 订阅:用户发 /sub <feed URL> 等;Bot 校验 URL,将订阅与用户/会话关联写入库。
  2. 抓取:内部定时任务轮询库中订阅;可用协程并发请求多个 feed。
  3. 去重:解析后与已存 GUID、链接或更新时间对比,识别新条目再进入推送队列。
  4. 推送:组装标题、摘要、链接等,经 Bot API(如 sendMessage)发到用户/群/频道;若启用 Telegraph,则对正文做抓取与清洗后走 Telegraph API,再把预览链一并发出。
  5. 其它:关键词过滤(推送前匹配标题/正文);OPML 导入导出(解析 XML 批量订阅)。

仓库结构(对话列举,以当前仓库为准)

  • internal/model:数据模型与持久化。
  • internal/bot:Telegram 指令与交互。
  • internal/fetch:RSS 拉取与内容处理相关逻辑。

另见