部署支持Telegram应用内预览的RSS订阅机器人

简介

在Telegram里,我们经常通过RSS订阅机器人把消息转发到群组里,但是我们在网上找的公共RSS Bot都不支持Telegram的应用内即时预览功能(可能只有我没找到能直接用的🤣),在Github搜索Telegram Bot时,我找到一个很不错的Telegram RSS Bot项目,可以很方便的部署在自己的VPS上

项目地址:https://github.com/indes/flowerss-bot
Release地址:https://github.com/indes/flowerss-bot/releases
文档地址:https://flowerss-bot.now.sh/#/

作者的文档已经写了很详细了,这里我顺便随手记录下自己的部署过程(老水怪了,嘿嘿🤡)

特性:

  • 常见的 RSS Bot 该有的功能;
  • 支持 Telegram 应用内即时预览;
  • 支持为 Group 和 Channel 订阅 RSS 消息;
  • 丰富的订阅设置。

准备

  • 一台可以访问国际互联网的VPS或者服务器
  • 一双会Ctrl + C & Ctrl + V的双手

部署

关于配置文件详细的说明请看本文后面的部分或者项目文档配置部分

Docker部署

1
2
3
4
5
6
7
8
9
10
11
12
13
# Docker安装、拉取项目镜像此处略过,因为作者也没写2333
# 下载配置文件 在项目目录下新建 config.yml 文件
$ mkdir ~/flowerss &&\
$ wget -O ~/flowerss/config.yml \
https://raw.githubusercontent.com/indes/flowerss-bot/master/config.yml.sample
# 修改配置文件
$ vim ~/flowerss/config.yml
# 如果使用sqlite作为数据库,修改sqlite数据路径
sqlite:
path: /root/.flowerss/data.db
# 运行
$ docker run -d -v ~/flowerss:/root/.flowerss indes/flowerss-bot

二进制文件部署

这也是博主实际的部署方式

1
2
3
4
5
6
7
8
9
10
11
# 新建并进入项目目录
$ mkdir /opt/RSSBot && cd $_
# 64位系统下载(本教程不保证一直更新,请实际使用时更改下面的release版本号(如 v0.8.3)为最新版本号)
$ curl -LJO https://github.com/indes/flowerss-bot/releases/download/v0.8.3/flowerss-bot-v0.8.3-linux-amd64.tar.gz
# 32位系统下载
$ curl -LJO https://github.com/indes/flowerss-bot/releases/download/v0.8.3/flowerss-bot-v0.8.3-linux-386.tar.gz
# 下面以64位为例,32位的修改下文件名跟32位Release包文件名一致即可
# 解压到项目目录
$ tar zxvf flowerss-bot-v0.8.3-linux-amd64.tar.gz
# 删除Release包
$ rm flowerss-bot-v0.8.3-linux-amd64.tar.gz

此时RSSBot项目的目录结构如下:

1
2
3
4
5
6
.                              # 根目录
|——opt # 项目父文件夹
| |——RSSBot # 项目目录
| |——README.md # 项目的README
| |——config.yml.sample # 配置文件示例
| |——flowerss-bot # 程序的二进制文件

1
2
3
4
5
6
7
8
9
10
# 重命名示例配置文件为实际配置文件
$ mv config.yml.sample config.yml
# 修改配置文件,修改过程见后文
$ vim config.yml
# 给予权限
$ chmod +x flowerss-bot
# 运行Flowerss Bot(断开终端进程就会结束)
$ ./flowerss-bot
# 运行Flowerss Bot(断开终端进程仍然运行)
$ nohup ./flowerss-bot &

配置开机自启

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 使用systemed命令
$ cat > /etc/systemd/system/flowerss.service <<EOF
# 内容如下,最后EOF结束,注意将Flowerss的WorkingDirectory和ExecStart换成项目实际所在目录
[Unit]
Description=flowerss
After=network.target
Wants=network.target

[Service]
Type=simple
PIDFile=/var/run/flowerss.pid
WorkingDirectory=/root/opt/RSSBot
ExecStart=/root/opt/RSSBot/flowerss-bot
RestartPreventExitStatus=23
Restart=always

