分类 efb 下的文章

https://blog.ay2.top/archives/71

go-cqhttp初始配置

发布于 2024-07-03  43 次阅读


AI 摘要

文章概述:本文介绍了go-cqhttp的初始配置步骤,包括如何生成和使用device.json与session.token。启动go-cqhttp前需先运行签名程序,并完成滑块和短信验证等步骤。在使用过程中要注意腾讯的管控规则,避免因违规而冻结账号。重要提示包括发送消息长度、指令格式及发送频率的控制。

本文章适用于(点我展开)

go-cqhttp中config.yml已经配置完毕,需要启动go-cqhttp.bat登录账号生成device.json的

写在前面(点我展开)

go-cqhttp成功登录后生成的session.token和device.json不要发送给别人,否则可能会被盗

运行签名程序(如有)

示例:运行签名程序Start\_Qsign.bat

强烈建议使用签名程序,否则可能会遇到code45风控

等待签名服务器运行,就可以进入接下来的操作啦~

运行go-cqhttp

双击运行go-cqhttp.bat

可能存在的验证方式

滑块验证

登录需要滑条验证码,请验证后重试...请输入(1 - 2):

此时输入2,手动提交,因为自动提交总是有问题()

请前往该地址验证->***请输入ticket:

如何获取ticket?

打开给出的链接(终端支持ctrl+鼠标单击打开链接的也建议手动打开,因为这样很容易导致打开的链接不完整)

按下ctrl+shift+I或者F12打开开发者工具,选择网络,如果是英文的就是Network

完成滑块验证是个人都行吧,列表中会新出来一个“cap\_union\_new\_verify”,点击进去,选择“相应”一栏

复制“ticket”对应的内容(千万不要将引号复制了!!!),有点长,然后粘贴到go-cqhttp中

请注意:如果某些命令行在按下ctrl+v后出现的内容不是你复制的内容,而是^v,那么此时你应该尝试使用右键粘贴,少数命令行支持鼠标中键粘贴

然后按下回车提交即可

发送验证码

账号已开启设备锁,请选择验证方式:1. 向手机 114*******5 发送短信验证码2. 使用手机QQ扫码验证.请输入(1 - 2):

如果选择1,将会向qq绑定的手机发送一个验证码,输入验证码即可,如果选择2,会给出一个链接,例如:

账号已开启设备锁,请前往 -> https://accounts.qq.com/safe/verify?_wv=2&_wwv=128&envfrom=double-check&uin=114514 <- 验证后重启Bot.

这时候怎么办?只需将这个链接发送给手机端,手机端打开链接验证即可

如果不能验证,你尝试可以换一种方式或干脆使用二维码生成器将这个链接生成为二维码然后给手机扫描后登录

登录完成后,再次打开go-cqhttp.bat就可以啦~

温馨提醒

腾讯对于qq机器人管控特别严,如果你不想被封号,请在使用go-cqhttp时一定要遵循以下注意事项!

  • 在使用go-cqhttp之前,要运行签名服务器
  • 发送消息不要太长(超过三行)
  • 如果制作那种有指令的机器人,指令不要加特殊字符,如/菜单 \签到
  • 不要让机器人连续发言,设置一定的冷却时间
  1. 运行签名程序(如有)
  2. 运行go-cqhttp

    1. 可能存在的验证方式

      1. 滑块验证
      2. 发送验证码
  3. 温馨提醒

https://youxam.one/posts/qq-to-telegram/qq-to-telegram.html

什么是 ehForwarderBot

EH Forwarder Bot(EFB)是一个可扩展的消息隧道聊天机器人框架。他有一个或多个从端和一个主端,我们可以从主端接受从端消息,也可以通过主端控制从端发送消息。

举例来说,这篇文章中,我将把 QQ 作为从端,Telegram 作为从端,然后将他们通过 EFB 连接起来。这样,我可以通过 Telegram 在 QQ 上聊天。

需要的东西

  1. 一个 Telegram 账号,一个 QQ 账号。
  2. 代理,或者一个可以访问 Telegram 的 Linux 服务器。 推荐使用国外的服务器。如果使用代理,那么需要通过轮询 Telegram 获取消息,还有图片,视频,文件等多媒体数据,对时延和带宽要求都比较大。而国外服务器可以使用 webhook, 占用资源比较少,带宽也比较大(比如说 azure 不限制带宽)。

文档

  1. EFB 文档 (大概率用不上,但是还是放一下)
  2. EFB Telegram Master 文档
  3. EFB QQ Slave 文档
  4. OICQ http-api 文档

第一步:安装依赖

  1. Python >= 3.6
  2. ffmpeg, libmagic, libwebp, libcairo, python3-dev

    bash

    sudo apt install ffmpeg libmagic-dev libwebp-dev libcairo-dev python3-dev
  3. pillow
  4. EH forwarder bot

    bash

    pip3 install ehforwarderbot
  5. efb-qq-slave (QQ 从端,我添加了视频和文件的支持)

    bash

    pip3 install -U git+https://github.com/YouXam/efb-qq-slave
  6. efb-telegram-master (Telegram 主端,我修复了一下关于视频和 extra command 的 bug)

    bash

    pip3 install git+https://github.com/YouXam/efb-telegram-master
  7. 升级 zipp

