Telegram 接收并回复微信消息

本文环境:安装了 Raspbian 的树莓派, EFB 2.0 。

EFB (EH Forwarder Bot) 是由 Eana Hufwe 编写的框架,可以让用户在不同的聊天平台上互相通信。本文介绍如何使用 EFB,在树莓派上建立一个 telegram 机器人,实现 telegram 上查看和回复微信消息的功能。也可以在 VPS 上实现这一功能。

准备

获取一个 Telegram Bot

首先在 Botfather 那里注册一个 bot,获得 token 。

知道自己的 Telegram ID

get_id_bot 处得到自己的 ID 。

树莓派配置

由于 raspbian 的 stable 库中提供的 python 版本为 3.5,而 EFB 最低要求 3.6 。所以我选择将 raspbian 升级到 testing 版本。

vi /etc/apt/sources.list

将其中的 stretch 改为 testing,然后升级。

sudo apt update
sudo apt dist-upgrade -y
sudo apt autoremove -y

升级的过程有点漫长,结束后发现报错,提示 udev 的 systemd 服务没有启动成功,导致 udev 没有配置完成,于是几个其他依赖 udev 的包都没有配置。这与网络上 failed to start udev kernel device manager 的这个问题情况相同,清除掉 raspi-copies-and-fills 这个包可以暂时解决:

sudo apt purge raspi-copies-and-fills -y

由于网络原因,安装 proxychains:

sudo apt install proxychains -y

设置 proxychains :

sudo vi /etc/proxychains.conf

socks5 127.0.0.1 1081

这里使用了树莓派上运行在 1081 端口上的 SSR 代理。

解决 proxychains 找不到库的问题:

sudo vi /usr/bin/proxychains

LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libproxychains.so.3

安装 EFB

安装依赖(来源网络,是否有多余的未经检验):

sudo apt install ffmpeg libmagic-dev libwebp-dev libjpeg8-dev python3-yaml python3-setuptools python3-wheel -y

安装 EFB 框架

pip3 install ehforwarderbot

安装 EFB Telegram Master Channel (ETM)

pip3 install efb-telegram-master

安装 EFB WeChat Slave Channel (EWS)

pip3 install efb-wechat-slave

配置

编辑 EFB 配置文件:

mkdir -p ~/.ehforwarderbot/profiles/default ~/.ehforwarderbot/profiles/default/blueset.wechat
vi ~/.ehforwarderbot/profiles/default/config.yaml
~/.ehforwarderbot/profiles/default/config.yaml
1
2
3
master_channel: blueset.telegram
slave_channels:
- blueset.wechat

编辑 ETM 配置文件:

vi ~/.ehforwarderbot/profiles/default/blueset.telegram/config.yaml
~/.ehforwarderbot/profiles/default/blueset.telegram/config.yaml
1
2
3
4
5
token: "123456789:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
admins: 123456789
flags:
chats_per_page: 20
network_error_prompt_interval: 250

此处的 tokenadmin 就分别是你之前准备好的机器人令牌和用户 ID 。

后台启动

考虑到微信需要扫码,使用 screen 运行后台。

sudo apt install screen -y

screen -S w2t

proxychains ehforwarderbot

Ctrl + A + D 可退出。

恢复会话:

screen -r w2t

使用

在与机器人的对话中,使用 /chat 命令可以选择对象,返回一个会话头,回复此会话头可以与相应的用户聊天。Telegram 中直接回复他人的消息就可以在相应微信对话中回复。