Image by reinforced@pixiv

Telegram RSS机器人

RSS Bot With Telegram

  linkthis    2019-01-01    1365 words

信任Systemd的人,最终……

搭建一个Telegram的RSSBot,可以方便地订阅自己感兴趣的信息源,并实时接收RSS消息推送。

准备Telegram Bot

首先需要申请一个Telegram的机器人,即Bot。在Telegram中找到@BotFather,开始对话并根据提示创建一个新的Bot即可,在创建过程中生成的API TOKEN需要记住以便使用。
然后输入mybots找到刚才创建的Bot并选择,点击Edit Bot,选择Edit Commands输入RSSBot的命令:

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

安装RSSBot

使用iovxw开源的项目
选择使用预编译版本以节约时间,Linux版本为musl静态链接, 无需其他依赖。

1
2
3
apt install unzip
wget https://github.com/iovxw/rssbot/releases/download/v1.4.3/rssbot-v1.4.3-linux.zip
unzip rssbot-v1.4.3-linux.zip

解压完成之后即可运行:

1
./rssbot DATAFILE TELEGRAM-BOT-TOKEN

DATAFILE为数据库保存路径(JSON文件,无需手动创建)。TELEGRAM-BOT-TOKEN为刚才创建的机器人对应的Token

Systemd配置

为了保证RSSbot持续运行和管理,使用Systemd进行操作。
执行vi /etc/systemd/system/rssbot.service,参考以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=A RSS Bot
After=network.target
Wants=network.target

[Service]
Type=simple
WorkingDirectory=/home/rss
ExecStart=/home/rss/rssbot DATAFILE TELEGRAM-BOT-TOKEN
Restart=on-failure
RestartSec=10
User=rss

[Install]
WantedBy=multi-user.target

然后执行:

1
2
3
systemctl daemon-reload
systemctl enable rssbot
systemctl start rssbot

如果需要定时重启等操作,编写对应的Time文件即可。

Bot命令示例

个人订阅:/sub <RSS 地址>
频道订阅:/sub @channelname <RSS 地址>
查看个人订阅列表:/rss
查看个人订阅列表并显示订阅链接:/rss raw
如果需要把机器人加入频道,则机器人的身份需要为管理员

Systemd真香。
本文采用CC BY-NC-ND 4.0许可协议进行许可,转载请注明出处。

本文最后更新时间为:2019-05-29-Wednesday-08:45:53 PM




Image of Wechat