写在前面

经常逛论坛或者浏览各类咨询网站的人可能会使用到RSS,RSS(简易信息聚合)是一种消息来源格式规范,用以聚合经常发布更新数据的网站,例如博客文章、新闻、音频或视频的网摘。话不多说了,对于Telegram重度使用者而言,用Telegram bot来实现RSS阅读,真是太方便了。
搭建之前,先推荐两个能发现当前网页RSS的扩展插件
RSS+ : 显示当前网站所有的 RSS:可以发现 RSS 的 Tampermonkey 脚本(效果不错,很美观,只是目前发现对于RSSHub所生成的B站Feed规则有些不对)
Easy-to-RSS:貌似是友校NJU的大佬做的,与RSSHub联动,可以将RSSHub的服务网址换成自己的。

搭建教程

Github项目地址:https://github.com/iovxw/rssbot
1.申请一个Telegram bot。
前往BotFather,点击start启用机器人之父,发送命令/newbot创建你自己的机器人,然后按照BotFather的提示,给机器人取名并输入消息***bot来自定义你的bot的用户名,然后就会生成属于你自己的机器人及其链接、token。继续发送命令/mybots,选择你的机器人然后选择Edit bot,选择Edit Commands,就可以在消息框下输入并发送如下指令:

/rss       - 显示当前订阅的 RSS 列表,加 raw 参数显示链接
/sub       - 订阅一个 RSS: /sub http://example.com/feed.xml
/unsub     - 退订一个 RSS: /unsub http://example.com/feed.xml
/unsubthis - 使用此命令回复想要退订的 RSS 消息即可退订, 不支持 Channel
/export    - 导出为 OPML

2.服务器部署机器人
2.1 安装相关依赖环境

#CentOS系统
yum -y update && yum -y install gcc make openssl* pkg* libssl* screen curl

#Ubuntu、Debian系统
apt-get -y update && apt-get -y install gcc make openssl pkg-config libssl-dev screen curl

2.2 安装Rust Nightly

curl https://sh.rustup.rs -sSf | sh
source $HOME/.cargo/env

2.3 安装rssbot

wget https://github.com/iovxw/rssbot/archive/v1.4.4.tar.gz
tar xvf v1.4.4.tar.gz
cd rssbot-1.4.4
cargo build --release

2.4 在screen下运行rssbot

cd target/release
screen -S rssbot
./rssbot DATAFILE TELEGRAM-BOT-TOKEN

DATAFILE为数据库保存路径(其实就是一个json文件,不需要手动创建)。TELEGRAM-BOT-TOKEN就是你创建的机器人的token。
搭建成功后,就可以对bot发送命令,来订阅你想要的RSS了。

部署RSSHub

其实在上面一部分,我们的工作已经完成了。但对于没有Feed的网站而言,我们是不能对其生成RSS订阅的。这时,一个号称万物皆可RSS的项目RSSHub,就诞生了。
RSSHub 是一个轻量、易于扩展的 RSS 生成器, 可以给任何奇奇怪怪的内容生成 RSS 订阅源。前往文档查看详情
RSSHub的部署很简单,这里我以Centos7系统为例,使用Docker部署,你也可以查看官方部署文档
1.安装 Docker

curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker

2.拉取RSSHub镜像并启动

docker pull diygod/rsshub
docker run -d --name rsshub -p 1200:1200 diygod/rsshub

至此,只需浏览器访问 ip:1200,就可以看见RSSHub已经在运行了。
3.应用配置
配置运行在 docker 中的 RSSHub, 最便利的方法是使用 docker 环境变量
以设置缓存时间为 1 小时举例, 只需要在运行时增加参数:-e CACHE_EXPIRE=3600

$ docker run -d --name rsshub -p 1200:1200 -e CACHE_EXPIRE=3600 -e GITHUB_ACCESS_TOKEN=example diygod/rsshub

更多相关配置请查阅官方文档
另外,对于一个已启动的Docker容器,如果我们需要添加运行参数,比如订阅Pixiv的feed时,要求我们添加P站登陆账号的参数,可以使用如下命令:

docker ps       #查看当前运行Docker容器详情
docker container update -e PIXIV_USERNAME=xxxxx -e PIXIV_PASSWORD=xxxx  <containername> 

关闭RSSHub时,可使用命令:

docker stop rsshub

如果你没有自己的服务器,当然也可以使用官方提供的rsshub.app,为了减轻服务器压力,更推荐自建服务,也可以使用我的自建RSSHub服务和Telegram bot:https://rss.feiyuyu.netfeiyurss_bot (能用多久是个缘,我尽量维护

配合IFTTT的使用

IFTTT,是一个新生的网络服务平台,通过其他不同平台的条件来决定是否执行下一条命令。即对网络服务通过其他网络服务作出反应。IFTTT得名为其口号“if this then that”。
官网:https://ifttt.com/discover

在上面,我们已经讲了如何部署Telegram bot来推送RSS订阅。这部分扩展一下,我们也可以通过添加IFTTT的官方TG bot:IFTTT,搭配两个官网上的小程序(Applets):RSS Feedtelegram,实现RSS的推送。
你可以在tg端与IFTTT私聊或将IFTTT添加到channel或group,然后在IFTTT网站或app上添加你的Applets,点击+this,搜索RSS Feed,然后添加你想要的rss feed的url,确认后网页或app会回到“if this then that”,点击+that,搜索telegram,选择Target chat,以及自定义化Message text,最后save你的Applets并给其命名,当订阅更新时,tg端的IFTTT会自动给你选择的Target chat发推送。当然,得益于IFTTT的强大,我们也可以不用到RSS Feed这个Applets,你可以使用其Youtube、Twitter的Applets,设定Trigger,再推送到tg。
示例:img

截图真的丑(逃。
另外,强烈建议在https://ifttt.com/settings的设定中关闭URL shortening,因为bit.ly这个短链接服务,在国内体验不是很好。(光速逃


最后欢迎订阅我的Telegram channel:肥鱼Blog 或者RSS channel:肥鱼的Rss推送,只有我的复读,没有女装。


粉色的花瓣,美丽地缠绕在身上。依在风里。