第二步:配置

1. EH forwarder bot

运行 efb-wizard, 它会指引你选择主端和从端,以及主端的基础设置(包括创建机器人等)。

配置文件名称,直接回车即可。

1. Choose master channel
● Telegram Master

选择主端,上下键选择 Telegram Master 按回车确定。

Instance name to use with Telegram Master: [default instance]

主端实例名称,直接回车即可。

2. Choose slave channels (at least one is required).
[ =: Shift up; -: Shift down; Backspace: Remove ]
● + Add
  ✓ Submit

上下键选择 Add 回车,选择 QQ Slave,按回车确定,Instance name 直接回车,再选择 Submit 提交。

3. Choose middlewares (optional).
[ =: Shift up; -: Shift down; Backspace: Remove ]
● + Add
  ✓ Submit

中间件,选择 Submit 回车即可。

You have chosen to enable the following modules for profile "default".

Master channel: Telegram Master

Slave channel:
- QQ Slave

Would you like to continue?
● Save and continue             
  Change master channel settings
  Change slave channel settings 
  Change middleware settings

直接回车。

...
We will now guide you to set up some modules you have enabled. But you
may still need to configure other modules manually if necessary.
Press ENTER/RETURN to start setting up blueset.telegram.

Telgram 主端设置,按回车进入。

...
[yN] Do you want to run ETM behind a proxy? [n]

如果你使用代理,那么选择 y,然后选择代理协议,主机,端口,用户名,密码。

Do you need help creating a bot?
● No, I have already made one according to the docs.
  Yes, please tell me how to make one.

这里如果你没有创建机器人,请选择 Yes。

>>> Step 1: Search @BotFather on Telegram, or follow the link below.
You should be able to see a bot named “BotFather”.
    https://t.me/BotFather

在 Telegram 中搜索 BotFather,或者点击链接

>>> Step 2: Send /newbot to BotFather to create a new bot. Follow its
prompts to give it a name and a username. Note that its username must
end with “bot”.

After setting its username, you should receive a long line of code
called “token”. Keep it with you securely, we will need that later on.

发送 /newbot 给 BotFather,按照提示创建机器人,注意机器人的用户名必须以 bot 结尾。

记录下来机器人的 token,我们后面会用到。

Send /setjoingroups to BotFather, choose the bot you just created,
then choose “Enable”. This will allow your bot to join groups.

Send /setprivacy to BotFather, choose the bot you just created, then
choose “Disable”. This will allow your bot to process all messages in
groups it joined, not just commands.

发送 /setjoingroups 给 BotFather,选择刚刚创建的机器人,选择 Enable,这样机器人就可以加入群组了。

发送 /setprivacy 给 BotFather,选择刚刚创建的机器人,选择 Disable,这样机器人就可以在群组中处理所有消息了。

输入刚刚记录的 token。

Do you want to update the list of commands of your bot?
● Yes, please update.                      
  No, I want to keep the old commands list.

是否更新机器人的命令列表,选择 Yes。

Do you need help getting your ID?
● No, I already know my ID.            
  Yes, I want to know how to get my ID.

是否需要获取自己的 ID,选择 Yes。

然后向机器人发送一条消息,把机器人回复的 ID 复制过来。

[yN] Do you want to config experimental features? [n]

是否配置实验性功能,看个人需求。

[yN] Do you want to adjust network configurations? (connection timeout) [n]

是否调整网络配置,回车即可。

[yN] Do you want to enable RPC interface? [n]

是否开启 RPC 接口,回车即可。

配置完成!

2. 配置客户端 (gocqhttp)

  1. 下载 go-cqhttp

GitHub Releases 下载。

  1. 编辑 config.yml 配置文件

注意这几个配置项。

yaml

account: # 账号相关
  uin: 1234567890 # QQ账号
  password: '' # 密码为空时使用扫码登录
servers:
  # 添加方式,同一连接方式可添加多个,具体配置说明请查看文档
  #- http: # http 通信
  #- ws:   # 正向 Websocket
  #- ws-reverse: # 反向 Websocket
  #- pprof: #性能分析服务器

  - http: # HTTP 通信设置
      address: 127.0.0.1:5700 # HTTP监听地址
      timeout: 5      # 反向 HTTP 超时时间, 单位秒,<5 时将被忽略
      long-polling:   # 长轮询拓展
        enabled: false       # 是否开启
        max-queue-size: 2000 # 消息队列大小,0 表示不限制队列大小,谨慎使用
      middlewares:
        <<: *default # 引用默认中间件
      post:           # 反向HTTP POST地址列表
        - url: 'http://127.0.0.1:8000'                # 地址
          secret: ''             # 密钥

3 运行 gocqhttp, ./gocqhttp

注意,如果你密码登录不上,就用扫码登录。但是扫码登录要求和手机必须在同一局域网,如果你有在服务器上运行的需求,可以先本地运行登录,再把 device.jsonsession.token 拷贝到服务器上。

3. 配置 efb-qq-slave

  1. 安装 efb-qq-plugin-go-cqhttp

bash

pip3 install git+https://github.com/YouXam/efb-qq-plugin-go-cqhttp.git
  1. milkice.qq 从端创建 config.yaml 配置文件

