Skip to content

Telegram RSSbot 搭建简要说明

Published: at 08:00

之前我所有的 RSS 订阅都在 Inoreader,每次打开后都是几十几百条,让我不胜其烦。原本应该简约而不简单的 RSS 阅读体验不应该是这样。

于是今天抽空把我在 Telegram 上的 RSSbot 给更新了,将很多新闻类的订阅都转移到了 RSSbot 上。Inoreader 中保留的是高质量的,或者需要我花时间读的内容;RSSbot 上就只用接收那些即时性的新闻、天气预警、地震速报之类不需要我花太多时间的消息。

在更新之前,RSSBot 收到的消息是这样的:

更新后,RSSbot 收到的消息就变成了这样:

我可以直接在 Telegram 上看消息的正文了,不像之前还得点击链接,跳转到浏览器去看。太方便了,对不对?

搭建一个 RSSbot 非常简单,只需要简单的几步。

Table of contents

Open Table of contents

准备工作

在搭建 RSSbot 之前,首先需要准备一个 VPS。

然后安装好 Docker 和 Docker compose。

如果不知道该怎样安装,可以看《用 RSShub 打造专属信息流》中「用 Docker 部署 RSShub」的部分,有安装 Docker 的详细介绍。

接下来,有三个步骤来搭建机器人的后端,使用的是 RSS-to-Telegram-Bot 这个开源项目。

步骤一:新建机器人

打开 Telegram,搜索 @BotFather,然后发送 /newbot

收到 Alright, a new bot. How are we going to call it? Please choose a name for your bot. 这条信息后,回复一个名称,作为机器人的名字,如 RSS2TG。

接下来,又会收到一条信息,Good. Now let's choose a username for your bot. It must end in bot. Like this, for example: TetrisBot or tetris_bot. 需要给机器人再添加一个以 bot 结尾的名字,如 RSS2TG_bot。

之后,就会收到一条很长的信息,其中会有一段红色的文字写的是Use this token to access the HTTP API: 红色字符串 Keep your token secure and store it safely, it can be used by anyone to control your bot.,是机器人的 API,把这个 API 记下来,步骤三会用到。

另外,这个 API 需要妥善保管,因为任何人只要有了这个 API,就能控制这个机器人。

步骤二:获取基本信息

在 Telegram 搜索 @userinfobot,然后点击 start,获取用户 ID 后记下来,步骤三会用到。

接着在浏览器上,通过 Get telegraph API acess token 获取至少五个 token (每刷新一次网页会获得一个 token),将获取到的 token 都记录下来,下一步会用到。

步骤三:搭建机器人后端

首先,通过 SSH 登录到 VPS。

然后输入 mkdir rsstt,创建一个 rsstt 的目录。

接着输入 cd rsstt 打开 rsstt 目录。

再然后输入 wget <https://raw.githubusercontent.com/Rongronggg9/RSS-to-Telegram-Bot/dev/docker-compose.yml.sample> -O docker-compose.yml,获取 Docker compose 模板。

接下来输入 vi docker-compose.yml,进入到 Docker compose 的模板开始编辑环境变量。您会看到以下信息:

# Please read <https://github.com/Rongronggg9/RSS-to-Telegram-Bot/blob/master/docs/deployment-guide.md> for more details.
version: "3.6"

services:
  main:
    image: rongronggg9/rss-to-telegram:dev # stable image: rongronggg9/rss-to-telegram
    container_name: rsstt # need to be unique
    restart: unless-stopped
    volumes:
      - ./config:/app/config
    environment:
      - TOKEN=1234567890:A1BCd2EF3gH45IJK6lMN7oPqr8ST9UvWX0Yz0 # get it from @BotFather
      - MANAGER=1234567890 # get it from @userinfobot

      # ↓------ To disable sending via Telegraph, comment out this area ------↓ #
      # Get Telegraph API access tokens: <https://api.telegra.ph/createAccount?short_name=RSStT&author_name=Generated%20by%20RSStT&author_url=https%3A%2F%2Fgithub.com%2FRongronggg9%2FRSS-to-Telegram-Bot>
      # Refresh the page every time you get a new token.
      # If you have a lot of subscriptions, make sure to get at least 5 tokens.
      #                            ↓ Replace with your access tokens ↓
      - TELEGRAPH_TOKEN=
        1a23b456c78de90f1a23b456c78de90f1a23b456c78de90f1a23b456c78d
        1a23b456c78de90f1a23b456c78de90f1a23b456c78de90f1a23b456c78d
        1a23b456c78de90f1a23b456c78de90f1a23b456c78de90f1a23b456c78d
        1a23b456c78de90f1a23b456c78de90f1a23b456c78de90f1a23b456c78d
        1a23b456c78de90f1a23b456c78de90f1a23b456c78de90f1a23b456c78d
# ↑------ To disable sending via Telegraph, comment out this area ------↑ #

