[教程]给Telegram电报群组/通道搞一个订阅机器人(flowerss_bot)
写在前面
之前写过一个类似的订阅机器人教程,在实际使用中发现有些问题,今天找到另外一个类似的机器人
文章分4块内容:
创建机器人/设置机器人/DOCKER安装方式或者手动安装方式都行
文章来源moerats.com 搬运过来给自己/给同学们。
准备工作
Github地址:https://github.com/indes/flowerss-bot
1、申请Bot Token
打开Telegram
,搜索@BotFather
,发送/newbot
,申请一个Bot
,申请完成后,会发给你一个Bot Token
。
和机器人之父聊天,/mybots,如果建了多个机器人的话,会让你选择是用哪一个
点击API Token
红框里的就是token
编辑机器人
编辑命令
和机器人聊天内容如下
sub - [url] 订阅(url 为可选)
unsub - [url] 取消订阅(url 为可选)
list - 查看当前订阅
set - 设置订阅
check - 检查当前订阅
setfeedtag - [sub id] [tag1] [tag2] 设置订阅标签(最多设置三个Tag,以空格分割)
setinterval - [interval] [sub id] 设置订阅刷新频率(可设置多个sub id,以空格分割)
activeall - 开启所有订阅
pauseall - 暂停所有订阅
import - 导入 OPML 文件
export - 导出 OPML 文件
unsuball - 取消所有订阅
help - 帮助
2、申请Telegraph Token
curl https://api.telegra.ph/createAccount?short_name=zhujitips&author_name=zhujitips&author_url=https://zhujitips.com
返回的JSON
中access_token
字段值即为Telegraph Token
。
Docker安装
1、安装Docker
#CentOS 6
rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum update -y
yum -y install docker-io
service docker start
chkconfig docker on
#CentOS 7、Debian、Ubuntu
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker
2、运行镜像
#填入bot_token和telegraph_token参数后运行即可
docker run --restart=always --name flowerss -d -v /flowerssdata:/var/flowerss indes/flowerss-bot -b bot_token -t telegraph_token
或者
1.下载配置文件 在项目目录下新建 config.yml 文件
mkdir ~/flowerssdata &&\
wget -O ~/flowerssdata/config.yml \ https://raw.githubusercontent.com/indes/flowerss-bot/master/config.yml.sample
2.修改配置文件
vim ~/flowerss/config.yml
修改配置文件中sqlite路径(如果使用sqlite作为数据库):
sqlite:
path: /root/.flowerss/data.db
3.运行
docker run --restart=always --name flowerss -d -v ~/flowerssdata:/root/.flowerss indes/flowerss-bot
Docker
默认使用SQLite
数据库,且文件存放在/flowerssdata
文件夹。
配置说明
根据以下模板,新建 config.yml
文件。
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: user
password: pwd
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 |
手动安装
1、安装golang
这里直接使用最新版的go
二进制安装,不然后面编译会因版本问题出错。
wget https://dl.google.com/go/go1.12.6.linux-amd64.tar.gz
#解压
tar -C /usr/local -xzf go1.12.6.linux-amd64.tar.gz
#生效
echo 'export PATH=$PATH:/usr/local/go/bin' >>/etc/profile
source /etc/profile
2、安装依赖
#Debian、Ubuntu系统
apt install make gcc git -y
#CentOS系统
yum install make gcc git -y
3、运行机器人
#拉取源码
git clone https://github.com/indes/flowerss-bot
cd flowerss-bot
#编译
make build
#新建配置文件
nano config.yml
参数说明大致如下:
#Telegram Bot Token,必填
bot_token: XXX
#Telegraph Token,用于转存原文到Telegraph,也就是即时查看功能,选填
telegraph_toke: xxxx
#用于国内等无法连接Telegram API的情况,国外忽略
socks5: 127.0.0.1:1080
#RSS源扫描间隔(分钟),选填
update_interval: 10
#使用Mysql数据库,默认使用SQLite
mysql:
host: 123.123.132.132
port: 3306
user: moerats
password: moerats
database: moerats
##这里博主默认使用的SQLite,扫描间隔为5分钟,所以使用到的参数如下:
bot_token: XXX
telegraph_toke: xxxx
update_interval: 5
然后新建Systemd
配置文件,只适用于CentOS 7
、Debian 8+
、Ubuntu 16+
等。
#修改下flowerss-bot源码路径即可,然后一起复制到SSH运行
cat > /etc/systemd/system/flowerss.service <<EOF
[Unit]
Description=flowerss
After=network.target
Wants=network.target
[Service]
Type=simple
PIDFile=/var/run/flowerss.pid
WorkingDirectory=/root/flowerss-bot
ExecStart=/root/flowerss-bot/flowerss-bot
RestartPreventExitStatus=23
Restart=always
[Install]
WantedBy=multi-user.target
EOF
启动并开机自启:
systemctl start flowerss
systemctl enable flowerss
如果没有Systemd
的,比如CentOS 6
,Debian 7
等,直接使用rc.local
,使用命令:
#先启动
nohup ./flowerss-bot &
#设置开机自启,路径和命令自行修改
sed -i '/exit/d' /etc/rc.local
echo "cd /root/flowerss-bot && nohup ./flowerss-bot &" >> /etc/rc.local
使用
使用命令:
/sub [url] 订阅(url 为可选)
/unsub [url] 取消订阅(url 为可选)
/list 查看当前订阅
/set 设置订阅
/help 帮助
Channel
订阅使用方法:
1、将Bot添加为Channel管理员
2、发送相关命令给Bot
#Channel订阅支持的命令
/sub @ChannelID [url] 订阅
/unsub @ChannelID [url] 取消订阅
/list @ChannelID 查看当前订阅
ChannelID
只有设置为Public Channel
才有。如果是Private Channel
,可以暂时设置为Public
,订阅完成后改为Private
,不影响Bot
推送消息。
例如要给t.me/zhujitips
频道订阅RSS
更新:
1、将Bot添加到moerats频道管理员列表中
2、给Bot发送/sub @moerats https://zhujitips.com/feed/ 命令
本文来自moerats.com