使用Telegram收发微信消息

本文最后更新于:几秒前

EH Forwarder Bot 介绍

EH Forwarder Bot (EFB)是一个可扩展的消息隧道聊天机器人框架,可在多个平台之间传递消息,并远程控制您的帐户。

总之就是用这个项目把微信的消息转发到Telegram,但是只用EFB是不够的,要达到用Telegram收发微信,还需要efb-telegram-master(ETM)以及efb-wechat-slave(EWS)

官方文档 官方wiki

使用须知

  1. 微信号需要能够登录微信网页版,如果无法登录那么可以放弃了。
  2. 有用户报告会有微信网页版登录被腾讯封禁的情况,原话如下:

    自 2017 年中旬以来,陆续有用户报告其微信网页版登录被腾讯封禁。表现为用任何方式登录微信网页版提示「当前登录环境异常。为了你的账号安全,暂时不能登录 Web 微信。你可以通过手机客户端或 Windows 微信登录」或类似的提示。大部分用户会在封禁后一天到三个月内解封,不同用户的解封耗时不同。据观测,仅有约不足一成的用户在使用过程中被封禁。该封禁不影响其他客户端的登录。目前封禁的原因尚不明确。

    与此同时,有现象表明 2017 年中旬以来新注册的微信用户不能够使用微信网页版。在初次使用之前,请先访问微信网页版并确认您可以正常使用此功能。若您的账号不能使用该功能,请尝试换用其他账号尝试。

    如果你对网页版登录有要求的话,请慎用此信道。详细的相关信息请参见issue #7

部署教程

部署服务需要一个完整的Linux作为服务器,下面以Debian系发行版为例。

申请Telegram bot

  • Telegram@BotFather 发起对话。</br>
  • 发送/newbot创建bot,期间需要指定bot的名称与用户名(用户名以bot结尾)。
  • 创建完成后 @BotFather 会给你提供一串 数字:英文 形式如 123123123:WERGadsgaeDFGAwetfGq 的HTTP API,将其保存下来留做后续使用。

    请注意,为保护您的隐私及信息安全, 请不要向任何人提供你的 Bot 用户名及密钥,这可能导致聊天信息泄露等各种风险。

完事后需要对 bot 进行进一步配置。

  • 发送 /setprivacy@BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Disable”。
  • 发送 /setjoingroups@BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Enable”。
  • 发送 /setcommands@BotFather,选择刚刚创建好的 Bot 用户名,然后发送如下内容:
    1
    2
    3
    4
    5
    6
    7
    8
    help-显示命令列表。
    chat-生成聊天头。
    rm-从其远程聊天中删除一条消息。
    link-将远程聊天链接到群组。
    unlink_all-取消群组中所有远程聊天的链接。
    info-显示当前电报聊天的信息。
    extra-从从通道访问其他功能。
    update_info-链接的电报组的更新信息。
    到这里 Telegram bot 就创建完了,如果需要给 bot 设置一个头像,可以使用 /setuserpic 指令。

获取 Telegram ID

Telegram 上搜索 @userinfobot 点击 /start 即可获得你的 Telegram ID,一串数字(Chat ID)。

开始部署

首先,你要有一台装有debian系发行版的vps,或者一台能装完整Linux系统的,24h不断电的,有稳定网络的设备作为服务器来部署服务

比如树莓派,或者一台能root的吃灰的安卓手机,通过Linux Deploy来安装linux发行版,理论上没有root也可以用Termux来安装完整Linux环境用来部署服务禁止套娃

另外你的服务器需要能够访问外网,毕竟Telegram是需要外网访问的,如果你的服务器没有办法访问外网,ETM也可以让我们指定代理运行,后续会提到。

安装依赖

  • 以下所有命令需要在root用户下执行,或使用sudo进行提权。
    1
    2
    3
    4
    5
    6
    # 先更新一下
    apt update -y && apt upgrade -y
    # 安装所需依赖和工具
    apt install python3 python3-pip python3-setuptools python3-yaml ffmpeg libcairo2-dev libcairo2 -y
    python3 -m pip install --upgrade pip
    python3 -m pip install --upgrade Pillow

安装主体

1
2
3
4
pip3 install ehforwarderbot efb-telegram-master efb-wechat-slave
pip3 install --upgrade Pillow
# 可选插件,可以把tg的贴纸发送到微信,建议安装
pip3 install "efb-telegram-master[tgs]"

EFB_配置文件

创建/etc/ehforwarderbot/profiles/wechat/config.yaml,写入以下内容:

1
2
3
4
5
6
7
master_channel: blueset.telegram
slave_channels:
- blueset.wechat
#flags部分为实验性功能,更多功能请查看文档:https://github.com/ehForwarderBot/efb-wechat-slave#实验功能
flags:
delete_on_edit: true
#以撤回并重新发送的方式代替编辑消息

ETM_配置文件

创建/etc/ehforwarderbot/profiles/wechat/blueset.telegram/config.yaml,写入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
token: "" #在""中间 填入你之前找botfather申请的api
admins:
- 1234 #把数字修改为上面获取的个人 telegram id
#- 1279136259 #如果,想要多个tg账号都能使用,可在这里加入第二个id或者多个id,去掉开头的#
#flags部分为实验性功能,更多功能请查看文档:https://github.com/ehForwarderBot/efb-telegram-master#experimental-flags
flags:
send_image_as_file: true
#将所有图像消息作为文件发送,以防止主动报文的图像压缩.需要更多的流量,可以关闭,改为false
animated_stickers: true
#启用对动画贴纸的实验性支持启用对动画贴纸的实验性支持,该依赖已包含在教程依赖
default_media_prompt: text
#图片/视频/文件消息没有标题时的占位符文本.

注意!如果你的服务器无法访问外网,可以为ETM专门指定代理!只需要在/etc/ehforwarderbot/profiles/wechat/blueset.telegram/config.yaml文件底部加入以下内容:
1
2
3
4
5
6
request_kwargs:
# ...
proxy_url: http://PROXY_HOST:PROXY_PORT/
# Optional, if you need authentication:
username: PROXY_USER
password: PROXY_PASS

上面是http代理,如果需要socks5代理,需要额外的python软件包:
pip install python-telegram-bot[socks]
然后使用下面的内容:
1
2
3
4
5
6
7
request_kwargs:
# ...
proxy_url: socks5://URL_OF_THE_PROXY_SERVER:PROXY_PORT
# Optional, if you need authentication:
urllib3_proxy_kwargs:
username: PROXY_USER
password: PROXY_PASS

到这里,所需的程序和配置文件都准备完毕,剩下的就是进程管理了。

创建systemd守护进程

创建/etc/systemd/system/efb@.service,写入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=EFB instance for profile %i
Documentation=https://github.com/blueset/ehForwarderBot
Wants=network-online.target
After=network-online.target

[Service]
PrivateTmp=true
ExecStart=/usr/bin/python3 -m ehforwarderbot -p %i
Environment=EFB_DATA_PATH=/etc/ehforwarderbot LANG=zh_CN.UTF-8
TimeoutStopSec=10
Restart=on-failure

[Install]
WantedBy=multi-user.target

运行

使用systemctl start efb@wechat启动服务
使用journalctl -u efb@wechat -e查看输出,将底部的二维码链接打开并用微信扫码登录
使用systemctl enable efb@wechat设为开机自启

结束

到此,整个服务就搭建完毕了,在tg上收发微信真爽,坐拥tg庞大的贴纸包,现在微信斗图没人可以斗过我(笑


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!