微信会针对使用第三方客户端的用户实行登录封禁,即无法再使用微信网页版登录,请自行考虑风险。
不喜欢 Docker 的同学可以参考手动安装。
两年多前,青小蛙就在使用 EFB V1 了,并且还写过一篇比较详细的教程:
https://www.appinn.com/efb-tutorial-with-docker/
目前此版本仍然可用,但 EFB 已经升级到了 V2,虽然还处于 Beta,但基于 V2 的各种中间件,以及支持 QQ 互通,所以新用户还是使用 V2 吧。
介绍
EFB 全称 ehForwarderBot,是一个可扩展的信息隧道机器人开源框架,支持通过聊天机器人从不同的 IM 工具收发信息,比如通过 Telegram 收发微信消息,通过 Telegram 收发 QQ 消息,通过 Telegram 收发 Facebook Messenger 等。
安装 Docker,以 Ubuntu 为例
鉴于每个人的系统环境不同,无论多么详尽的安装教程都会产生各种各样的问题,而这些问题绝大多数都与 EFB 无关,更多的是系统环境配置问题,所以本着多一事不如少一事的原则,这里使用 docker 安装。而 Docker 能够有效避免不同用户系统环境不同导致的问题。
曾经写过 Docker 官方推荐的安装方式,不过目前的 Ubuntu 18.04+ 版本更推荐使用 apt 安装,简单快捷:
apt update
apt install docker.io
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
即可完成安装。
其它平台请参考官网,安装 Docker CE 即可。
配置 EFB V2
首先创建一个文件夹,要先创建几个文件:
├── blueset.telegram
│ ├── config.yaml
│ └── tgdata.db *
├── blueset.wechat *
│ ├── wxpy.pkl *
│ └── wxpy_puid.pkl *
├── config.yaml
└── docker-compose.yml **
标记 * 号为自动生成的路径和文件,可以不用管它,** 可见最后。
config.yaml
在当前路径下创建 config.yaml
文件
下面是一个拿来可用的 config.yaml
示例:
master_channel: blueset.telegram
slave_channels:
- blueset.wechat
middlewares:
- filter.FilterMiddleware
里面包含了 1 个中间件:过滤指定会话功能。
blueset.telegram/config.yaml
创建 Telegram 主频道配置文件 config.yaml
$ mkdir blueset.telegram
$ touch blueset.telegram/config.yaml
下面是需要修改的 blueset.telegram/config.yaml
示例文件:
token: "Telegram Bot's token"
admins:
- 你的 Telegram User ID
-
Telegram User ID 与这个机器人 @get_id_bot 聊天,输入
/my_id
即可 - Telegram Bot’s token 参考这篇文章,配置机器人部分
运行
修改 docker-compose.yml 文件:
efbv2:
image: scavin/docker-efbv2
container_name: efbv2
restart: always
volumes:
- ./:/root/.ehforwarderbot/profiles/default/
然后运行:
docker-compose up -d
最后,使用下面的命令查看微信登录二维码:
docker logs efbv2
如何使用过滤
选择你要屏蔽的对象,直接回复 filter`
即可
(完)
有问题可直接回复。
批量绑定公众号
tag:REPL
支持批量绑定公众号
此方法需要一定的操作经验,请谨慎。最糟糕的结果是绑定混乱,有可能需要重新绑定所有联系人,如能承受此结果,可随意折腾。
以 REPL 模式启动 EFB
REPL 模式同样需要配置 EFB。可以在第一次运行 EFB 的使用,主要用来进入维护模式,比如:绑定公众号到某一个 Group。
$ docker run -d --name efbv2 $(pwd):/root/.ehforwarderbot/profiles/default/ scavin/docker-efbv2:REPL
以 REPL 模式启动 EFB
$ docker exec -it efbv2 ash
来源在这里,但注意这里有一些错误,以下面的为准:
EWS & ETM:批量绑定(公众号等)
Eana Hufwe edited this page on 25 Nov 2018 · 2 revisions
Written for EFB 2.0.0b10; ETM 2.0.0b11; EWS 2.0.0a12
注意:
本内容是一个非正式支持的 Hack,且未经过测试。项目维护者及作者没有义务对下述内容提供任何支持,且不对该内容产生的任何后果负任何责任。 请在充分理解下述内容原理的前提下操作。You have been warned.
将 ETM 的 Telegram Bot 添加到目标绑定群组、发送 /info 以获取该群组 ID。群组 ID 应是一个负整数。下面以 -3324225 为例。
在当前的 profile 中设置 ETM 为主端,并启用 EWS。
以 REPL 模式启动 EFB
python3 -i -m ehforwarderbot [-p PROFILE_NAME]
操作 REPL
>>> from ehforwarderbot import coordinator
>>> from efb_telegram_master import utils
>>> # 获取 ETM, EWS 运行实例
>>> etm = coordinator.master
>>> ews = coordinator.slaves['blueset.wechat'] # 如有运行多个实例,需追加实例 ID
>>> # 获取会话列表
>>> chats = ews.get_chats()
>>> # 提取出所有需要批量绑定的会话,例如这里要提取所有非公众号
>>> # 具体可使用的参数请参考 EFB 和 EWS 的说明文档
>>> to_link = [i.uid for i in chats if i.vendor_specific.get('is_mp', False)]
>>> # 绑定到指定会话
>>> tg_grp_id = -123456
>>> for i in to_link:
... etm.db.add_chat_assoc(master_uid=utils.chat_id_to_str(etm.channel_id, tg_grp_id),
... slave_uid=utils.chat_id_to_str(ews.channel_id, i),
... multiple_slave=True)
>>> # 退出 EFB 实例并以一般方式重新启动
>>> ^D
动态贴纸支持
tag:dev
支持动态贴纸
2021.12 更新
中间件 filter.FilterMiddleware 有几个特别应用:
EFB_DATA_PATH/profiles/YOUR_PROFILE/blueset.telegram/config.yaml
文件:
flags:
your_message_on_slave: "mute" ## 不转发自己的消息:
message_muted_on_slave: "mute" ## 不转发微信中设为静音的消息
ews_mp: true ## 不转发公众号:
另外对于 Web 微信不能登录的问题,可参考:
最后,EFB V2 的 Docker 镜像也已更新: