CentOS 7 安装 efb v2 来收发微信

上一篇文章已经介绍了如何安装 v1,这篇文章来介绍如何安装 v2 版本的 ehforwarderbot

安装依赖

yum install -y gcc file-devel libwebp-tools git screen

# 安装 python3.6 和 pip3
wget https://www.moerats.com/usr/shell/Python3/CentOS_Python3.6.sh && sh CentOS_Python3.6.sh
yum install python3-pip python3-dev python3-setuptools

# 下载 ffmpeg
wget https://www.moerats.com/usr/down/ffmpeg/ffmpeg-git-$(getconf LONG_BIT)bit-static.tar.xz && tar xvf ffmpeg-git-*-static.tar.xz
mv ffmpeg-git-*/ffmpeg ffmpeg-git-*/ffprobe /usr/bin/
rm -rf ffmpeg-git-*

安装 efb

安装 efb(ehforwarderbot)

二选一:

# 安装稳定版
pip3 install ehforwarderbot

# 安装开发版
pip3 install git+https://github.com/blueset/ehforwarderbot.git

安装 ETB(efb-telegram-master)和 EWS(efb-wechat-slave)

# 安装TG和微信模块
pip3 install efb-telegram-master efb-wechat-slave

配置 efb

配置 efb(ehforwarderbot)

mkdir -p ~/.ehforwarderbot/profiles/default
vi ~/.ehforwarderbot/profiles/default/config.yaml

保存下列代码到 config.yaml

master_channel: "blueset.telegram"
slave_channels:
- "blueset.wechat"

这只是登录一个微信号,如果你要同时登录多个微信号,那么配置文件就需要改为:

# 比如我要同时登录并收发3个微信号
master_channel: blueset.telegram
slave_channels:
- blueset.wechat
- blueset.wechat#moe123
- blueset.wechat#rats321
# #号后面指定id,只能是字母、数字、下划线

配置 ETB

# 同样的也建在 default 文件夹,如果你上面更改了 default 文件夹,那这里也要更改
mkdir ~/.ehforwarderbot/profiles/default/blueset.telegram
vi ~/.ehforwarderbot/profiles/default/blueset.telegram/config.yaml

保存下列代码到 blueset.telegram/config.yaml

token: "机器人的 TOKEN"
admins:
- 你自己的 Userid
flags:
    # 关闭自动语言设置,使用 systemd 启动时默认中文
    auto_locale: false

配置 EWS

# 同样的也建在 default 文件夹,如果你上面更改了 default 文件夹,那这里也要更改
mkdir ~/.ehforwarderbot/profiles/default/blueset.wechat
vi ~/.ehforwarderbot/profiles/default/blueset.wechat/config.yaml

保存下列代码到 blueset.wechat/config.yaml

flags:
    # tg 端编辑消息时以撤回并重新发送的方式发送到微信
    delete_on_edit: true
    # 每当请求会话列表时,强制刷新会话列表
    refresh_friends: true
    # 使用 iTerm2 图像协议 显示二维码。本功能只适用于 iTerm2 用户
    imgcat_qr: true
    # 在收到第三方合作应用分享给微信的链接时,其附带的预览图将缩略图上传到 sm.ms
    app_shared_link_mode: upload

设置守护进程

创建 efb 服务

vi /etc/systemd/system/efb.service

保存以下配置到 efb.service

[Unit]
Description=EH Forwarder Bot instance
After=network.target
Wants=network.target
Documentation=https://github.com/blueset/ehForwarderBot

[Service]
Type=simple
Environment='LANG=zh_CN.UTF-8' 'PYTHONIOENCODING=utf_8' 'EFB_DATA_PATH=/root/.ehforwarderbot'
ExecStart=/usr/local/bin/ehforwarderbot --verbose
Restart=on-abort
KillSignal=SIGINT

[Install]
WantedBy=multi-user.target

使用 systemctl 管理 efb

# 开机启动
sudo systemctl enable efb

# 启动
sudo systemctl start efb

# 关闭
sudo systemctl stop efb

# 重启
sudo systemctl restart efb

# 查看运行详情
sudo systemctl status efb

# 查看更加详细的运行详情
sudo systemctl status efb -l

登录 efb

  • 如果不使用 systemctl 管理,则执行 ehforwarderbot --verbose 进行启动
  • 如果使用 systemctl 进行管理
    1. sudo systemctl start efb
    2. sudo systemctl status efb -l 然后复制二维码连接到浏览器,扫码登陆

安装中遇到的错误

缺少 cairo 依赖

描述:

raise OSError(error_message) # pragma: no cover
OSError: no library called "cairo" was found

解决方案:

yum install -y cairo-devel libtiff* && pip3 install cairosvg cairocffi

描述:

Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-g3q2qdl8/cairocffi/

原因:pip 版本过低

解决方案:

pip3 install --upgrade pip

python 安装失败

描述:

configure: error: in `/usr/local/src/Python-3.6.4':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details

解决方案:
yum install gcc -y

描述:

zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1

解决方案:
yum install zlib* -y

pip 安装依赖失败

描述:
install --record /tmp/pip-f5erwx9h-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-34xxo8de/cairocffi/

解决方案:

pip install -U setuptools
pip install -U wheel

如何迁移

  1. 保留 /root/.ehforwarderbot/profiles/default/blueset.telegram 下的 config.yamltgdata.db 文件
  2. 保留 /root/.ehforwarderbot/profiles/default/blueset.wechat 下的 wxpy_puid.pkl 文件(这个文件存着对应微信好友的 UID,与 tgdata 的 chatassoc 表相对应)