写在前面

一只能查快递,陪你聊天,查询美剧日剧等功能的Telegram机器人!成品可戳:肥鱼机器

功能

  • 查快递
  • 列出历史查询
  • 聊天(包含语音、文字)
  • 群组聊天(使用/开头、回复机器人消息来呼叫机器人):由于开启了隐私模式,所以只好这样啦
  • 美剧/日剧/电影查询

功能预览

搭建教程

Github:项目地址 1.申请一个Telegram bot 前往BotFather,点击start启用机器人之父,发送命令/newbot创建你自己的机器人,然后按照BotFather的提示,给机器人取名并输入消息***bot来自定义你的bot的用户名,然后就会生成属于你自己的机器人及其链接、token。继续发送命令/mybots,选择你的机器人然后选择Edit bot,选择Edit Commands,就可以在消息框下输入并发送如下指令:

start         - 输入快递单号来查询
query         - 查询美剧、电影
yyets         - 查询下载链接
weather       - 查询指定城市近期天气预报
list          - 查看我的查询历史记录
delete        - 删除某个单号查询记录
quickdel      - 回复某条查询消息来快速删除单号查询记录
help          - 帮助

2.部署 需要部署在可以访问 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 部署方法1.自动脚本 一键脚本在 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

部署方法2.手动配置 如果一键脚本失败,可以试试手动配置 (1)克隆代码

git clone https://github.com/BennyThink/ExpressBot
cd ExpressBot

(2)准备环境 Arch Linux

pacman -S python python-pip python-certifi python-chardet python-future python-idna python-requests python-six python-urllib3

然后从 AUR 安装 python-pytelegrambotapi Ubuntu, Debian 等

sudo apt install python3 python3-pip git
sudo pip3 install -r requirements.txt

其他发行版、macOS Python3 请使用pip3替换pip

pip install setuptools
pip install -r requirements.txt

WindowsPython官网下载并安装 Python,切换到项目目录,如果是 Python 2:

pip install -r requirements.txt

如果是 Python 3,执行如下命令:

pip3 install -r requirements.txt

(3)准备ffmpeg ffmpeg是为了支持音频识别(使用ffmpe进行音频文件的转码)。 如果你是 Windows ,从这里下载 ffmpeg 的二进制exe文件(一共三个都需要),放到 PATH 中; 如果你是 Linux 发行版,直接用包管理器安装就可以(编译或者下载二进制也行),Debian 系可以使用sudo apt install ffmpeg,RHEL可以使用yum install ffmpeg (4)配置 修改config.py进行配置,TOKEN 为 Bot 的 API,TURING_KEY 若不配置则不启用机器人功能,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手册。 (5)运行 测试目的的话,以 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

(6)计划任务 如果需要追踪更新并推送,那么咱需要定期轮询。 目前使用的定时器是 apscheduler,config.py中的 INTERVAL可以来设置间隔时间 (7)检查运行状态 systemd 控制命令:

# 查看运行状态
sudo systemctl status expressbot.service
# 启动
sudo systemctl start expressbot.service
# 停止
sudo systemctl stop expressbot.service
# 重启
sudo systemctl restart expressbot.service

其他系统 可以考虑使用对应系统的init,或者使用supervisor

部署方法3.使用 Docker 目前支持 docker 运行,但是尚未经过详细测试。 (1)拉取镜像

docker pull bennythink/expressbot:latest

(2)后台运行

docker run -d --restart=always -e TOKEN="TOKEN" -e TURING="KEY"  expressbot:v1

如果想自己 build 的话,那么就下载回 Dockerfile,然后

docker build -t expressbot:v1 .

更多详细内容请查看项目地址