使用Telegram收发微信消息

基于EH Forwarder Bot 2.0

Posted by Nathaniel on 2018-09-10

使用Telegram收发微信消息

Why Telegram?

封闭而落后的微信已经逐渐无法跟上时代的发展脚步,中立而现代的Telegram在Whatsapp被Facebook收购后,逐渐成为了广大Geek的首选,它不仅功能强大,支持10万人群组,支持各种机器人,消息全平台同步,而且也完全免费且开源。由于其GPL License以及开放API,第三方Telegram客户端在市场上百花齐放。其安全性尚有争议,在这里本文提示,尽量不要使用任何不开源的第三方Telegram客户端。

Why This bot?

当然,使用Telegram可以体验到先进的IM软件的一切优点,但由于种种原因,Telegram并无法在中国大陆直接使用,这就导致了说服同学、家人、朋友使用该软件可谓是难上加难,不管Telegram多么好,他们依旧要继续使用落后的微信,而我们使用IM通常是还是要和这些同学、朋友联系的,不然IM就失去了它的意义。这时候,一个解决方案出现了,由blueset开源的ehForwarderBot提供了一种几乎完美的解决方案,那就是利用Telegram收发微信消息。

Why this guide?

现有的网络上的Telegram微信互联教程基本都是基于ehForwarderBot1.x的,而同样的方法在2.x时代已经不再适用,而官方文档是全英文的,因此我在此处提供一个概要的指南来提供最新解决方案的搭建问题。

原理

这里就不详细介绍了,想仔细了解请参阅官方文档。简单的来说就是 EhforwarderBot是一个中间平台,master端为Telegram对应的模块,可以收发微信消息,同时进行一些简单的操作,利用Telegram的Bot机制实现。slave端则为模拟微信Web端的操作,通过微信Web端的代码分析实现消息的收发。注意,正如原文中所提示,你使用该Bot时可能会更换IP地址,因而可能会导致你的微信Web端登陆被封禁一段时间,对微信Web端有依赖的请谨慎使用本Bot(手机端不受影响)。

准备工作

首先你需要有一台墙外的VPS,(理论上你可以将这个Python程序装入Docker容器中然后部署至Heroku免费的deyno上,这里由于时间限制暂时先不讨论该方案),因为该VPS需要能直接访问Telegram和微信的服务器。

服务器端你需要有python3.6或以上版本,客户端需要能够连接至服务端。

申请Bot并配置

首先在Telegram里面搜索BotFater,添加后输入 /start 启动

然后 /newbot 创建一个新的Bot

接下来输入Bot名字

然后输入Bot的ID,必须以bot结尾

创建成功后记得使用/setprivacy 然后输入disable 这样efb的 /link功能才可以正常使用。

记好这个bot的ID和token。

正式开始

安装python3.6以及pip3

python3.6安装方式:

wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
tar xvf Python-3.6.3.tgz
cd Python-3.6.3
./configure --enable-optimizations
make -j8
sudo make altinstall
python3.6

可能要用到的依赖:

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev
sudo apt-get install -y libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
sudo apt-get install -y libncurses5-dev libncursesw5-dev xz-utils tk-dev
sudo apt-get install build-essential libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

如果安装的python3.6没有自带pip,则:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3.6 get-pip.py

在安装完python3之后,输入:

 pip3 install ehforwarderbot

这样Ehforwarderbot的核心部分就安装好了,接下来该安装Telegram主端和wechat从端了。

pip3 install efb-telegram-master
pip3 install efb-wechat-slave
创建所需要的目录

在这里我们先创建总的 Ehforwarderbot的目录

cd ~
mkdir .ehforwarderbot
cd .ehforwarderbot
mkdir profiles
cd profiles
mkdir default
cd default
touch config.yaml

其中config.yaml添加如下内容:

master_channel: blueset.telegram
slave_channels:
- blueset.wechat

接下来进行主端的目录配置(以下操作在~/.ehforwarderbot/profiles/default/目录下进行)

mkdir blueset.telegram
cd blueset.telegram
touch config.yaml

其中config.yaml添加如下内容:

token: "你自己创建的bot的token,可以从botfather处获得"
admins:
- 你的telegram id,可以从jsondumpbot那里获得

接下来进行从端的目录配置(以下操作在~/.ehforwarderbot/profiles/default/目录下进行)

mkdir blueset.wechat
cd blueset.wechat
touch config.yaml

其中config.yaml添加如下内容:

由于本人使用的是iterm2因此添加以下内容用于显示登陆二维码,其他用户可不必添加任何内容。

flags:
imgcat_qr: true

配置完成后:

ehforwarderbot

扫描二维码登陆即可使用Telegram收发微信消息了。

使用细节

在Telegram中搜索你的Bot的ID,找到你之前创建的Bot,并输入/start开启。

/chat 张三 从而根据提示来和张三聊天

这样使用有点别扭,先随便添加一个好友创建一个Telegram群组,然后踢出那个好友,并添加你的bot,然后

/link 李四 根据提示选择你的这个群组,link成功后这个群组就相当于你和李四的微信对话了,可以正常使用了。

想要让在ehforwarderbot后台运行请使用

nohup ehforwarderbot &