搞事 | 5分鐘部署一個機器人幫你告別 「資訊焦慮」

  • 2019 年 11 月 12 日
  • 筆記

上次搞事用伺服器搭建了一套監控系統,包含 Bug 追蹤、數據監控以及可視化儀錶盤等功能。

感興趣的可以點擊下面藍字學習一波~

搞事 | 這個周末我對落灰的雲伺服器做了什麼?

這次搞事是想部署一個 Telegram Bot ,方便訂閱一些不錯的網站和技術部落格。

前奏

如果想跟著我做,你需要準備下面這些東西。

•類似 SSH shell / Xshell 的 ssh 工具•一台能夠自由上網的手機•一台雲伺服器

申請 Telegram Bot

Telegram Bot 有個不錯的地方是可以直接在手機上完成配置和訂閱,方便快捷。

現在在 Telegram 上搜索 @BotFather,之後在根據提示,輸入/star

接下來根據提示創建一個新的機器人 /newbot,根據提示給你的機器人起一個名字,我這裡用的是 xianyu_tobot, 起好名字之後會返回一個 HTTP API token 這個需要記錄下來,之後部署需要用到。

到這裡你就擁有了屬於你自己的一個 Telegram Bot 了。

Telegram Bot 的簡單配置

我們可以通過 /mybot命令管理屬於你的 Telegram Bot

我們需要簡單設置一下 Telegram Bot ,點擊 Edit BotEdit Commands 根據下面的格式輸入指令

rss       - 顯示當前訂閱的 RSS 列表,加 raw 參數顯示鏈接sub       - 訂閱一個 RSS: /sub http://example.com/feed.xmlunsub     - 退訂一個 RSS: /unsub http://example.com/feed.xmlunsubthis - 使用此命令回復想要退訂的 RSS 消息即可退訂, 不支援 Channel# export    - 導出為 OPML 特此提醒:這個功能在我們下面主講的項目中支援的不是很好

部署 RssBot

現在網上比較流行的兩種搭建方式分別是參考下面兩個項目的:

一個是基於 Rust 構建的 rssbot

https://github.com/iovxw/rssbot

還有就是基於 Go 語言構建的 flowerss-bot

https://github.com/indes/flowerss-bot

基於方便新手的便利性,個人強烈推薦後者。不僅使用方便,而且支援 Telegram 內預覽。

這時候就需要掏出剛剛買好的華為伺服器,系統環境為 Centos 7。

先使用源碼的方式編譯部署。

使用源碼部署 flowerss-bot

首先需要配置 go 語言安裝環境

wget https://dl.google.com/go/go1.12.6.linux-amd64.tar.gztar -C /usr/local -xzf go1.12.6.linux-amd64.tar.gzecho 'export PATH=$PATH:/usr/local/go/bin' >>/etc/profilesource /etc/profileyum install make gcc git -y

接著拉取項目源碼並編譯

git clone https://github.com/indes/flowerss-botcd flowerss-botmake 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: xxxxpreview_text: 0socks5: 127.0.0.1:1080  # 機器配置不高的朋友這個配置項可以設置為20update_interval: 10error_threshold: 100mysql:  host: 127.0.0.1  port: 3306  user: user  password: pwd  database: flowersssqlite:  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作業系統下,可以使用如下命令快速安裝Dockercurl -fsSL get.docker.com -o get-docker.shsh get-docker.sh  # 安裝完成後,使用下面的命令驗證是否安裝成功, 安裝成功輸入下面的命令會輸出一堆版本資訊docker version

安裝好 Docker 後就需要配置 DockerHub 鏡像加速源地址,否則拉取 DockerHub 鏡像的速度會讓你懷疑人生。