7f96708093 · 2026-05-30 21:00:36 +08:00
1 Commit
2026-05-30 21:00:36 +08:00
2026-05-30 21:00:36 +08:00
2026-05-30 21:00:36 +08:00
2026-05-30 21:00:36 +08:00
2026-05-30 21:00:36 +08:00
2026-05-30 21:00:36 +08:00
2026-05-30 21:00:36 +08:00
2026-05-30 21:00:36 +08:00

rssbot

一个使用 Go 编写的 RSS -> Telegram Channel 推送机器人。程序会定时拉取 RSS/Atom feed记录已处理的条目只把新的 item 推送到指定的 Telegram channel。项目可直接使用 Docker / Docker Compose 部署。

功能

  • 支持多个 RSS 任务并发轮询
  • 首次启动只建立基线,不回灌历史消息
  • 本地持久化已发送条目,容器重启后不会重复推送
  • 自定义消息模板,支持 {title}{link}{description}{published} 占位符

配置

复制 config-example.yamlconfig.yaml,填入你的机器人和频道信息。

bot-token: "123456:telegram-bot-token"
state-file: "data/state.json"

jobs:
  - rss-url: "https://example.com/rss"
    channel-id: "@your_channel"
    post-format: "New article: {title}\n{link}"
    check-interval: 300

配置说明:

  • bot-token: Telegram Bot Token
  • state-file: 已发送消息状态文件,默认 data/state.json
  • jobs[].rss-url: RSS/Atom 地址
  • jobs[].channel-id: 频道 ID 或 @channel_name
  • jobs[].post-format: 推送内容模板
  • jobs[].check-interval: 轮询间隔,单位秒

Telegram 准备

  1. 使用 @BotFather 创建机器人并拿到 token
  2. 将机器人加入目标 channel
  3. 给机器人授予 Post Messages 权限
  4. 在配置里填入 channel 的用户名或数值 ID

本地运行

go mod tidy
go run .

默认读取当前目录下的 config.yaml。也可以通过环境变量指定:

RSSBOT_CONFIG=./config.yaml go run .

Docker 部署

Docker Compose

cp config-example.yaml config.yaml
docker compose up -d --build

纯 Docker

docker build -t rssbot .
docker run -d \
  --name rssbot \
  --restart unless-stopped \
  -e RSSBOT_CONFIG=/app/config.yaml \
  -v $(pwd)/config.yaml:/app/config.yaml:ro \
  -v $(pwd)/data:/app/data \
  rssbot

说明

  • 程序首次读取某个 feed 时会把当前已有条目标记为已见,不会一次性推送历史内容
  • 状态文件建议挂载到宿主机目录或 Docker volume
  • 如果某个 feed 拉取失败,程序会在下一轮继续重试
Description
No description provided
Readme 31 KiB
Languages
Go 96.5%
Dockerfile 3.5%