Telegram 机器人 - CentOS6.5 搭建 EhForwarderBot v1.0 完全攻略
Ubuntu 下配置使用 EFB v2.0 的示例已更新,亲测。建议在内存足够且网络环境稳定的情况下部署,推荐使用。相对本教程的 1.0 版本部署更为简单(根据示例即可),运行稳定,出错信息在可控范围。
关于本教程的起因,可参考这篇文章。本教程基于搬瓦工 VPS CentOS6 x86_64 环境测试成功。
一、环境配置及依赖安装並下载 EhForwarderBot 源码并安装依赖
# 推薦使用EFB2.0:https://ynewtime.github.io/EFBv2.0-Ubuntu
# centos6.5環境測試通過
# 一、环境配置及依赖安装
# 安装 git
cd ~
yum update
yum install git -y
# 安装开发工具包
yum groupinstall "Development Tools"
# 安装 python3.6 及 pip3.6
yum install -y https://centos6.iuscommunity.org/ius-release.rpm
yum update -y
yum install -y python36u python36u-libs python36u-devel python36u-pip python36u-setuptools
# 编译安装 FFmpeg
## 编译安装 Yasm
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make && make install
## 编译安装 lame
wget https://sourceforge.net/projects/lame/files/JPG/lame/3.99/lame-3.99.5.tar.gz/download
### 下载下来的文件名是down重命名为实际的名字
mv download lame-3.99.5.tar.gz
tar -zxvf lame-3.99.5.tar.gz
cd ./lame-3.99.5
./configure
make && make install
### 编译安装后并没有加入系统库中,添加如下软连接加入系统库
ln -s /usr/local/lib/libmp3lame.so.0.0.0 /usr/lib/libmp3lame.so.0
## 编译安装 FFmpeg
wget http://www.ffmpeg.org/releases/ffmpeg-3.2.tar.gz
tar -zxvf ffmpeg-3.2.tar.gz
cd ffmpeg-3.2
### 编译配置,使mp3编码器生效
./configure --enable-libmp3lame
make && make install
# 至此,EhForwarderBot 所需的环境配置完毕
二、下载 EhForwarderBot 源码并安装依赖
# 下载源码
git clone https://github.com/blueset/ehForwarderBot.git
# 切换到 v1 分支
git branch -a
git checkout remotes/origin/v1
# 安装 telegram 从端和 wechat 从端所需依赖
cd ehForwarderBot
pip3.6 install -r requirements.txt
三、配置 EhForwarderBot
👉 创建 Telegram Bot
Telegram 官方的 Bot API,以最大化利用 Telegram Bot 所提供的各种便利功能。
要创建一个新的 Bot,要先向 @BotFather 发起会话。发送指令 /newbot 以启动向导。期间,你需要指定这个 Bot 的名称与用户名(用户名必须以 bot 结尾)。完毕之后 @BotFather 会提供给你一个密钥(Token),妥善保存这个密钥。请注意,为保护您的隐私及信息安全,请不要向任何人提供你的 Bot 用户名及密钥,这可能导致聊天信息泄露等各种风险。
接下来还要对刚刚启用的 Bot 进行进一步的配置:允许 Bot 读取非指令信息、允许将 Bot 添加进群组、以及提供指令列表。
- 发送 /setprivacy 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Disable”.
- 发送 /setjoingroups 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Enable”.
- 发送 /setcommands 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后发送如下内容:
link - 将会话绑定到 Telegram 群组
chat - 生成会话头
recog - 回复语音消息以进行识别
extra - 获取更多功能
然后还需要获取你自己的 Telegram ID,ID 应显示为一串数字。获取你自己的 ID 有很多方式。比如通过 Bot 查询,
很多现存的 Bot 也提供了 ID 查询服务,直接向其发送特定的指令即可获得自己的数字 ID。推荐向 @get_id_bot 发送 /start
留存你的 Telegram ID 以便后续使用。
👉 配置 EFB 和 Telegram 主端
回到 VPS 上 ehForwarderBot 目录
# 创建 storage 文件夹并赋权
mkdir storage
chmod 777 storage
# 编辑配置文件
cp config.sample.py config.py
vi config.py
在配置文件中,token 后引号里面的内容替换为你之前获得的 Bot 密钥,admins 后方括号里面填入你自己的 Telegram ID。后面的 6 行是用来配置语音转文字功能的,不是必要功能,目前可以删除各行。如果有兴趣启用该功能的,请到各平台申请 API keys。详情请参见 文档(见文首) 的「ETM」章节。
编辑好的结果应类似如下内容。token 和 admins 字段有所不同:
# ##############################
# Configs for EH Forwarder Bot
# ##############################
#
# Basic settings
# ----------------
#
# Master/Slave Channels
#
# Master channel:
# The channel that is mainly used to view/manage messages
# from slave channels.
# Currently only 1 master channel is supported.
#
# Slave channels:
# Channels that are hosted on the server and being delivered
# to and from the master channel.
# You may have more than 1 slave channel.
#
master_channel = 'plugins.eh_telegram_master', 'TelegramChannel'
slave_channels = [('plugins.eh_wechat_slave', 'WeChatChannel')]
#
# Plugin specific settings
# --------------------------
# Plugin specific settings should be written below in the format of:
# `channel_name = {"key1": "value1", "key2": "value2"}`
# Please refer to docs of individual plugin for details
#
eh_telegram_master = {
"token": "12345678:QWFPGJLUYarstdheioZXCVBKM",
"admins": [123456789]
}
👉 启动 EFB
到目前为止,EFB 的配置工作已经完成。现在我们只需要启动它,登陆微信就大功告成了。大多数时候,启动微信需要扫描屏幕上的二维码进行授权。这时需要你的 SSH 客户端字体缩小到适当的大小以完整显示整个二维码。
python3 daemon.py start
扫描完成之后,手机上会显示「网页微信已登录」,这是因为 EFB 微信从端使用了网页版微信的接口。当终端显示: Start auto replying
时,即代表登陆成功,这时候就可以按下 Ctrl
C
来隐藏输出了。
四、使用 EFB Telegram 主端
现在,在 Telegram 里面搜索你之前指定的 Bot 用户名,点击 Start
(开始)即可开始与微信互通消息了。
在最初,所有来自微信的消息都会通过 Bot 直接发送给你,要回复其中的任意一条消息,你需要在 Telegram 中选中那条消息,选择 Reply
(回复),再输入消息内容。
如果需要向新联系人发送消息,只需发送 /chat
指令,选择一个会话。之后这条消息就会变成一个「会话头」,回复这条消息就可以向指定的联系人或群组发送消息。
当消息过多时,来自不同会话的消息会使 Telegram 上面的会话混乱不堪。EFB 支持将来自指定会话的消息分流到一个 Telegram 群组中。
在 Telegram 中新建一个空群组,并将你的 Bot 加入到这个群组中。
(如果找不到自己的 Bot,请尝试在桌面版中创建,并在添加成员时搜索 Bot 的用户名)
回到 Bot 会话,发送 /link
,选择一个会话,并点击 “Link”
在弹出的列表中选择刚刚创建的空群组即可
在绑定会话中,你可以像普通聊天一样直接发送消息。也可以通过指定回复的形式来 @ 其他人。
注意:虽然 Telegram 群组中的所有人可以看到会话全文,但是只有配置文件 (config.py
) 中指定的管理员 (admins) 能够以你的名义发送消息到微信。EFB 支持设置多个管理员,但只有第一个管理员(按照输入排序)能够接收到所有消息,而且这有可能造成不必要的隐私问题,敬请注意。
以上就是 EFB Telegram 主端的基础用法。关于其他的功能(语音转文字、微信附加功能等)请参见 文档 的「ETM」章节。
五、常见问题
Q: EFB 微信从端稳定吗?
只要保持微信手机版网络连接长期稳定,根据上游项目 ItChat 的统计,可长达数个月不掉线。
Q: EFB 微信从端支持哪些类型的消息?
EFB 微信从端理论上支持所有网页版微信支持的消息类型。即:
微信→Telegram:文字、图片、视频、分享链接、表情、文档、位置、语音、名片、好友请求、系统通知
Telegram→微信:文字、图片、表情(以图片发送)、视频
所以说,不支持红包、支付、朋友圈、转账、语音通话、视频聊天等网页版不支持的消息类型。
Q: 有些表情收不到
由于微信网页版的限制,部分受版权保护的表情包不能显示出来,故亦不能转发到 Telegram。