安装并使用EFB:在 Telegram 收发QQ 消息

EFB-QQ-Slave Banner

EH Forwarder Bot(简称 EFB)是一个可扩展的聊天平台隧道框架,基于 Python 3。同时 EFB 配备了详尽的文档,欢迎有兴趣的朋友们开发自己的主端或从端,来支持更多的平台。EFB 在 GitHub 中开放了源代码,并且在 Read The Docs 平台上发布的开发文档(英文,en-US)。

本文主要介绍了如何在一个虚拟服务器 (VPS) 中安装并配置 EFB、Telegram 主端和 QQ 从端,以及如何使用 Telegram 主端来收发 QQ 消息。

0x00: 说明

  • 本文档基于 EFB v2.0.0b11, efb-qq-slave v2.0.0a3 版本制作而成。较新的版本可能会有不同的安装步骤。敬请注意。
  • 本教程面向具有一定背景知识的进阶用户,如有疑问,请您先在互联网上搜索(推荐 Google),若仍未解决、欢迎在 EFB Telegram 支持群组留言。
  • 本教程中 QQ 从端所采用的客户端为 酷Q,因此包含安装 docker 的步骤,同时对闭源软件不喜者慎用本项目
  • 本文基于 1a23 的 安装并使用EFB:在Telegram 收发微信消息 改编而来,根据原文协议本文协议临时变更为 CC BY-SA 4.0,请知悉并无视页脚协议声明
  • 现阶段(2022年第一季度)可用的QQ客户端有mirai, OPQBot,其中由mirai延伸的还有go-cqhttp和一系列兼容cqhttp协议的QQ机器人,请了解各个客户端之间的差别之后选择一个进行配置

0x01: 用料

在开始之前,请准备:

  • 电脑 一台
    推荐 Linux、macOS 操作系统
    部分手机亦可使用,但操作会略微繁琐。
  • Telegram 账号 一枚
  • 可用的科学上网方式 若干
  • Windows 用户需要 SSH 客户端 一枚,常用 PuTTY
  • 墙外 VPS 一枚

0x02: 构建环境

这里我们使用 Ubuntu 18.04 作为例子。CentOS、Arch 等其他发行版除去包管理器指令之外操作基本相同。(因为实在是不想再加钱开一个 VPS,所以下面的指令运行在同等版本的 Docker Image 上)

首先通过 SSH 客户端连接到你的 VPS。


0x02.1: 安装 Python 与非 Python 依赖

输入以下指令。

注:以下安装的部分软件包可能已经预安装在你的系统中。但请注意将已安装的 Python 3 版本升级到 3.6 或以上。

sudo apt-get install python3 libopus0 ffmpeg libmagic1 python3-pip git nano libssl-dev

0x02.2: 从 PyPI 下载 ehForwarderBot

对于全新安装的 pip,可能需要安装一些基础库

pip3 install setuptools wheel

完毕之后再安装 ehforwarderbot

pip3 install ehforwarderbot

0x03: 配置 EFB

0x03.1: 配置主端与从端

全新安装的 ehForwarderBot 需要指定一个唯一的主端及一个或多个从端才能正常工作
先为 ehForwarderBot 创建配置文件夹

mkdir -p ~/.ehforwarderbot/profiles/default/
mkdir -p ~/.ehforwarderbot/profiles/default/blueset.telegram
mkdir -p ~/.ehforwarderbot/profiles/default/milkice.qq

而后使用你最喜欢的编辑器在 ~/.ehforwarderbot/profiles/default/ 创建文件 config.yaml,内容如下

master_channel: blueset.telegram
slave_channels:
- milkice.qq

master_channel 指定唯一主端,而slave_channels下可指定多行的从端,此处由于目标为配置 QQ 从端仅添加了 QQ 从端,后期如有需求可以多从端混用


0x03.2: 配置主端 ETM(EFB-Telegram-Master)

0x03.2.1: 创建 Telegram Bot

Telegram Bot 是 EFB(Telegram 主端)的出口,也是呈献给用户的渠道。我们在这里使用了 Telegram 官方的 Bot API,以最大化利用 Telegram Bot 所提供的各种便利功能。