[Install]
WantedBy=multi-user.target
EOF
# 启动服务
$ systemctl start flowerss
# 服务开机自启
$ systemctl enable flowerss

源码编译部署

1
2
3
4
5
6
7
# Clone项目的代码仓库并进入项目目录
$ git clone https://github.com/indes/flowerss-bot && cd flowerss-bot
# 编译源码
$ make build
# 运行flowerss bot
$ ./flowerss-bot
# 其他的配置和上面其他方式无异

配置项

配置文件

无论你使用上面哪种方式部署,实际起作用的配置文件只有一个:项目目录下的config.yml文件,此文件编辑时必须严格按照YAML格式要求!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 这是配置文件示例
bot_token: XXX
#多个telegraph_token可采用数组格式:
# telegraph_token:
# - token_1
# - token_2
telegraph_token: xxxx
user_agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
preview_text: 0
disable_web_page_preview: false
socks5: 127.0.0.1:1080
update_interval: 10
error_threshold: 100
telegram:
endpoint: https://xxx.com/
mysql:
host: 127.0.0.1
port: 3306
user: mysql_username
password: mysql_password
database: flowerss
sqlite:
path: ./data.db
allowed_users:
- 123
- 234

配置项说明

配置项 含义 是否必填
bot_token Telegram Bot Token 必填
telegraph_token Telegraph Token, 用于转存原文到 Telegraph 可忽略(不转存原文到 Telegraph )
preview_text 纯文字预览字数(不借助Telegraph) 可忽略(默认0, 0为禁用)
user_agent User Agent 可忽略
disable_web_page_preview 是否禁用 web 页面预览 可忽略(默认 false, true 为禁用)
update_interval RSS 源扫描间隔(分钟) 可忽略(默认 10)
error_threshold 源最大出错次数 可忽略(默认 100)
socks5 用于无法正常 Telegram API 的环境 可忽略(能正常连接上 Telegram API 服务器)
mysql MySQL 数据库配置 可忽略(使用 SQLite )
sqlite SQLite 配置 可忽略(已配置mysql时,该项失效)
telegram.endpoint 自定义telegram bot api url 可忽略(使用默认api url)
allowed_users 允许使用bot的用户telegram id, 可忽略,为空时所有用户都能使用bot

申请Telegram Bot Token

打开Telegram搜索@BotFather

点击Start,发送/newbot

然后给你的Telegram Bot取一个昵称和名字,框中马赛克部分就是创建的Telegram Bot Token,请妥善保管该Token

申请Telegraph Token

Telegram应用内预览需要Telegraph Api,所以我们还需要申请个Telegraph Token

在终端中执行下面命令,会返回一段json格式的文本,其中的access_token字段值即为Telegraph Token,请妥善保存

1
$ curl https://api.telegra.ph/createAccount?short_name=DaiRSS_Bot&author_name=Spoience&author_url=https://spoience.com

查看Telegram ID

默认的配置是允许所有用户使用我们刚刚创建的Telegram RSS Bot,但为了安全、防止被滥用我们可以设置指定ID的Telegram用户能够使用该Bot,获取允许使用用户(比如自己)的Telegram ID并填入配置文件的allowed_users字段

获取Telegram ID:https://t.me/getmyid_bot?start=botostore

使用

将Bot添加到您的频道中,并设置为管理员,Bot的管理命令如下:

1
2
3
4
5
6
7
8
9
10
/sub @ChannelID [url] 订阅
/unsub @ChannelID [url] 取消订阅
/list @ChannelID 查看当前订阅
/check @ChannelID 检查当前订阅
/unsuball @ChannelID 取消所有订阅
/activeall @ChannelID 开启所有订阅
/setfeedtag @ChannelID [sub id] [tag1] [tag2] 设置订阅标签(最多设置三个Tag,以空格分隔)
/import 导入 OPML 文件
/export @ChannelID 导出 OPML 文件
/pauseall @ChannelID 暂停所有订阅

测试

将Bot添加你的群组/频道,订阅一个RSS/Atom,对Bot输入命令/check,可以看到一切正常,部署过程至此结束,Enjoy🍕