之前我所有的 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 上打开在步骤一中建好的机器人,会看到输入框前会有一个三天横线的蓝色按钮,点击它就能看到各种指令。
- /sub: 添加订阅
- /unsub: 退订订阅
- /unsub_all: 退订所有订阅
- /list: 列出订阅列表
- /set: 自定义订阅设置
- /set_default: 自定义默认设置
- /import: 从 OPML 导入订阅
- /export: 导出订阅到 OPML
- /activate_subs: 启用订阅
- /deactivate_subs: 停用订阅
- /version: 查看 bot 版本
- /help: 查看帮助
- /lang: 选择语言
- /test: 测试 (仅 bot 管理员)
- /set_option: 更改 bot 配置 (仅 bot 管理员)
- /user_info: 查看/修改用户信息 (仅 bot 管理员)
订阅 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
,期待您的关注。