要创建一个新的 Bot,要先向 @BotFather 发起会话。发送指令 /newbot 以启动向导。期间,你需要指定这个 Bot 的名称与用户名(用户名必须以 bot 结尾)。完毕之后 @BotFather 会提供给你一个密钥(Token),妥善保存这个密钥。请注意,为保护您的隐私及信息安全,请不要向任何人提供你的 Bot 用户名及密钥,这可能导致聊天信息泄露等各种风险。

接下来还要对刚刚启用的 Bot 进行进一步的配置:允许 Bot 读取非指令信息、允许将 Bot 添加进群组、以及提供指令列表。

发送 /setprivacy 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Disable”.
发送 /setjoingroups 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后选择 “Enable”.
发送 /setcommands 到 @BotFather,选择刚刚创建好的 Bot 用户名,然后发送如下内容:

link - 将会话绑定到 Telegram 群组
chat - 生成会话头
recog - 回复语音消息以进行识别
extra - 获取更多功能

然后还需要获取你自己的 Telegram ID,ID 应显示为一串数字。获取你自己的 ID 有很多方式,你可以选择任意一种。下面介绍两种可能的方式。

  1. Plus Messenger
    如果你使用了 Plus Messenger 作为你的 Telegram 客户端,你可以直接打开你自己的资料页,在「自己」下面会显示你的 ID。

  2. 通过 Bot 查询
    很多现存的 Bot 也提供了 ID 查询服务,直接向其发送特定的指令即可获得自己的数字 ID。在这里介绍一些接触过的。

留存你的 Telegram ID 以便后续使用。


0x03.2.2: 安装 ETM

pip3 install efb-telegram-master

0x03.2.3: 创建 ETM 配置文件

使用你最喜欢的编辑器在 ~/.ehforwarderbot/profiles/default/blueset.telegram/ 创建文件 config.yaml,内容如下

token: "12345678:QWFPGJLUYarstdheioZXCVBKM"
admins:
- 123456789

其中,token 填入你在 0x03.2.1 步骤中从 @BotFather 获取的 bot token,admins 下的数字则为管理员 Telegram ID,一行一个


0x03.3: 配置从端 EQS(EFB-QQ-Slave)

0x03.3.1: 通过 PyPI 下载安装 EQS

pip3 install efb-qq-slave

0x03.3.2: 配置 QQ 客户端

接下来的内容由客户端不同而不同,请注意分辨

1. Mirai

Mirai 有两种配置方式,一种是参照 OneBot 标准的兼容模式。在这种模式下许多功能不可用(因为 OneBot 标准原本是面向酷Q设计的,有一部分特性 Mirai 不支持),另外一种就是专门为 Mirai 适配的 Mirai 模式。以下模式任选其一进行配置。

Mirai 模式(Mirai-http-api):

所需依赖及条件
JDK 11+
Python 3.8+
步骤:

注意:以下为 mirai-api-http 2.x 版本的安装步骤,由于 Mirai 还处于活跃开发中,Mirai 的安装步骤可能随时发生调整,具体请以官方文档为准

  1. 安装 efb-qq-plugin-mirai pip3 install git+https://github.com/milkice233/efb-qq-plugin-mirai
  2. 使用 Mirai Console Loader(MCL) 安装 Mirai,具体安装步骤请参阅该仓库的 README 文档
  3. 安装完 MCL 和 mirai 后请使用 MCL 安装 mirai-api-http,efb-qq-plugin-mirai 从 v2.0.7 开始支持 mirai-api-http 2.x 版本,2.x版本的安装命令为 ./mcl --update-package net.mamoe:mirai-api-http --channel stable-v2 --type plugin
  4. 编辑 config/net.mamoe.mirai-api-http/setting.yml 配置文件,其中需要留意的是需要自己设置一个 verifyKey,可使用随机密码生成器生成一个足够长的字符串,具体参见 此处 ,以下是样例(这里假设 mirai-http-api 监听在 127.0.0.1:8080)
## 启用的 adapter, 请确保 http 和 ws 列在下方
adapters:
  - http
  - ws

## 是否开启认证流程, 若为 true 则建立连接时需要验证 verifyKey
## 强烈建议开启
enableVerify: true
verifyKey: <这里设置一个随机的足够长的字符串>

## 开启一些调式信息
debug: false

