「这是我参与11月更文挑战的第 12 天,活动详情查看:2021最后一次更文挑战」
这次搞事是想部署一个 tg Bot ,方便订阅一些不错的网站和技术博客。
如果想跟着我做,你需要准备下面这些东西。
1、类似 SSH shell / Xshell 的 ssh 工具
2、一台能够自由上网的手机
3、一台云服务器
申请 Bot
tg Bot 有个不错的地方是可以直接在手机上完成配置和订阅,方便快捷。
现在在 Telegram 上搜索 @BotFather
,之后在根据提示,输入/star
接下来根据提示创建一个新的机器人 /newbot
,根据提示给你的机器人起一个名字,我这里用的是 xianyu_tobot
, 起好名字之后会返回一个 HTTP API token 这个需要记录下来,之后部署需要用到。
到这里你就拥有了属于你自己的一个 Telegram Bot 了。
Telegram Bot 的简单配置
我们可以通过 /mybot
命令管理属于你的 Telegram Bot
我们需要简单设置一下 Telegram Bot ,点击 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 特此提醒:这个功能在我们下面主讲的项目中支持的不是很好
部署 RssBot
现在网上比较流行的两种搭建方式分别是参考下面两个项目的:
一个是基于 Rust 构建的 rssbot
还有就是基于 Go 语言构建的 flowerss-bot
基于方便新手的便利性,个人强烈推荐后者。不仅使用方便,而且支持 Telegram 内预览。
这时候就需要掏出刚刚买好的华为服务器,系统环境为 Centos 7。
先使用源码的方式编译部署。
使用源码部署 flowerss-bot
首先需要配置 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/profilesource /etc/profile
yum install make gcc git -y
接着拉取项目源码并编译
git clone https://github.com/indes/flowerss-bot
cd flowerss-bot
make build
# 配置项目参数
vim config.yml
config.yml 中填入的内容
# 这个是之前申请的 bot token
# 填入的参数是包含 冒号前面的一串数字的
bot_token: XXX
#多个telegraph_token可采用数组格式:
# telegraph_token:
# - token_1
# - token_2
# 建议订阅人数多的 bot 一定要申请多一些!不然没多久就访问频繁了
# 申请地址
# curl https://api.telegra.ph/createAccount?short_name=flowerss&author_name=flowerss&author_url=https://github.com/indes/flowerss-bot
# 选填项
telegraph_token: xxxx
preview_text: 0
socks5: 127.0.0.1:1080
# 机器配置不高的朋友这个配置项可以设置为20
update_interval: 10
error_threshold: 100
mysql:
host: 127.0.0.1
port: 3306
user: user
password: pwd
database: flowerss
sqlite:
path: ./data.db
配置项说明
你以为到这里就结束了吗?
Tip
构建项目时会出现下面的提示:
package google.golang.org/grpc: unrecognized import path "google.golang.org/grpc"(https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
这是因为这个代码已经转移到 github 上面了,但是代码里面的包依赖还是没有修改,还是 google.golang.org 。
所以不能使用 go get 的方式安装,我们需要使用下面这种方式:
# 按照错误提示创建响应的文件夹
mkdir -p $GOPATH/src/golang.org/x/
# 从 git 上将源码同步下来
git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net
# 使用源码安装缺失的包
go install net
上面这种方式部署繁琐不少,但是没关系,项目作者贴心的为我们准备了 Docker 部署的方式,只需 5 秒就可以一键部署了。
Docker 一键式部署
使用 Docker 一键部署的前提是先配置好 Docker 运行环境,没有玩过的盆友可以跟着咸鱼一步步往下做。
连接华为云主机,使用下面的命令在服务器上安装 Docker
# 在Linux操作系统下,可以使用如下命令快速安装Docker
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
# 安装完成后,使用下面的命令验证是否安装成功, 安装成功输入下面的命令会输出一堆版本信息
docker version
安装好 Docker 后就需要配置 DockerHub 镜像加速源地址,否则拉取 DockerHub 镜像的速度会让你怀疑人生。
安利大家一个干货:
在你用的服务商的官网,找到 开发者 在下拉列表里选择 开源镜像站
镜像加速源什么的,云厂商已经给我们安排的明明白白了。
好了,到这里直接执行命令,配置镜像加速器。
sudo mkdir -p /etc/docker
# 注意,这里要填写自己的加速器地址
sudo tee /etc/docker/daemon.json <<- 'EOF'
{
"registry-mirrors": ["https://xxxxxxxx0faac01bf7f08de0.mirror.swr.myhuaweicloud.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
配置好 DockerHub 之后,直接使用下面的命令就可以了。
# telegraph token 参数可以省略,功能上影响不大
# 可以添加 -i [num] 的方式更改 Rss 拉取资源的频率,默认为 10 s
docker run -d -v ~/data/flowerss:/var/flowerss indes/flowerss-bot -b <bot token> -t <telegraph token 可省略>
启动好项目后,就可以使用 Telegram Bot 了。
部署好 Telegram Bot 后,我们就可以在群组或者频道中使用这个 robot 了。
你可以像我一样的创建一个频道,并在管理员中添加创建好的 robot
之后就可以向 robot 发送要订阅的网站。
/sub @[频道ID / 群组ID] 订阅地址
# 订阅 阮一峰 的网站
# eg : /sub @xianyuplus http://www.ruanyifeng.com/blog/atom.xml
订阅成功后他就会不停的为我们拉取最新的网站的信息啦,摸鱼党必备~