配置文件通常位于 ~/.ehforwarderbot/profiles/default/milkice.qq/config.yaml,若不存在则创建。

样例配置文件如下:

yaml

Client: GoCQHttp                      # 指定要使用的 QQ 客户端(此处为 GoCQHttp)
GoCQHttp:
    type: HTTP                        # 指定 efb-qq-plugin-go-cqhttp 与 GoCQHttp 通信的方式 现阶段仅支持 HTTP
    access_token:
    api_root: http://127.0.0.1:5700/  # GoCQHttp API接口地址/端口
    host: 127.0.0.1                   # efb-qq-slave 所监听的地址用于接收消息
    port: 8000
    remove_reply_at: true            # 是否移除发送到 QQ 中的回复消息中的 @

第三步: 运行

保证 gocqhttp 运行正常

此时看看 Telegram,应该就能收到消息了。

第四部:将 QQ 群和联系人绑定到 Telegram 群组

先建立一个 Telegram 群组,然后向机器人发送 /link(注意,后面可跟随正则表达式筛选群名/好友名)。

单击选择,绑定成功后,在 Telegram 群组中给机器人更改群组信息的权限,在群组中发送 /update_info 可将 QQ 的名称和头像同步至 Telegram。

其他的一些命令

直接向机器人回复,可发送到对应的 QQ 群或联系人,一定时间内,无需回复也可以继续聊天。

/chat

如果想主动发起聊天,可以使用 /chat 命令,后面跟随 QQ 群或联系人的名称(正则表达式)。

/rm

回复一条消息并使用 /rm, 可在从端撤销。直接编辑 Telegram 消息会先撤销旧的,再发送新的。

关于 webhook

默认情况下,主端使用的是轮询,想要使用 webhook,也很简单。

保证你的服务器有公网 IP,并且开放了 8443 端口(或者是 80,88,443,Telegram 只支持这 4 个)。

生成证书

bash

openssl req -newkey rsa:2048 -sha256 -nodes -keyout server.key -x509 -days 3650 -out server.crt

注意 CN(Common Name) 一定要填写你的公网 IP 或者域名。

然后在 config.yaml 中添加

yaml

webhook:
    start_webhook:
        listen: 0.0.0.0
        port: 8443
        url_path: TOKEN # 这个可以随便填,但是要和下面的一致
        key: /root/crt/server.key
        cert: /root/crt/server.crt
        webhook_url: https://<你的IP或域名>:8443/TOKEN

重启 ehforwarderbot 即可。

python -m venv ehforwarderbot

pip*
source ehforwarderbot/bin/activate

efb-wizard

docker run -d --restart=always --name qsign -p 127.0.0.1:5702:8080 -e BASE_PATH=/srv/qsign/qsign/txlib/8.9.63 xzhouqd/qsign:core-1.1.9

https://514.live/archives/2023/4-efbwechattg/

研究研究

微信与TG互通 基于EFB的ComWechat搭建教程

23年10月04日24年08月02日