## 是否开启单 session 模式, 若为 true,则自动创建 session 绑定 console 中登录的 bot
## 开启后,接口中任何 sessionKey 不需要传递参数
## 若 console 中有多个 bot 登录,则行为未定义
## 确保 console 中只有一个 bot 登陆时启用
## 这里可以留为 false
singleMode: false

## 历史消息的缓存大小
## 同时,也是 http adapter 的消息队列容量
cacheSize: 4096

## adapter 的单独配置,键名与 adapters 项配置相同
adapterSettings:
  ## 详情看 http adapter 使用说明 配置
  http:
    host: localhost
    port: 8080
    cors: [*]

  ## 详情看 websocket adapter 使用说明 配置
  ws:
    host: localhost
    port: 8080
    reservedSyncId: -1
  1. 配置 EQS 端(EQS 配置文件一般位于 ~/.ehforwarderbot/profiles/default/milkice.qq/config.yaml),内容如下:
Client: mirai
mirai:
  qq: 123456789           # 这里换成登录的 QQ 号
  host: "127.0.0.1"       # Mirai HTTP API 监听地址,一般是 127.0.0.1
  port: 8080              # Mirai HTTP API 监听端口,一般是 8080
  verifyKey: "28nrq0vnj02y" # 这里填入在配置 Mirai API HTTP 时生成的 verifyKey
  1. 使用 mcl 启动 mirai, Mirai 为交互式登录,请使用 login 123456789 yourpassword ANDROID_PAD (如登录后有报错请忽略),请注意 login 命令中密码参数后面可以指定 QQ 所登录的终端,现阶段有 ANDROID_PHONE, ANDROID_PAD, ANDROID_WATCH 可供选择
  2. 使用 ehforwarderbot 命令启动 EFB
兼容模式:

强烈建议先阅读酷Q的配置方案,本模式默认用户已经了解酷Q版的配置方式

所需依赖及条件

JDK 11+

步骤:

  1. 安装 efb-qq-plugin-coolq pip3 install git+https://github.com/milkice233/efb-qq-plugin-coolq
  2. 使用 此项目 的方法获得 device.json
  3. 下载 Onebot Kotlin 版 (此版本不需要安装Kotlin)
  4. 将 步骤1 中获取的 device.json 复制到 Onebot Kotlin 的目录
  5. 执行 java -jar onebot-kotlin-*.jar
  6. 按下 Ctrl-C 停止 Mirai
  7. 编辑 config/OneBot/settings.yml 为如下内容
proxy: ''
bots:
  123456789:
    cacheImage: false
    cacheRecord: false
    heartbeat:
      enable: false
      interval: 1500
    http:
      enable: true
      # 请注意是否为true
      host: 127.0.0.1
      port: 5700
      accessToken: ac0f790e1fb74ebcaf45da77a6f9de47
      postUrl: 'http://127.0.0.1:8000'
      postMessageFormat: array
      secret: ''
      # 上报超时时间, 单位毫秒, 须大于0才会生效
      timeout: 0

其中需要修改的为 QQ 号及 accessToken,accessToken 需与 EQS 中的配置一致

  1. 配置 EQS 端
    与酷Q版的配置几乎完全一致,除了要确认下 API Root 地址 和 efb-qq-slave 所监听的地址
Client: CoolQ                         # 指定要使用的 QQ 客户端(此处为CoolQ模式)
CoolQ:
   type: HTTP                        # 指定 efb-qq-slave 与 酷Q 通信的方式 现阶段仅支持HTTP
   access_token: ac0f790e1fb74ebcaf45da77a6f9de47
   api_root: http://127.0.0.1:5700/  # OneBot-Kotlin 的API接口地址/端口
   host: 127.0.0.1                   # efb-qq-slave 所监听的地址用于接收消息
   port: 8000                        # 同上
   is_pro: true                      # 保持为默认
   air_option:                       # 包含于 air_option 的配置选项仅当 is_pro 为 false 时才有效
       upload_to_smms: true          # 将来自 EFB主端(通常是Telegram) 的图片上传到 sm.ms 服务器并以链接的形式发送到 QQ 端

