https://blog.1a23.com/2017/01/09/EFB-How-to-Send-and-Receive-Messages-from-WeChat-on-Telegram-zh-CN/
开发代号 EH Forwarder Bot(简称 EFB)是一个可扩展的聊天平台隧道框架,基于 Python 3。目前已内置了 Telegram 主端 (Master Channel) 和微信从端 (Slave Channel),用来在 Telegram 收发微信消息。其他从端开发已在计划之中。同时 EFB 也配备了详尽的文档,欢迎有兴趣的朋友们开发自己的主端或从端,来支持更多的平台。EFB 在 GitHub 中开放了源代码,并且在 Read The Docs 平台上发布的开发文档(英文,en-US)。
本文主要介绍了如何在一个虚拟服务器 (VPS) 中安装并配置 EFB、Telegram 主端和微信从端,以及如何使用 Telegram 主端来收发微信消息。
0x00: 说明
本文档基于 EFB v1.2 build 20170111 版本制作而成。较新的版本可能会有不同的安装步骤。敬请注意。
本教程面向具有一定背景知识的进阶用户,如有疑问,请您先在互联网上搜索(推荐 Google),若仍未解决、欢迎在 EFB Telegram 支持群组留言。
0x01: 用料
在开始之前,请准备:
电脑 一台
推荐 Linux、OS X、macOS 操作系统
部分手机亦可使用,但操作会略微繁琐。
Telegram 账号 一枚
Windows 用户需要 SSH 客户端 一枚,常用 PuTTY
墙外 VPS 一枚
没有 VPS 的可以尝试一下 Vultr 日本,速度还不错,顺带可以搭梯子。新用户赠送 $20 链接
(才不是要假装菜谱呢)
0x02: 构建环境
这里我们使用 Ubuntu 16.04 作为例子。CentOS、Arch 等其他发行版除去包管理器指令之外操作基本相同。(因为实在是不想再加钱开一个 VPS,所以下面的指令运行在同等版本的 Docker Image 上)
首先通过 SSH 客户端连接到你的 VPS。
0x021: 安装 Python 与非 Python 依赖
输入以下指令。
注:以下安装的部分软件包可能已经预安装在你的系统中。但请注意将已安装的 Python 3 版本升级到 3.5 或以上。
sudo apt-get install python3.5 libopus0 ffmpeg libmagic1 python3-pip git nano
(怎么感觉包名这么奇怪呢,算了,大概这样吧,差也差不了太多。 ¯\_(ツ)_/¯)
0x023: 下载源码并安装 Python 依赖
1
git clone https://github.com/blueset/ehForwarderBot.git
cd ehForwarderBot
pip3 install -r requirements.txt
0x03: 配置 EFB
接下来就是进行各种必要的配置和初始化的步骤了。
0x030: 创建 Telegram Bot
Telegram Bot 是 EFB(Telegram 主端)的出口,也是呈献给用户的渠道。我们在这里使用了 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 有很多方式,你可以选择任意一种。下面介绍两种可能的方式。
Plus Messenger
如果你使用了 Plus Messenger 作为你的 Telegram 客户端,你可以直接打开你自己的资料页,在「自己」下面会显示你的 ID。
通过 Bot 查询
很多现存的 Bot 也提供了 ID 查询服务,直接向其发送特定的指令即可获得自己的数字 ID。在这里介绍一些接触过的。
@get_id_bot 发送 /start
@XYMbot 发送 /whois
@mokubot 发送 /whoami
@GroupButler_Bot 发送 /id
@jackbot 发送 /me
@userinfobot 发送任意文字
@orzdigbot 发送 /user
留存你的 Telegram ID 以便后续使用。
0x031: 配置 EFB 和 Telegram 主端
这差不多就是安装过程的最后一步了。首先创建存储用文件夹并赋予其权限。回到 VPS 上 ehForwarderBot 目录。(不出意外的话你应该还在这个目录)
mkdir storage
chmod 777 storage
然后复制并编辑配置文件。
cp config.sample.py config.py
editor config.py
在配置文件中,token 后引号里面的内容替换为你之前获得的 Bot 密钥,admins 后方括号里面填入你自己的 Telegram ID。后面的 6 行是用来配置语音转文字功能的,不是必要功能,目前可以删除各行。如果有兴趣启用该功能的,请到各平台申请 API keys。详情请参见文档 的「ETM」章节。
注意
配置文件 (config.py) 是一个 Python 文件。Python 文件有着严格的格式要求。在编辑该文档的时候请全程使用英文输入模式,并避免更改缩进。每一个括号和引号都应该在适当的地方合上。错误的格式会导致 EFB 运行失败。
本文件使用 4 个空格作为一个缩进级别并避免使用 Tab 字符。
编辑好的结果应类似如下内容。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]
}
0x04: 启动 EFB
到目前为止,EFB 的配置工作已经完成。现在我们只需要启动它,登陆微信就大功告成了。大多数时候,启动微信需要扫描屏幕上的二维码进行授权。这时需要你的 SSH 客户端字体缩小到适当的大小以完整显示整个二维码。
1
python3 daemon.py start
扫描完成之后,手机上会显示「网页微信已登录」,这是因为 EFB 微信从端使用了网页版微信的接口。当终端显示:Start auto replying. 时,即代表登陆成功,这时候就可以按下 Ctrl + C 来隐藏输出了。
0x05: 使用 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」章节。
0x06: 常见问题
Q: EFB 微信从端稳定吗?
只要保持微信手机版网络连接长期稳定,根据上游项目 ItChat 的统计,可长达数个月不掉线。
Q: EFB 微信从端支持哪些类型的消息?
A: EFB 微信从端理论上支持所有网页版微信支持的消息类型。即:
微信→Telegram:文字、图片、视频、分享链接、表情、文档、位置、语音、名片、好友请求、系统通知
Telegram→微信:文字、图片、表情(以图片发送)、视频
所以说,不支持红包、支付、朋友圈、转账、语音通话、视频聊天等网页版不支持的消息类型。
Q: 有些表情收不到
由于微信网页版的限制,部分受版权保护的表情包不能显示出来,故亦不能转发到 Telegram。
详细安装过程
pip3 install libmagic python-magic xmltodict pillow
cd /var/lib/docker/overlay2/7a57e662142a6bf0c1074997b91b60db72aea609073893fa9e71c2a6bfbd5655/diff/opt/ehForwarderBot