[](#起因 "起因")起因

由于众所周知的原因,微信在除了IOS系统上之外,只有一个残废的FCM推送,这个推送会在收到消息时唤醒微信…然后再通过微信的信息通道推送给手机,这完全失去了使用推送的意义。
因此有人开始研究将微信的消息转发到Telegram上,这篇文章将为你介绍详细的步骤。

[](#优势 "优势")优势

首先我们需要明确Tg相比于微信优势在哪里。
1.永久的云端消息记录存储
Tg拥有永久的云端消息记录存储,并且按照Tg那边的说法,你的信息是很安全的(这个看个人,详情请搜索Tg信息保护相关内容)。
2.多端登陆账号
Tg可以在很多客户端上登陆账号且没有数量限制。你可以在手机上登陆一个、电脑上登陆一个、平板上登陆一个、甚至虚拟机里登陆一个。
3.占用更小、耗电更少
Tg拥有十分丝滑的体验,尤其是各种开源的第三方客户端,Tg仅仅只需要占用200M上下的RAM即可,而微信即使没有联系人,也需要占用将近2G的RAM,差距巨大。并且Tg并不需要保留后台,可以享受到推送服务。

[](#介绍 "介绍")介绍

因此将微信的消息转发到Tg上是一个很优秀的方案,同时也可以将Tg与微信的联系人合并方便联系。本文使用了 ComWechat 服务作为从端,使用的 API 为微信桌面端,这意味着使用此服务将无法使用微信桌面端,因为微信限制同时只能在线一台设备。如有使用需求请自行考虑,本教程对产生的一切后果不负任何责任。

[](#前提环境 "前提环境")前提环境

1.一台在 国外(或能够进行外网访问) 的 VPS,架构为 X86,ARM 架构大概率无法部署。
推荐系统为 Ubuntu ,下文以此系统为例
要求 VPS 运行内存不小于 2G,且最好再开启 2G 的交换内存
实测内存占用与微信好友数量成正比,好友数与群聊数相加小于100个的情况下,原生2G内存足矣
VPS拥有一个固定公网 iPv4 地址
2. 一台最好系统为 Windows 的电脑 (需要使用 VNC 服务,其他系统理论也可以)
3. 一部拥有微信的手机或能够进行微信扫码的设备(扫码登录远程微信用)
4. 最好两个 Telegram 账号,要求互为好友且至少有一个能正常登陆
5. 一个正常的大脑,一双正常的眼睛,善于举一反三的思维
6. 在提出问题之前请仔细、反复地再阅读一遍教程

[](#准备 "准备")准备

[](#创建机器人-Token "创建机器人 Token")创建机器人 Token

首先在手机 Telegram 或桌面端 Telegram 应用程序中进行如下操作

  1. @BotFather 或点击 这段文字 来对 BotFather 进行私聊
  2. 发送指令

    1
    /newbot
  3. 在创建完毕之后,你将获取到一串 Bot 的 API Token,将之保存在一处地方,不要将他泄露给其他人,因为通过 Token 任何人都可以控制你的 Bot。
  4. 然后依据提示进行机器人的用户名、昵称等配置

    机器人用户名须以 bot 结尾
  5. 接着进行两项基础配置,继续向 BotFather 发送下列命令

    1
    2
    3
    4
    5
    6
    7
    8
    /setprivacy
    #选择 “Disable”
    /setjoingroups
    #选择 “Enable”
    /setprivacy
    #选择 “Disable”
    /setjoingroups
    #选择 “Enable”
  6. 接着进行最后一项配置,发送

    1
    /setcommands

    然后发送下面的内容

    1
    2
    3
    4
    5
    link - 将会话绑定到 Telegram 群组
    chat - 生成会话头
    recog - 回复语音消息以进行识别
    update_info - 更新群组名与头像
    extra - 获取更多功能

[](#获取用户-ID "获取用户 ID")获取用户 ID

与 @get\_id\_bot 私聊或点击 这段文字 来对 Get ID Bot 进行私聊,发送

1
/start

获取用户 ID,将之保存到一处地方

[](#配置 "配置")配置

[](#服务器初始化 "服务器初始化")服务器初始化

可不做这一步,一般没问题,速度慢请查询换源相关,或查询VPS带宽限制

1
2
sudo apt update
sudo apt upgrade

[](#安装-Docker "安装 Docker")安装 Docker

1
curl -fsSL https://get.docker.com | bash

[](#安装-Docker-compose "安装 Docker-compose")安装 Docker-compose

1
apt -y install docker-compose

创建配置文件 docker-compose.yaml

1
2
mkdir comwechat
touch docker-compose.yaml

使用vim/nano等工具编辑该文件

1
nano docker-compose.yaml

输入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
version: '3.3'
services:
wechatpchook:
container_name: comwechat
environment:
- VNCPASS=YourPassword
- COMWECHAT=https://github.com/ljc545w/ComWeChatRobot/releases/download/3.7.0.30-0.1.0-pre/3.7.0.30-0.1.0-pre.zip
volumes:
- "/root/WeChat/Files/:/home/user/.wine/drive_c/users/user/My Documents/WeChat Files/"
- "/root/WeChat/Data/:/home/user/.wine/drive_c/users/user/Application Data/"
privileged: true
network_mode: host
image: tomsnow1999/docker-com_wechat_robot:latest
注:大部分 SSH 客户端可以使用右键粘贴剪贴板内容
以下内容受时效性影响可能较大,请参照教程时间,自行更换版本,或沿用此版(可能有BUG)

将其中 - VNCPASS=YourPassword 中的 YourPassword 改为一个你自己喜欢的密码并记住。

若使用nano编辑器则使用 Ctrl + X 退出编辑 若提示 Y/N 请输入 Y 保存。
然后会提示修改文件名 回车退出即可 不要修改。

其他编辑器请自行保存并退出。

使用 cat 命令检查内容

1
cat docker-compose.yaml
后文所有编辑的文件均建议检查,不再赘述
若新手不习惯命令行操作,可参考以WinSCP为代表的远程文件管理软件,这里不进行教学

此时检查屏幕中内容无误后按 ESC 退出,进行下一步。

[](#启动-Docker-镜像 "启动 Docker 镜像")启动 Docker 镜像

1
docker-compose up -d

等待下载完成即可,中途不要关闭 SSH 窗口,耐心等待即可,文件约几个G。

[](#VNC-登录微信 "VNC 登录微信")VNC 登录微信

在网络上下载并安装 VNC Viewer(或其他能进行VNC连接的客户端)
在上方 Enter a VNC Server address or search 处填入

1
2
3
4
#你的VPS固定公网ip:5905
#例如
123.123.1.2:5905
#注意「:」是英文字符 不要使用中文字符的「:」

点击连接到此地址,此时你将会看到一个微信登录二维码,使用手机扫码登录
注意,将此二维码截图后用手机微信的相册内扫码是不行的,必须使用摄像头扫码

[](#安装、创建必要文件及依赖 "安装、创建必要文件及依赖")安装、创建必要文件及依赖

1
2
3
4
5
6
apt-get install libopus0 ffmpeg libmagic1 python3-pip git libssl-dev
pip3 install -U git+https://github.com/ehForwarderBot/efb-telegram-master.git
pip3 install -U git+https://github.com/0honus0/python-comwechatrobot-http.git
pip3 install -U git+https://github.com/0honus0/efb-wechat-comwechat-slave.git
pip3 install lottie
pip3 install cairosvg
请一行一行依次执行 而不要全部一次输入

然后进行配置文件的创建,此处可以一次性全部输入

1
2
3
4
5
6
mkdir -p ~/.ehforwarderbot/profiles/ComWeChat
mkdir -p ~/.ehforwarderbot/profiles/ComWeChat/blueset.telegram
mkdir -p ~/.ehforwarderbot/profiles/ComWeChat/honus.comwechat
touch ~/.ehforwarderbot/profiles/ComWeChat/config.yaml
touch ~/.ehforwarderbot/profiles/ComWeChat/blueset.telegram/config.yaml
touch ~/.ehforwarderbot/profiles/ComWeChat/honus.comwechat/config.yaml
不要忘记发送最后一行

[](#主从端配置 "主从端配置")主从端配置

编辑 ~/.ehforwarderbot/profiles/ComWeChat/blueset.telegram/config.yaml

1
nano ~/.ehforwarderbot/profiles/ComWeChat/blueset.telegram/config.yaml

在其中写入

1
2
3
token: "写机器人token"
admins:
- 写管理员telegram用户ID

将token和用户ID替换掉上文中的说明文字,例如

1
2
3
token: "ABC123QWE:123ADW123AWD"
admins:
- 1234567654321

编辑 ~/.ehforwarderbot/profiles/ComWeChat/config.yaml

1
nano ~/.ehforwarderbot/profiles/ComWeChat/config.yaml

在其中写入

1
2
3
master_channel: blueset.telegram
slave_channels:
- honus.comwechat

编辑 ~/.ehforwarderbot/profiles/ComWeChat/honus.comwechat/config.yaml

1
nano ~/.ehforwarderbot/profiles/ComWeChat/honus.comwechat/config.yaml

在其中写入

1
dir: "/root/WeChat/Files/"

[](#启动服务 "启动服务")启动服务

使用screen功能保证关闭SSH连接后 服务仍在运行

1
screen -S wechat

在弹出的新终端窗口中输入

1
ehforwarderbot -p ComWeChat
由于 VPS 一般位于海外,所以第一次登录后几天内被登出是正常的,因为 IP 地址不受信任

[](#重启服务 "重启服务")重启服务

在某些情况下,你需要重启你的服务,下面我来讲解一下。

首先建议重启你的服务器,排除意外因素
如果不愿意重启,请自行关闭之前打开的 screen 会话和 docker 镜像
然后执行

1
2
cd comwechat
docker-compose up -d

此时再次打开 VNC Viewer 再次扫码登录或点击登录
然后再次启动服务即可

1
screen -S wechat

在弹出的新终端窗口中输入

1
ehforwarderbot -p ComWeChat

[](#关于机器人用法 "关于机器人用法")关于机器人用法

在此不进行详细说明,仅做简单解释

假如你不做任何工作,所有信息都只会从机器人私聊发送到你的 Telegram 账号。

为了解决这个问题,我们需要使用准备阶段准备的两个 Telegram 账号新建群组,然后将另一个账号踢出群组,将机器人添加至群组

接着使用

1
/link

回到机器人的私聊,选择你要绑定的对话,则该对话将被绑定至指定的群组

建议使用下面的指令来更新头像及名称。

1
/update_info
特别注明:新加好友 / 群聊 / 备注 需要等待数据库自动更新,时间为 30 分钟一次,因此执行此命令报错时请先自查是否是新添加好友等问题

此时你在此群组发送消息,将自动以你登录的微信为发言人在微信发送相同消息,接收到的消息则由机器人发送

其他使用相关不再赘述,自行查阅其他教程或说明文档等

[](#尾声 "尾声")尾声

至此,教程完毕,若有问题请再三阅读教程后提问

https://blog.shzxm.com/2020/12/31/efb/

ehForwarderBot 遇到的那些坑

2020-12-31- 2022-06-25

3.7k- 14m

[](#EH-Forwarder-Bot-介绍 "EH Forwarder Bot 介绍")EH Forwarder Bot 介绍

efb

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

官方文档 官方 wiki

说白了就是 利用 这个项目 把所有微信的信息 转发到 telegram

[](#故事背景 "故事背景")故事背景

起源是因为 telegram 成为了生活中主要的 摸鱼 阵地

但是 微信 又有着很多的联系人 不管是工作 还是日常生活

在两个社交软件之间来回切换 不光麻烦 有时候甚至想彻底抛弃 微信 (张小龙是垃圾

最终找到了 efb 这个项目 从此 远离 离不开 但是 垃圾的要死 的 微信

我已经用了 3 年了 但是因为小鸡频繁迁移 导致我频繁部署

网上的关于 efb 的教程没少看 结果都是缺衣少食的感觉

今天就来详细的写一篇 关于 efb 的相关问题 和 部署的内容吧

[](#官方文档-官方-wiki "官方文档 官方 wiki")官方文档 官方 wiki

[](#第一要点 "第一要点")第一要点

如果你 不能登录 微信网页版 那也貌似没必要看下去了

或者你可以去查看相关 issue 来达到解封 微信网页版 的使用权限

[](#部署教程 "部署教程")部署教程

既然 centos 已经被 Red Hat 抛弃了

那我就以 ubuntu/debian 的部署教程为主 最后附上一点 centos 的教程 (毕竟我还爱着 centos

然后插一嘴 为什么没有 docker 的部署教程

附上 官方文档收集库 里边肯定有 docker 教程

[](#Telegram-bot-申请 "Telegram bot 申请")Telegram bot 申请

作为一款 telegram 的项目 肯定是通过 bot 来实现控制和使用的(大误

  • 获取 个人 telegram 账号 id 在 telegram 中搜索 @WooMaiBot 点我直达 发送 /id

    其中的 chat 下方的第一个 id 内的数字为 个人 id

  • 在 telegram 搜索 Botfather ([或者点我直达](https://t.me/BotFather)) 和他对话 发送一下内容 一行一次对话

    /start
    /newbot
  • 这时候给你的 bot 起个名字吧 比如说 squirrelWeChat
  • 接着他会让你给 bot 起一个id (第一个只是显示名称 可以修改 id 不可修改 唯一) 必须以 bot 作为结尾比如说squirrelWeChat_bot
  • 这个时候会就出现 api 把那一串 数字:英文 123123123:asdfasdf 的保存下来或者不保存继续
  • 因为更好的使用群组聊天功能,所以需要开启允许将 Bot 添加进群组,给机器人发送指令/setjoingroups选择enable

    设置 Bot 隐私权限,默认 Bot 可能无法接收非/开头的消息,所以需要设置隐私权限。向该机器人发送指令/setprivacy 选择刚刚创建的机器人 选Disable

  • 最后你的 bot 怎么能没有命令呢。发送 /setcommand 然后在发送以下内容:

    help - 显示命令列表.
    link - 将远程会话绑定到 Telegram 群组
    chat - 生成会话头
    recog - 回复语音消息以进行识别
    info - 显示当前 Telegram 聊天的信息.
    unlink_all - 将所有远程会话从 Telegram 群组解绑.
    update_info - 更新群组名称和头像
    extra - 获取更多功能

到这一步 telegram bot 的设置就完成了

当然 你也可以给 bot 设置个好看的头像 比如说….

wechat 张小龙是垃圾

[](#一键脚本 "一键脚本")一键脚本

咕了一天一夜 终于 咕出来了

太难了

需要 root 权限运行

wget https://raw.githubusercontent.com/shzxm/efb-install/main/install.sh -O install.sh && chmod +x install.sh && bash install.sh

[](#ubuntu-debian-部署教程 "ubuntu/debian 部署教程")ubuntu/debian 部署教程

[](#依赖安装 "依赖安装")依赖安装

首先 你得有一台装有 ubuntu/debian 的小鸡 (其实 openwrt 都能跑貌似 但是我不会…

然后安装依赖 (我这个教程依赖装的有点多.为了确保不报错?

  • 请确保你有 root 权限 并执行一下代码来安装依赖

    sudo su
    apt full-upgrade -y
    apt install python3 python3-pip python3-setuptools python3-yaml ffmpeg  libcairo2-dev libcairo2 nano -y
    python3 -m pip install --upgrade pip
    python3 -m pip install --upgrade Pillow
  • 现在安装主体

    pip3 install ehforwarderbot
    pip3 install efb-telegram-master 
    pip3 install efb-wechat-slave
    pip3 install --upgrade Pillow
  • 这里提一嘴 有一个插件是 选装

    这个插件的作用是 你可以把 tg 的贴纸发送到微信 然后你得确保你安装成功 libcairo2 之后执行一下代码

    pip3 install "efb-telegram-master[tgs]"
  • 再多一嘴 如果你爱折腾 喜欢最新版(功能多bug可能也多修复可能也快~

    可以用一下代码安装 开发版

    apt install git -y
    pip3 install git+https://github.com/blueset/ehforwarderbot.git
    pip3 install git+https://github.com/ehForwarderBot/efb-telegram-master
    pip3 install git+https://github.com/ehForwarderBot/efb-wechat-slave

到这一步 相关依赖就安装完成了

[](#配置文件 "配置文件")配置文件

接着是配置文件 需要新建两个文件夹 用来存放配置文件

  • 执行以下代码

    mkdir -p /root/.ehforwarderbot/profiles/default/
    mkdir -p /root/.ehforwarderbot/profiles/default/blueset.telegram

[](#default-config-yaml-配置文件 "default/config.yaml 配置文件")default/config.yaml 配置文件

修改第一个 配置文件 直接粘贴 进入编辑模式

nano /root/.ehforwarderbot/profiles/default/config.yaml

个人 配置文件中需要注意的地方只有一个 flags 中的内容 我觉得只需要开启这一个就可以很舒服的使用了 直接粘贴进去修改 crtl+x 退出并保存

更加详细的功能介绍 实验性功能

master_channel: blueset.telegram
slave_channels:
- blueset.wechat
#这一部分为插件,更多功能请查看文档
flags: 
  delete_on_edit: true
  #以撤回并重新发送的方式代替编辑消息

更多插件请查看官方模块库

因为 web 微信 的 api 是不支持修改的 所以添加最后一个功能 来变相的实现修改

[](#default-blueset-telegram-config-yaml-配置文件 "default/blueset.telegram/config.yaml 配置文件")default/blueset.telegram/config.yaml 配置文件

修改第二个 配置文件 直接粘贴 进入编辑模式

nano /root/.ehforwarderbot/profiles/default/blueset.telegram/config.yaml

最主要的分为三个部分

  • token:上边的api
  • admins:上边的个人id
  • flags:实验性功能

个人认为只需要开启如下功能便可以很好的使用了 直接粘贴进去修改 crtl+x 退出并保存

更加详细的功能介绍 实验性功能

token: "" #在""中间 填入你之前找botfather申请的api
admins:
- 1234 #把数字修改为你的个人 telegram id 在上方获取过
#- 1279136259 #如果,想要多个账号使用同一个微信,可在这里加入第二个id或者多个id,去掉开头的#
flags:
  send_image_as_file: true
  #将所有图像消息作为文件发送,以防止主动报文的图像压缩.需要更多的流量,可以关闭,改为false
  animated_stickers: true
  #启用对动画贴纸的实验性支持启用对动画贴纸的实验性支持,该依赖已包含在教程依赖
  default_media_prompt: text
  #图片/视频/文件消息没有标题时的占位符文本.

因为 telegram 对于中文的搜索支持 简直相当于没有 所以我开启了最后那个功能

这样 在检索 某人发送的同一类型的内容时 会变得十分方便 之所以不使用图像模式 是因为 telegram 的搜索对 emoji 的支持也不是很友好

到此 配置文件全部修改完毕

[](#centos-部署教程-不完全版本 "centos 部署教程 (不完全版本)")centos 部署教程 (不完全版本)

其实没什么太大的区别 主要是在与 依赖文件的名称不同

附上依赖安装代码 配置请照抄 配置文件 部分

yum update
yum install python3 python3-pip python3-pil python3-setuptools python3-yaml python3-requests ffmpeg git cairo cairo-devel nano -y

[](#使用介绍 "使用介绍")使用介绍

  • 在终端中 输入 ehforwarderbot 会出现二维码 扫描登录
  • 接着和你 之前申请的bot 对话 发送 /start
  • /chat 为 和谁对话 具体使用为 /chat 松小鼠/chat 松小 此命令会搜索最近联系人中带有相关字符的联系人 因为加载的问题 长时间不联系的人可能不太好找
  • /link 为 绑定对话到某个群组 你可以新建群组来绑定 群聊/私聊 到特定群组 具有搜索功能同上条 具体使用为 /link 松小 之后选择绑定或者静音 记着要给 bot 管理员权限
  • /rm 为 撤回某条消息 和微信的规则是一样的 2 分钟内 具体使用为回复要撤回的内容 发送/rm
  • /extra 主要为掉线重新登录 或者 强制刷新对话列表使用
  • /update_info 为当前的群组更新 微信信息 在群组中使用 可以更新群聊头像为群组成员 群组名称为微信群聊名称

以上为主要功能 其他更多功能可以安装 官方模块库 来实现

到此就可以退出运行的 efb ctrl+c 然后输入 回车 退出 实在不行多按几次

为什么???你总不能一直开着终端吧?要是网络不稳定 efb 就关闭了 这个时候 往下看吧

[](#进程守护-后台运行 "进程守护 后台运行")进程守护 后台运行

进程守护 可以确保 efb 在后台运行

  • 直接上代码

    cd /etc/systemd/system/
    nano efb.service
  • 进入编辑界面后 复制粘贴下列代码 ctrl+x 保存退出

    [Unit]
    Description=ehforwarderbot
    After=network.target
    
    [Install]
    WantedBy=multi-user.target
    
    [Service]
    Type=simple
    WorkingDirectory=/root
    ExecStart=/usr/local/bin/ehforwarderbot
    Restart=always

    此处需要注意 如果想要运行多个 efb 查看 文档 并修改守护文件

  • 接着 输入一下代码启动 efb 开机自启 efb

    #重新加载进程守护
    systemctl daemon-reload
    #进程守护 启动efb
    systemctl start efb.service
    #进程守护 开机自启efb
    systemctl enable efb.service
  • 想要关闭 或者 查看当前状态 可以使用一下代码

    #进程守护 停止efb
    systemctl stop efb.service
    #进程守护 关闭开机自启efb
    systemctl disable efb.service
    #查看当前 efb 状态
    systemctl status efb.service
    #实时查看 efb 守护日志
    journalctl -f -u efb.service

[](#半个重点-启动选项 "半个重点 启动选项")半个重点 启动选项

  • -h / --help :显示帮助信息
  • -p PROFILE / --profile PROFILE :切换配置文件

    默认的配置档案名称为 default 。

  • -V/ --version : 打印版本信息

    显示您的 Python、EFB 框架、以及所有已启用的信道和中间件的版本号。

  • -v / --verbose : 打印详细日志

    开启该选项会记录 EFB 及所有已启用的模块的详细日志。该选项和 –version 一同,对于调试及问题反馈有着极大帮助。

  • --trace-threads :跟踪阻塞线程

    当您遇到必须强制退出 EFB 的情况时,此选项可用于确定问题的来源。启用此选项后,在发送第一个停止信号(SIGINT 或 SIGTERM)之后,将会每 10 秒识别一次休眠中的线程,直到收到下一个停止信号。

    要使用此选项,您需要使用以下命令来安装额外的 Python 依赖关系

    pip3 install 'ehforwarderbot[trace]'

[](#半个重点-在一台小鸡上运行多个-efb "半个重点 在一台小鸡上运行多个 efb")半个重点 在一台小鸡上运行多个 efb

  • 关键在于 配置文件的路径 默认的路径为 /root/.ehforwarderbot/profiles/default/ 那么 你想要运行第二个 efb 就需要把之前的这个 配置文件改为专属名称 /root/.ehforwarderbot/profiles/专属名称/ 这样就可以开无限个 efb (前提是小鸡其实是老母鸡
  • 运行的时候 在代码 ehforwardbot 后 加上 专属名称 比如 ehforwardbot -p 专属名称 进程守护也是一样的修改方式

[](#半个重点-公众号绑定-批量绑定 "半个重点 公众号绑定 批量绑定")半个重点 公众号绑定 批量绑定

因为默认为 bot 转发所有的信息 群组绑定了 私聊也绑定了 这个时候你就会发现

无止境的 订阅号/公众号 无时不刻的不停的给你发消息 (烦死了!!!! 一个个手动静音?(累死了!!!

那么就需要批量绑定 具体操作如下 官方批量绑定公众号

  • 首先创建一个群组 然后把 bot 添加到当前群组 并给予管理员权限 发送 /info 来获取群组 id
  • 以 REPL 模式启动 EFB

    python3 -i -m ehforwarderbot [-p PROFILE_NAME 如果你不是一台小鸡运行多个 这里可以不填 多个请修改PROFILE_NAME为配置名称]
    示例为
    python3 -i -m ehforwarderbot 
    或
    python3 -i -m ehforwarderbot -p 配置文件名称
  • 操作 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 = -3324225
    #这里id后边更改为 你刚才创建的群组id
    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 实例并以一般方式重新启动
    #ctrl+d 来退出

[](#升级相关 "升级相关")升级相关

升级代码

pip3 install --upgrade ehforwarderbot
pip3 install --upgrade efb-telegram-master 
pip3 install --upgrade efb-wechat-slave

[](#常见报错 "常见报错")常见报错

  • File "/user/lib/python3.7/site-packeges/itchat/components/hotreload.py"
         self.loginInfo['User'] = templates.User(self.loginInfo['User'])

请你去检查 [第一步](https://blog.shzxm.com/2020/12/31/efb/#%E7%AC%AC%E4%B8%80%E8%A6%81%E7%82%B9)!!!! 如果没问题 那么可能是因为服务器和你当前使用的环境不一致 导致了微信风控 那么你可以挂个全局代理 使用一会微信 就可以解决这个问题

+   更多常见报错请查看 [官方 issue](https://github.com/ehForwarderBot/efb-wechat-slave/issues/55) [官方 wiki](https://github.com/ehForwarderBot/efb-wechat-slave/wiki/EFB%E2%80%86%E6%A1%86%E6%9E%B6%E5%8F%8A%E5%90%84%E7%BB%84%E4%BB%B6%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)

### [](#备份 "备份")备份

先来说说为什么要备份 还是迁移的问题 但是也有可能会出现 迁移过程中 群聊名称变更 导致 绑定错误的问题

可以作为备份手段 但是不能100%保证 [备份文档](https://github.com/ehForwarderBot/efb-wechat-slave/wiki/EFB%E2%80%86%E6%A1%86%E6%9E%B6%E5%8F%8A%E5%90%84%E7%BB%84%E4%BB%B6%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98#q-%E5%A6%82%E4%BD%95%E5%A4%87%E4%BB%BD%E5%BE%AE%E4%BF%A1%E4%BB%8E%E7%AB%AF%E7%9A%84%E6%95%B0%E6%8D%AE)

## [](#efb-讨论相关 "efb 讨论相关")efb 讨论相关

[Github Discussions (论坛/社区)](https://github.com/ehForwarderBot/ehForwarderBot/discussions) *主要* 讨论社区

[Telegram 频道](https://t.me/EFBSupport)群组入口请从此处进入

## [](#赞助-支持-EFB "赞助/支持 EFB")[赞助/支持 EFB](https://github.com/blueset/.github)

## [](#缺点 "缺点")缺点

+   efb 的服务 是基于 网页版微信 所以目前很多功能做的不如 客户端版的微信 这是因为 网页版微信 压根没有提高那么多的 api 除非哪天真的出现 `linux 版微信`
    
+   仅支持微信网页版所支持的功能以及消息类型,即
    +   没有朋友圈
    +   没有红包
    +   不能发语音
    +   不能发位置
    +   ……等等诸如此类
+   部分`文件`、`图片`、`表情`等多媒体文件会被网页版微信截断,即收不到任何数据, 尤以`表情`为甚。因此造成的偶发现象,会提醒用户使用移动客户端查看。
    
+   使用 efb 的同时 不能使用 `客户端微信` / `ipad 微信` / `网页版微信`
    

+   **本文作者:**shzxm
+   **本文链接:**[https://blog.shzxm.com/2020/12/31/efb/](https://blog.shzxm.com/2020/12/31/efb/ "ehForwarderBot 遇到的那些坑")