幫你查快遞、自動追蹤快遞最新狀態的Telegram機器人!成品可戳:
@bennyblog_bot(此機器人由俺長期維護)
這個機器人不只是能聊天、查快遞!信不信發語音給它也可以!還能搜美劇日劇!詳細資訊可以看功能和TODO
由於最近機器人使用量突然飆升,使用輪詢模式容易導致快遞100的免費API 使用量超過2000次/天而導致被封IP,所以目前打算更換API。 暫時只發現了這麼一個比較好的選擇:
歡迎各位有能力的人提交PR 或其他快遞API 的建議!感激不盡現在順豐的查詢依舊有問題,不知道哪個API 能夠用
start - 輸入快遞單號來查詢
help - 幫助
list - 查看我的查詢紀錄
delete - 刪除某個單號查詢記錄
quickdel - 回覆某一查詢訊息快速刪除單號查詢記錄
query - 查詢美劇、電影
yyets - 查詢下載鏈接
weather - 查詢指定城市近期天氣預報
加上機器人,直接發送運單編號即可查詢(並添加到追蹤中); 如果你的單號帶有字母,請使用/start danhao123
; 如果你需要一次性追蹤多個單號,請/start 123,123
,使用英文半角逗號分隔(當然了,更新了就慘了)
直接發送訊息即可,也可以發送語音(中文國語)
/query 蝙蝠侠
/yyets 神盾局
,之後點擊按鈕操作需要部署在可以存取Telegram API 的伺服器上(或設定代理),同時支援Python 2和Python 3,推薦用Python 3 已經在以下平台測試通過:
Windows 10: Python 2.7.13 32bit Python 3.6.3 32bit
Ubuntu 16.04/14.04、CentOS 7、Debian 9: Python 2.7
一鍵腳本在systemd的情況下運作會更好,一鍵腳本只測試於Ubuntu 16.04: 先切換到root 使用者:
wget -N --no-check-certificate https://raw.githubusercontent.com/BennyThink/ExpressBot/master/install.sh && bash install.sh
然後按照提示操作。支援systemd 的系統會同時安裝為systemd 服務,其他系統可以使用對應的init 手動設定或使用supervisor
快捷操作
# 启动服务
bash install.sh start
# 停止服务
bash install.sh stop
註:CentOS下方如果提示wget: command not found
請先安裝wget yum install wget
如果一鍵腳本失敗,可以試試手動配置
git clone https://github.com/BennyThink/ExpressBot
cd ExpressBot
pacman -S python python-pip python-certifi python-chardet python-future python-idna python-requests python-six python-urllib3
然后从 AUR 安装 python-pytelegrambotapi .
sudo apt install python3 python3-pip git
sudo pip3 install -r requirements.txt
Python3 請使用pip3
取代pip
pip install setuptools
pip install -r requirements.txt
從Python官網下載並安裝Python,切換到專案目錄,如果是Python 2:
pip install -r requirements.txt
如果是Python 3,執行以下指令:
pip3 install -r requirements.txt
ffmpeg是為了支援音訊辨識(使用ffmpe進行音訊檔案的轉碼)。
如果你是Windows ,從這裡下載ffmpeg 的二進位exe檔(總共三個都需要),放到PATH 中; 如果你是Linux 發行版,直接用套件管理器安裝就可以(編譯或下載二進位也行), Debian 係可以使用sudo apt install ffmpeg
,RHEL可以使用yum install ffmpeg
修改config.py
進行配置,TOKEN 為Bot 的API,TURING_KEY 若不配置則不啟用機器人功能
TOKEN = 'Your TOKEN'
TURING_KEY = 'Your Key'
建立單元檔案: vim /lib/systemd/system/expressbot.service
自行取代輸入如下訊息
[Unit]
Description=A Telegram Bot for querying expresses
After=network.target network-online.target nss-lookup.target
[Service]
Restart=on-failure
Type=simple
ExecStart=/usr/bin/python /home/ExpressBot/expressbot/main.py
[Install]
WantedBy=multi-user.target
重新載入daemon、自啟動、啟動
systemctl daemon-reload
systemctl enable expressbot.service
systemctl start expressbot.service
我使用了restart=on-failure
參數,失敗退出會重新啟動。 如果設定成always
就代表無論因為什麼原因,只要進程不在了,systemd 就會立刻幫我們重啟。詳情可參考systemd.service
手冊。
測試目的的話,以nohub 或screen 運行main.py
,Python 3 請用python3
替換為python
cd /home/ExpressBot/expressbot
nohup python main.py
# 或者
cd /ExpressBot/expressbot
screen -S tgbot
python main.py
如果需要追蹤更新並推送,那麼咱需要定期輪詢。
目前使用的定時器是apscheduler, config.py
中的INTERVAL
可以來設定間隔時間
# 查看运行状态
sudo systemctl status expressbot.service
# 启动
sudo systemctl start expressbot.service
# 停止
sudo systemctl stop expressbot.service
# 重启
sudo systemctl restart expressbot.service
supervisor
目前支援docker 運行,但尚未經過詳細測試。
docker pull bennythink/expressbot:latest
docker run -d --restart=always -e TOKEN= " TOKEN " -e TURING= " KEY " expressbot:v1
如果想自己build 的話,那就下載回Dockerfile,然後
docker build -t expressbot:v1 .
首先,請容許我大力的打擊你,所有發往此機器人的訊息都可能被記錄下來。 但是實際上,此機器人比較良心,預設只會在資料庫中記錄查詢成功之後的以下信息,使用/list
命令可以看到:
如果你發送了語音,那麼語音檔案就會被放到/tmp
目錄下我不保證我能夠有節操不去查看資料庫,但我保證我會妥善保護資料庫、不外洩。
所以,你要是不想用,就不用吧;或者,查完就刪掉也是可以的。
有一個檔案叫msg.py
,如果為了debug等需求,可以在config.py
中把LOGGER
設定成True 當然了,群組中你就不能設定圖靈API了(甚至應該將查詢快遞的功能也廢掉免得機器人亂說話)。 另外,群組中需要開啟機器人的隱私模式。
唔,可能是快遞100的介面炸了吧;稍後重試。
可能是剛產生單號,快遞100還沒有數據
目前暫時沒有找到可靠的REST API 的順豐快遞查詢介面。
目前打算更換快遞API,看起來好像快遞鳥是比較好的選擇(支援推送),但需要實名認證…
yyets
用於透過點擊InlineKeyboardButton 獲取到正確的下載鏈接,但是前提要求是只能有一個檢索結果(多個結果只返回第一個); query
則是用於檢索全部資訊。 比如說我想下載諾蘭的黑闇騎士崛起,我就可以透過query
找到唯一的名字,然後使用/yyets 《蝙蝠侠:黑暗骑士崛起》(The Dark Knight Rises)
獲得到唯一的結果。
按完成狀態、優先排列
/start 123,123
英文半角逗號InsecureRequestWarning
GPL v2