# 05 Telegram RSS 订阅频道

垂涎木子的 Telegram K8S 订阅频道 [RSS Kubernetes](https://t.me/rss_kubernetes) 已经很久了，今天才想起来为何不自己搞一个，在木子的友情帮助下，非常轻松地将服务搭建起来了，特此安利一下。

### 部署

在木子的安利下，发现 Github 已有开源的 Telegram RSS 订阅服务工具了，中文 Telegram RSS 机器人 [RSSBot](https://github.com/iovxw/rssbot/)。同时也有 docker 移植版 [NodeRSSBot](https://github.com/fengkx/NodeRSSBot)。因为更喜欢隔离性更好的 docker 部署方式，所以这里时雨采用的是 NodeRSSBot。

整个订阅流程：

1. 准备一个 Teletram Bot，并将其拉入自建 RSS Channel
2. 获取 Telegram Bot Token
3. 部署 NodeRSSBot，配置上面获取的 Token，启动服务
4. 在 Telegram 中执行订阅命令

前两步可以参考时雨之前的文章 [Telegram 电报机器人](https://chanshiyu.com/#/post/108)，这里不再累述。直接从部署 NodeRSSBot 说起，按照官方 README 文档，先拉取 docker 镜像：

```sh
docker pull fengkx/node_rssbot
```

因为想要更方便地配置参数和启动服务，所以时雨更倾向于使用 docker-compose 启动而不是官方文档推荐的 docker 命令启动。编写一个简易的 docker-compose.yml 文件：

```yml
version: "3.1"

services:
  rssbot:
    image: fengkx/node_rssbot
    container_name: node_rssbot
    restart: always
    volumes:
      - ./data:/app/data/
    ports:
      - 3306:3306
    environment:
      RSSBOT_TOKEN: 123456:ACEYzXbuuaxxxxxxxxxxxxxxtrvmdq8
    networks:
      - my-bridge

networks:
  my-bridge:
    driver: bridge
```

其它一些参数说明：

| 设置项                  | 环境变量                  | 默认/必填                   | 描述                    |
| -------------------- | --------------------- | ----------------------- | --------------------- |
| token                | RSSBOT\_TOKEN         | require                 | telegram bot token    |
| db\_path             | RSSBOT\_DB\_PATH      | data/database.db        | 数据库文件路径               |
| lang                 | RSSBOT\_LANG          | zh-cn                   | 语言                    |
| item\_num            | RSSBOT\_ITEM\_NUM     | 10                      | 发送最新几条信息              |
| fetch\_gap           | RSSBOT\_FETCH\_GAP    | 5m                      | 抓取间隔                  |
| notify\_error\_count | NOTIFY\_ERR\_COUNT    | 5                       | 发出通知的错误次数             |
| view\_all            | RSSBOT\_VIEW\_ALL     | false                   | 是否开启                  |
| UA                   | RSSBOT\_UA            | 'Mozilla/5.0 NodeRSSBot | 请求的 user-agent        |
| cocurrency           | RSSBOT\_CONCURRENCY   | 200                     |                       |
| proxy.protocool      | PROXY\_PROTOCOL       | null                    | 代理协议 http/https/socks |
| proxy.host           | PROXY\_HOST           | null                    | 代理地址                  |
| proxy.port           | PROXY\_PORT           | null                    | 代理端口                  |
| resptimeout          | RSSBOT\_RESP\_TIMEOUT | 40(s)                   | proxy port            |

### 订阅

NodeRSSBot 支持的操作命令：

```sh
/rss       - 显示订阅列表，加 `raw`显示链接
/sub       - 订阅 RSS: /sub http://example.com/feed.xml 支持自动检测 RSS feed
/unsub     - 退订 RSS: /unsub http://example.com/feed.xml 或者通过键盘
/unsubthis - 回复一个 RSS 发来的消息退订该 RSS
/allunsub  - 退订所有源
/export    - 导出订阅到opml文件
/viewall   - 查看所有订阅和订阅人数 需要在设置中打开
/import    - 回复此消息 opml 文件导入订阅(群组)
/lang      - 更改语言
/heath      - 展示活跃订阅源的健康程度
```

首先用木子的博客做一下尝试吧！在 Telegram 中对机器人发送订阅命令 `/sub @频道名 RSSURL`：

```sh
/sub @rss_chanshiyu https://blog.k8s.li/atom.xml
```

![订阅RSS](/files/SZ4ueW7SJlS4N6WQvyOA)

![订阅大成功](/files/Tt7zu1APgd8qrVQOpyfe)

最终成果点击 [RSS 時雨](https://t.me/rss_chanshiyu)，大家一起来玩呀，今天又发现了一个有意思的小玩具，咱对 Telegram 真是越来越爱了。

Just enjoy it 😃! Bless Bless.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://chanshiyu.gitbook.io/blog/shi-yu/2020/05telegramrss-ding-yue-pin-dao.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
