通过 telegram 收发微信信息

通过 ehForwarder 项目, 将微信的消息转发到 telegram 上, 并使用 Docker 部署相关服务.

创建容器镜像

创建一个新文件夹用来保存 Dockerfile, 创建 Dockerfile 文件, 写入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
FROM alpine:latest
ENV LANG C.UTF-8
ENV TZ 'Asia/Shanghai'
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
RUN set -ex \
&& apk add --update --no-cache ca-certificates \
&& apk add --no-cache --virtual .run-deps \
py3-pip \
py3-wheel \
py3-ruamel.yaml \
#py3-cryptography \
# efb-telegram-master \
ffmpeg \
libmagic \
libwebp \
# efb-wechat-slave \
py3-pillow
RUN set -ex \
&& pip3 install --upgrade pip \
&& pip3 install ehforwarderbot \
&& pip3 install efb-telegram-master \
&& pip3 install "python-telegram-bot[socks]" \
&& pip3 install efb-wechat-slave
CMD ["ehforwarderbot"]

执行以下命令创建一个属于自己的 efb 镜像:

1
2
3
4
5
docker build . -t efb:latest \
# 如果网络环境需要代理, 则添加下面的参数
--network host \
--build-arg HTTP_PROXY=http://127.0.0.1:8118 \
--build-arg HTTPS_PROXY=http://127.0.0.1:8118

命令执行完成后就可以在 docker image 里看到这个镜像了:

1
2
3
➜  docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
efb latest 6ffe4c77fa63 1 minutes ago 261MB

配置容器运行环境

efb 配置

在 efb 的运行环境目录下创建下面的配置文件 <profile directory>/config.yaml.

因为我们目的是让微信和telegram互通, 所以配置文件如下:

1
2
3
master_channel: blueset.telegram
slave_channels:
- blueset.wechat

如果需要配置多个微信账号:

1
2
3
4
5
master_channel: blueset.telegram
slave_channels:
- blueset.wechat
- blueset.wechat#1
- blueset.wechat#2

master 配置

参考 https://github.com/ehForwarderBot/efb-telegram-master 说明

在 Telegram 上通过 @BotFather  创建一个 bot 用于接受微信数据, 记住 token, 下面配置会用到. 同时, 设置这个 bot 的 /setjoingroups 为 enbale, 让 bot 支持加入群组, 设置 bot 的 /setprivacy 为 disable, 支持获取所有信息.

通过 @userinfobot获取自己的用户 id, 下面配置会用到.

在 efb 的运行环境目录下创建下面的配置文件 <profile directory>/blueset.telegram/config.yaml. 在对应位置填写自己的 bot token 和用户 id.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
##################
# Required items #
##################

# [Bot Token]
# This is the token you obtained from @BotFather
token: <bot_token>

# [List of Admin User IDs]
# ETM will only process messages and commands from users
# listed below. This ID can be obtained from various ways
# on Telegram.
admins:
- <user_id>

##################
# Optional items #
##################
# [Experimental Flags]
# This section can be used to toggle experimental functionality.
# These features may be changed or removed at any time.
# Options in this section is explained afterward.
flags:
# 忽略被静音的人员或者群组的消息
message_muted_on_slave: mute

# [Network Configurations]
# [RPC Interface]
# Refer to relevant sections afterwards for details.
#request_kwargs:
# HTTP proxy
#proxy_url: http://172.18.0.1:8118
# Optional, if you need authentication:
#username: PROXY_USER
#password: PROXY_PASS
# SOCKS5 proxy
#proxy_url: socks5://172.18.0.1:1080
# Optional, if you need authentication:
#urllib3_proxy_kwargs:
# username: PROXY_USER
# password: PROXY_PASS

slave 配置

slave 不需要手动设置, 创建 <profile directory>/blueset.wechat 文件夹即可.

配置容器服务

创建 docker-compose.yml 文件, 输入以下内容:

1
2
3
4
5
6
7
8
version: '3'
services:
efbchat:
image: efb:latest
container_name: efbchat
volumes:
- /path/to/efbchat:/root/.ehforwarderbot/profiles/default/
restart: unless-stopped

启动服务

执行以下命令启动服务:

1
docker-compose up -d efbchat

通过日志查看命令, 用微信扫码登录:

1
docker logs -f efbchat

登录成功转发工具就配置好了.