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

It took me a little while to figure out how to get the msi files. Here's more detailed instructions that worked for me.

Download the offline installer from: https://www.ni.com/en-us/support/downloads/drivers/download.pxi-platform-services.html#479592 You can find the version you currently have installed in the NI package manager (I had 2022 Q3)
Mount the downloaded iso
Navigate to the pool directory
using 7-zip, open ni-pcibrd_22.5.0.49208-0+f56_windows_x64.nipkg (version may be different)
double click on data.tar.gz
double click on data.tar
double click on the . folder
extract the 5 files, which includes pcibrdi32.msi and pcibrdi64.msi
Run both msi's, choosing the uninstall option.