# Please read <https://github.com/Rongronggg9/RSS-to-Telegram-Bot/blob/master/docs/advanced-settings.md> for more details.
# ↓------ Advanced settings ------↓ #
#- MULTIUSER=0  # default: 1
#- CRON_SECOND=30  # 0-59, default: 0
#- DATABASE_URL=postgres://username:password@host:port/db_name  # default: sqlite://path/to/config/db.sqlite3
#- API_ID=1025907  # get it from <https://core.telegram.org/api/obtaining_api_id>
#- API_HASH=452b0359b988148995f22ff0f4229750  # get it from <https://core.telegram.org/api/obtaining_api_id>
#- IMG_RELAY_SERVER=https://wsrv.nl/?url=  # default: <https://rsstt-img-relay.rongrong.workers.dev/>
#- IMAGES_WESERV_NL=https://t0.nl/  # default: <https://wsrv.nl/>
#- USER_AGENT=Mozilla/5.0 (Android 12; Mobile; rv:68.0) Gecko/68.0 Firefox/96.0  # default: RSStT/2.2 RSS Reader
#- IPV6_PRIOR=1  # default: 0
#- T_PROXY=socks5://172.17.0.1:1080  # Proxy used to connect to the Telegram API
#- R_PROXY=socks5://172.17.0.1:1080  # Proxy used to fetch feeds
#- PROXY_BYPASS_PRIVATE=1  # default: 0
#- PROXY_BYPASS_DOMAINS=example.com;example.net
#- HTTP_TIMEOUT=30  # default: 12
#- HTTP_CONCURRENCY=0  # default: 1024
#- HTTP_CONCURRENCY_PER_HOST=0  # default: 16
#- TABLE_TO_IMAGE=1  # default: 0
#- TRAFFIC_SAVING=1  # default: 0
#- LAZY_MEDIA_VALIDATION=1  # default: 0
#- MANAGER_PRIVILEGED=1  # default: 0
#- NO_UVLOOP=1  # default: 0
#- MULTIPROCESSING=1  # default: 0
#- DEBUG=1  # debug logging, default: 0
# ↑------ Advanced settings ------↑ #

输入 i 进入到编辑器的编辑模式,找到 TOKEN=1234567890:A1BCd2EF3gH45IJK6lMN7oPqr8ST9UvWX0Yz0 # get it from @BotFather,删除1234567890:A1BCd2EF3gH45IJK6lMN7oPqr8ST9UvWX0Yz0 后,将步骤一中获取的机器人 API 粘贴进去。

再找到 MANAGER=1234567890 # get it from @userinfobot,删除 1234567890 后,将步骤二中获取到的用户 ID 粘贴进去。

再将 TELEGRAPH_TOKEN 后面的五条 token 都删除,将步骤二中获取的 token 一条条粘贴进去。

- TELEGRAPH_TOKEN=
  1a23b456c78de90f1a23b456c78de90f1a23b456c78de90f1a23b456c78d #替换成步骤二中获取的 token
  1a23b456c78de90f1a23b456c78de90f1a23b456c78de90f1a23b456c78d #替换成步骤二中获取的 token
  1a23b456c78de90f1a23b456c78de90f1a23b456c78de90f1a23b456c78d #替换成步骤二中获取的 token
  1a23b456c78de90f1a23b456c78de90f1a23b456c78de90f1a23b456c78d #替换成步骤二中获取的 token
  1a23b456c78de90f1a23b456c78de90f1a23b456c78de90f1a23b456c78d #替换成步骤二中获取的 token

接下来,按 esc 键,退出编辑模式,输入 :wq 保存修改。

最后输入 docker-compose up -d,机器人的后端就搭建好了。

在机器人上订阅 RSS

此时,在 Telegram 上打开在步骤一中建好的机器人,会看到输入框前会有一个三天横线的蓝色按钮,点击它就能看到各种指令。

订阅 RSS 时,就是向机器人发送 /sub <RSS 地址> 的指令。

当所有的订阅源输入完成后,再发送 /activate_subs 来启动所有订阅。

之后,当订阅的 RSS 更新后,就可以在机器人上收到了。

拓展:搭建 MTPROTO

MTPROTO 是 Telegram 的代理服务,在设置-数据和存储-使用代理中可以找到。

使用了 MTPROTO 之后,不需要开代理软件(如 shadowroeket,clash)也可以正常使用 Telegram,也就是 Telegram 可以 24 小时在线了。

部署的过程非常简单,在 VPS 上直接使用 Sunpma 大佬的绿色一键脚本部署就行。

首先,输入 mkdir /home/mtproxy && cd /home/mtproxy 新建一个目录。

然后输入 curl -s -o mtproxy.sh <https://raw.githubusercontent.com/sunpma/mtp/master/mtproxy.sh> && chmod +x mtproxy.sh && bash mtproxy.sh,根据提示安装脚本。

接着输入 bash mtproxy.sh start 运行脚本。

把返回的信息在 Telegram 上设置好就可以了。


我在 Telegram 上新建了一个与博客同名的频道 槿呈Goidea,期待您的关注。