需要注意的是其实 port 下面的配置都是无效的,只是为了兼容酷Q,is_pro 请保持为 true

  1. 再次启动 Mirai并登录( Mirai 为交互式登录,请使用 login 123456789 yourpassword ,或使用启动参数参数 –-account 123456789 --password yourpassword 来登录(如登录后有报错请忽略),开启EFB后,重启 Mirai 即可
2. OPQBot

需要运行 OPQBot 客户端以及做好相应的配置

步骤:

  1. 请到 OPQBot 安装指南页 按照文档下载运行 OPQBot,需要申请 Gitter API key,启动完成后访问 http://127.0.0.1:8888/v1/Login/GetQRcode 扫码完成登录

  2. 由于解码 QQ 所使用的 Silk 编码语音格式需要外部 C 库的支持,因此在安装阶段会编译解码器和编码器,请确保系统已经安装编译器和 Python Dev 头文件

对于 Debian/Ubuntu 系列发行版请执行
sudo apt install python3-dev build-essential
对于 Redhat/CentOS 系列发行版请执行(注意,未经过测试)
sudo yum install python3-devel gcc gcc-c++ make

3.安装 efb-qq-plugin-iot pip3 install git+https://github.com/milkice233/efb-qq-plugin-iot

因为涉及到编译第三方库,在安装过程中可能会失败,请结合日志分析原因处理,如果遇到难以处理的问题可以发 issue 询问

  1. 配置 EQS 端
Client: iot
iot:
  qq: 1234567890              # 此处填写登录的QQ号
  host: "http://127.0.0.1"    # 默认IP为本地
  port: 8888                  # 默认端口为 8888
  receive_self_msg: False     # 不接收自己发出的消息

如果有别的特殊设置还请按照文档自行修改

  1. 启动 ehforwarderbot
3. go-cqhttp(由XYenon贡献)

下面的教程展示了当 go-cqhttp 和 ehForwarderBot 在同一台机器上运行时如何设置两端。

(高级) 对于其他的情况,例如 go-cqhttp 和 ehForwarderBot 在不同的机器上运行时, go-cqhttp port urlgo-cqhttp api url 必须修改为相应的值(前者是 efb-qq-slave 监听的地址/端口,后者是 go-cqhttp 监听的地址/端口),同时防火墙应允许双方的数据包通过,以便双方的请求不会被防火墙拦截。如果双方通信内容必须经过 Internet 传输,请确保已配置 Access Token 并启用 HTTPS 确保双方通信内容不会在公网被窃听/篡改。

有关 go-cqhttp 的详细信息,请访问 go-cqhttp 文档

  1. 下载 go-cqhttp
  2. 编辑 config.yaml 配置文件,注意修改如下部分
   account:         # 账号相关
     uin: 000000000 # QQ 账号
     password: ''   # QQ 密码,为空时使用扫码登录

   message:
     # 上报数据类型
     # efb-qq-plugin-go-cqhttp 仅支持 array 类型
     post-format: array
     # 为Reply附加更多信息
     extra-reply-data: true

   # 默认中间件锚点
   default-middlewares: &default
     # 访问密钥,强烈推荐在公网的服务器设置
     access-token: ''

   servers:
     # HTTP 通信设置
     - http:
         # 是否关闭正向 HTTP 服务器
         disabled: false
         # 服务端监听地址
         host: 127.0.0.1
         # 服务端监听端口
         port: 5700
         # 反向 HTTP 超时时间, 单位秒
         # 最小值为 5,小于 5 将会忽略本项设置
         timeout: 5
         middlewares:
           <<: *default # 引用默认中间件
         # 反向 HTTP POST 地址列表
         post:
           - url: 'http://127.0.0.1:8000' # 地址
             secret: ''                   # 密钥保持为空
  1. 运行 go-cqhttp ./go-cqhttp

  2. 安装 efb-qq-plugin-go-cqhttp pip install git+https://github.com/XYenon/efb-qq-plugin-go-cqhttp

  3. milkice.qq 从端创建 config.yaml 配置文件

    配置文件通常位于 ~/.ehforwarderbot/profiles/default/milkice.qq/config.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                        # 同上
    
  4. 启动 ehforwarderbot,大功告成!


0x04: 使用 EFB Telegram 主端

现在,在 Telegram 里面搜索你之前指定的 Bot 用户名,点击 Start(开始)即可开始与 QQ 互通消息了。

在最初,所有来自 QQ 的消息都会通过 Bot 直接发送给你,要回复其中的任意一条消息,你需要在 Telegram 中选中那条消息,选择 Reply(回复),再输入消息内容。

如果需要向新联系人发送消息,只需发送 /chat 指令,选择一个会话。之后这条消息就会变成一个「会话头」,回复这条消息就可以向指定的联系人或群组发送消息。

当消息过多时,来自不同会话的消息会使 Telegram 上面的会话混乱不堪。EFB 支持将来自指定会话的消息分流到一个 Telegram 群组中。

在 Telegram 中新建一个空群组,并将你的 Bot 加入到这个群组中。
(如果找不到自己的 Bot,请尝试在桌面版中创建,并在添加成员时搜索 Bot 的用户名)
回到 Bot 会话,发送 /link,选择一个会话,并点击 “Link”
在弹出的列表中选择刚刚创建的空群组即可
在绑定会话中,你可以像普通聊天一样直接发送消息。也可以通过指定回复的形式来 @ 其他人。
“Link” 功能亦可以屏蔽一些群组/用户的消息,在点击”Link”后选择免打扰即可
您亦可将一些会话连接到频道,此时需要特殊的link方式,请点击”Link”之后选择手动绑定,由机器人指导您进行绑定操作
请注意,若将会话绑定到频道,即意味着本回话只能接受消息无法发出,即便用户在频道发出消息也不会被理会

注意
虽然 Telegram 群组中的所有人可以看到会话全文,但是只有配置文件 (config.py) 中指定的管理员 (admins) 能够以你的名义发送消息到 QQ。EFB 支持设置多个管理员,但只有第一个管理员(按照输入排序)能够接收到所有消息,而且这有可能造成不必要的隐私问题,敬请注意。

以上就是 EFB Telegram 主端的基础用法。

FAQ

以下内容通用 针对所有客户端有效

  • Q – 如何在 主端(Telegram) 撤回消息?

    A – 如果 QQ 客户端支持该操作,请编辑该消息并在该消息前段加上 rm 字样即可在QQ端撤回该消息 同时请注意发出的消息仅能在发出后2分钟内撤回

  • Q – 如何在 主端(Telegram) 编辑消息?

    A – 直接使用 Telegram 的编辑消息功能即可

  • Q – EQS 只支持 酷Q 吗?

    A – 现阶段 QQ端的开源现状并不如微信,加之腾讯阉割掉WebQQ一大堆功能,导致一大批原本以WebQQ为协议的应用几乎陷入不可用状态(不能收发图片,必须扫码登录或奇淫技巧密码登录等)。目前来说,以iOS/Android/Pad协议为基础的开源应用几乎没有,尚有的一些也处于疯狂改架构状态非常不稳定,在若干闭源方案中选择酷Q是因为酷Q插件体系较为成熟,HTTP API插件可以很方便地暴露接口给外部应用使用
    efb-qq-slave 在设计架构的时候已经考虑到多客户端支持的可能性,所以如果有更好的 QQ 客户端 EQS 将会第一时间支持,也希望能够得到社区的力量一起协助完善项目

以下内容仅针对于 酷Q 客户端有效

  • Q – 为什么我无法在 Telegram 中发送图片到QQ?

    A – 如果您正在使用 CoolQ Air,由于技术限制无法直接发送图片到QQ,请将配置文件中的 is_pro 改为 false 并将 air_option 中的 upload_to_smms 改为true即可变相发送图片(通过链接形式)

  • Q – 为什么我无法接收/发送QQ语音?

    A – 酷Q官方以语音处理库太大为由并未将语音模块集成入酷Q,而是提供了一个带语音处理版本的酷Q供下载,目前暂时没有动力编写QQ语音消息的处理,如有需求请在 这个Github Issue 中留言或在issue上发送表情,需求量较高将会考虑开发

  • Q – 酷Q不同版本区别?

    A – https://cqp.cc/t/23290 同时请注意酷Q Air 不支持消息撤回

  • Q – 目前暂未实现的功能?

    A – 好友请求处理,加群请求处理,尚未适配少部分消息类型(例如签到消息),语音发送/接收

  • Q – 一段时间后 EQS 提示我 Cookie 过期需要手动刷新 Cookie?
    A – 这是由于一些特性需要从腾讯网站上获取,而酷Q提供的Cookie在腾讯外部网站不可访问但是酷Q仍可以使用该Cookie发送/接受消息,因而酷Q认为此Cookie一切正常并不会主动更新Cookie,此时需要手动强制刷新,具体教程请参阅此处 efb-qq-slave/Workaround-for-expired-cookies-of-CoolQ

  • Q – 有时候无法显示来源消息的群名,只能显示群号?
    A – 可能用户加入新群之后酷Q并未即时更新群列表,此时可以先给机器人发送 /extra,然后由机器人给出的命令中选择 /{slave_id}_relogin 命令执行(该命令通常名为 /0_relogin),执行 /0_relogin -c,稍等片刻,如果酷Q端已开启自动登录则不需要人工干预群列表即可恢复正常,部分情况下可能需要用户再次登录 Web VNC 重新输入QQ密码登录

评论

  1. SillyLi
    5 年前
    2020-4-04 21:40:37

    sm.ms的KEY在哪里配置呀

    • Milkice
      博主
      SillyLi
      5 年前
      2020-4-05 23:09:47

      哎呀 想起来 sm.ms 好像改了些东西来着…
      我后期会加上 API Key 的,现在的话考虑用下别的图床?

  2. LonANi
    5 年前
    2020-4-14 20:03:37

    2020-04-14 20:00:50,176 [Level 99]: ehforwarderbot.__main__ (__main__.init; __main__.py:85)
    Initializing slave milkice.qq…
    2020-04-14 20:00:50,697 [Level 99]: ehforwarderbot.__main__ (__main__.init; __main__.py:96)
    Slave channel QQ Slave (milkice.qq) # Default profile is initialized.
    2020-04-14 20:00:50,698 [Level 99]: ehforwarderbot.__main__ (__main__.init; __main__.py:99)
    Initializing master blueset.telegram…
    Traceback (most recent call last):
    File “/usr/local/bin/ehforwarderbot”, line 11, in
    sys.exit(main())
    File “/usr/local/lib/python3.6/dist-packages/ehforwarderbot/__main__.py”, line 277, in main
    init(conf)
    File “/usr/local/lib/python3.6/dist-packages/ehforwarderbot/__main__.py”, line 103, in init
    coordinator.add_channel(module(instance_id=instance_id))
    File “/usr/local/lib/python3.6/dist-packages/efb_telegram_master/__init__.py”, line 100, in __init__
    if ‘WEBP’ not in Image.ID or not WebPImagePlugin.SUPPORTED:
    AttributeError: module ‘PIL.WebPImagePlugin’ has no attribute ‘SUPPORTED’
    启动后报错,请问是哪里的 问题呢,先道谢!

    • Milkice
      博主
      LonANi
      5 年前
      2020-4-14 22:48:13

      感觉是 Pillow 版本过低了,试试 python3 -m pip install --upgrade Pillow ?

      • LonANi
        Milkice
        5 年前
        2020-4-15 20:38:46

        成。。成功了,感谢大佬!

      • LonANi
        Milkice
        5 年前
        2020-4-15 20:56:05

        可是。。大佬,我刚刚又发现一个问题,我只能用/chat 功能给好友发送消息,但是好友给我发消息,bot就收不到,用/h_0_login 检查之后报错如下:
        Traceback (most recent call last):
        File “/usr/local/lib/python3.6/dist-packages/efb_telegram_master/__init__.py”, line 462, in error
        raise error
        File “/usr/local/lib/python3.6/dist-packages/telegram/ext/dispatcher.py”, line 343, in process_update
        handler.handle_update(update, self, check, context)
        File “/usr/local/lib/python3.6/dist-packages/telegram/ext/handler.py”, line 117, in handle_update
        return self.callback(update, context)
        File “/usr/local/lib/python3.6/dist-packages/efb_telegram_master/commands.py”, line 207, in extra_usage
        html.escape(command.name),
        AttributeError: ‘function’ object has no attribute ‘name’
        还望大佬不吝赐教哇,感觉胜利就在眼前了,非常感谢哇!!

        • Milkice
          博主
          LonANi
          5 年前
          2020-4-15 21:48:30

          诶,按理说不会出现这样的问题的… 我现在只能估计是 EQS 或者 ETM 版本太低的问题
          试试 python3 -m pip install --upgrade efb-qq-slave efb-telegram-master ehforwarderbot
          如果不行的话记得下次贴一下版本号(python3 -m pip show efb-qq-slave 以及 python3 -m pip show efb-telegram-master python3 -m pip show ehforwarderbot
          另外如果后续有问题还请到 https://t.me/EFBSupport 里加入群聊,里面有不少人都可以为你解答,包括我也在,这样评论区回复效率有点低

  3. Jason
    4 年前
    2020-6-08 17:25:28

    请问CoolQ Air是不是无法改变协议来与手机同时在线呀?我在CQP.cfg里加上了[Dev] Platform=2然后重启,好像不行。

    • Milkice
      博主
      Jason
      4 年前
      2020-6-10 10:06:08

      对的,需要 CoolQ Pro

      • Jason
        Milkice
        4 年前
        2020-6-10 11:09:26

        了解了,感谢博主

  4. Jim
    4 年前
    2020-7-28 23:45:39

    大佬您好,我今天在新的机器(香港ip)上部署,登录的时候提示,“收到交互式网页验证码”,“服务器要求使用交互式网页验证码完成登录验证。需使用chrome浏览器输入验证码”。
    我以前部署的时候(日本ip机器),在这一步的时候,手机QQ会发通知提示已自动通过验证。
    请问这种情况有什么可尝试的解决办法吗?谢谢大佬~

    • Milkice
      博主
      Jim
      4 年前
      2020-7-29 16:06:19

      这个只能在香港的机子上架个梯子,在手机QQ上走香港的IP登录下就行

      • Jim
        Milkice
        4 年前
        2020-7-29 16:37:28

        明白了,感谢博主!

    • Milkice
      博主
      1111
      4 年前
      2020-8-18 20:42:08

      未来一个月会实现 mirai 支持,mirai 近期也恢复了更新

  5. Jim
    4 年前
    2020-8-20 20:47:55

    大佬终于要支持mirai了!自从coolq停运之后不得不用手Q的app,真的很难受。感谢大佬!

  6. magictomagic
    4 年前
    2020-8-31 22:30:00

    现在这个方法还可以用吗

    • Milkice
      博主
      magictomagic
      4 年前
      2020-8-31 23:34:47

      最近酷Q停止服务了,目前在迁移到 mirai 中,还需要耐心等待

      • Ojhdt
        Milkice
        4 年前
        2020-9-04 11:13:56

        静待更新!

  7. luo
    4 年前
    2020-9-19 20:47:09

    十分感谢作者! 今天我去部署了一下, 终于能够在Linux 上正常地使用QQ和别人交流了, 因为我是用的i3, wine QQ都支持的很差, 特别感谢作者的开源精神以及贡献! 十分感谢!

    • Milkice
      博主
      luo
      4 年前
      2020-11-16 9:35:38

      谢谢夸奖~新的版本在重构了可能要年底才会发布

  8. Kod.e
    3 年前
    2021-12-07 11:08:20

    2021-12-07 03:05:55,610 [Level 99]: ehforwarderbot.__main__ (__main__.init; __main__.py:129)
    Initializing slave milkice.qq…
    Traceback (most recent call last):
    File “/usr/local/bin/ehforwarderbot”, line 8, in
    sys.exit(main())
    File “/usr/local/lib/python3.8/dist-packages/ehforwarderbot/__main__.py”, line 335, in main
    init(conf)
    File “/usr/local/lib/python3.8/dist-packages/ehforwarderbot/__main__.py”, line 135, in init
    coordinator.add_channel(cls(instance_id=instance_id))
    File “/usr/local/lib/python3.8/dist-packages/efb_qq_slave/__init__.py”, line 44, in __init__
    self.init_client_manager()
    File “/usr/local/lib/python3.8/dist-packages/efb_qq_slave/__init__.py”, line 73, in init_client_manager
    self.QQClientMgr = ClientMgr(self.config[‘Client’], self.config, self)
    KeyError: ‘Client’
    用的mirai,报错KeyError: ‘Client’ 可能是哪里出了问题呢

    • Milkice
      博主
      Kod.e
      3 年前
      2022-1-01 0:37:20

      很久没有维护了……可能年后会抽空维护一下

  9. 已编辑
    3 年前
    2022-3-19 15:22:50

    Traceback (most recent call last):
    File “/usr/local/bin/ehforwarderbot”, line 11, in
    sys.exit(main())
    File “/usr/local/python3/lib/python3.8/site-packages/ehforwarderbot/__main__.py”, line 335, in main
    init(conf)
    File “/usr/local/python3/lib/python3.8/site-packages/ehforwarderbot/__main__.py”, line 147, in init
    coordinator.add_channel(module(instance_id=instance_id))
    File “/usr/local/python3/lib/python3.8/site-packages/efb_telegram_master/__init__.py”, line 103, in __init__
    raise EFBException(self._(“WebP support of Pillow is required.\n”
    ehforwarderbot.exceptions.EFBException: WebP support of Pillow is required.
    Please refer to Pillow Documentation for instructions.
    https://pillow.readthedocs.io/
    请问一下,这个如何解决呢?感谢大佬

    • Milkice
      博主
      Colico
      3 年前
      2022-3-19 22:32:50

      请查阅下自己的系统上怎么安装libwebp,应该是缺失了这个

  10. www
    已编辑
    3 年前
    2022-4-23 16:33:19

    root@racknerd-287e70:~# ehforwarderbot
    2022-04-23 09:53:07,884 [Level 99]: ehforwarderbot.__main__ (__main__.init; __main__.py:129)
    Initializing slave milkice.qq…
    Traceback (most recent call last):
    File “/usr/local/bin/ehforwarderbot”, line 8, in
    sys.exit(main())
    File “/usr/local/lib/python3.8/dist-packages/ehforwarderbot/__main__.py”, line 335, in main
    init(conf)
    File “/usr/local/lib/python3.8/dist-packages/ehforwarderbot/__main__.py”, line 135, in init
    coordinator.add_channel(cls(instance_id=instance_id))
    File “/usr/local/lib/python3.8/dist-packages/efb_qq_slave/__init__.py”, line 44, in __init__
    self.init_client_manager()
    File “/usr/local/lib/python3.8/dist-packages/efb_qq_slave/__init__.py”, line 73, in init_client_manager
    self.QQClientMgr = ClientMgr(self.config[‘Client’], self.config, self)
    File “/usr/local/lib/python3.8/dist-packages/efb_qq_slave/ClientMgr.py”, line 31, in __init__
    raise Exception(“Specified client not found!”)
    Exception: Specified client not found!

    麻烦大佬帮忙看一下,是哪儿的问题,折腾了好长时间还是报错😭我尝试用第1种方案 Mirai, 按照兼容模式之前的教程来的,在mcl 控制台那里已经成功登上 QQ 并能看到消息了,就是最后一步 ehforwarderbot 这里报Exception: Specified client not found!错,现在我用了第三种go-cqhttp方案, 在go-cqhttp里也成功登上qq了, 还是输入ehforwarderbot报错, 报错信息如上, 请大佬帮助, 谢谢

    • Milkice
      博主
      www
      3 年前
      2022-4-23 17:17:42

      看错误报告是127.0.0.1:8080压根就没有程序在监听,检查下客户端是否都在正常运行

      • www
        Milkice
        3 年前
        2022-4-23 17:38:40

        ~/.ehforwarderbot/profiles/default/milkice.qq/config.yaml的配置文件我是按照您的写的, 两个端口分别是5700和8000, 然后go-cqhttp的config.yaml最后两行# 反向 HTTP POST 地址列表默认是注释掉的, 我一按照您教程里的改, 取消注释就会报配置文件不合法的错误, 我已经运行了./go-cqhttp, 控制台那里也也接受到qq的消息了.

  11. www
    2 年前
    2022-5-16 9:14:58

    请问我用go-cqhttp可以发消息但收不到消息是怎么回事?

    • Milkice
      博主
      www
      2 年前
      2022-5-24 19:17:07

      建议到 go-cqhttp issue下提问并贴上详细日志?因为 go-cqhttp 不是我编写的,可能不太熟悉

    • rainick
      www
      2 年前
      2022-8-08 14:54:11

      可能是cqhttp配置文件的反向http post部分没设置好

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