使用go-cqhttp搭建QQ机器人

本文档详细介绍了如何使用Go-cqhttp搭建QQ机器人,包括环境配置、配置文件设置、消息监听与回复,以及代码整合。通过Python的Flask库创建监听程序,实现对QQ消息的响应和处理。
摘要由CSDN通过智能技术生成

使用go-cqhttp搭建QQ机器人

序言

go-cqhttp是基于 Mirai 以及 MiraiGo 的 OneBot Golang 原生实现(此句照搬文档)
个人使用(不知道是不是只能使用)Python语言进行编写,仅供教程,不做完全分享
官方文档地址
github项目地址

安装环境

Python语言环境配置下载Python
勾选Add python.exe to PATH
要勾选Add python.exe to PATH
点击Next

勾选Add Python to environment variables
Install
安装完毕后Win + R打开运行输入cmd
键入Python

如上图所示即为安装成功

配置项目

下载go-cqhttp.exe后,双击运行,无视弹窗内容直接确定(因为要用运行完exe生成的bat来启动exe才是正确启动),三次确定后出现go-cqhttp.bat,双击运行。

配置config.yml(客户端信息)

选择HTTP通信,提示退出,打开config.yml
账号密码可不配置,拉到最下面

修改为以下内容

//可将从server部分完全替换
servers:
  # 添加方式,同一连接方式可添加多个,具体配置说明请查看文档
  #- http: # http 通信
  #- ws:   # 正向 Websocket
  #- ws-reverse: # 反向 Websocket
  #- pprof: #性能分析服务器

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

这里要特别注意的是,http配置的address与下方post的url端口不能相同(可以修改)
保存后运行bat,尝试登录

[2023-01-07 00:23:26] [INFO]: 当前版本:v1.0.0-rc4
[2023-01-07 00:23:26] [INFO]: 将使用 device.json 内的设备信息运行Bot.
[2023-01-07 00:23:26] [INFO]: Bot将在5秒后登录并开始信息处理, 按 Ctrl+C 取消.
[2023-01-07 00:23:31] [INFO]: 开始尝试登录并同步消息...
[2023-01-07 00:23:31] [INFO]: 使用协议: Android Phone
[2023-01-07 00:23:32] [INFO]: Protocol -> connect to server: 36.155.206.145:8080
[2023-01-07 00:23:32] [WARNING]: Protocol -> device lock is disable. http api may fail.
[2023-01-07 00:23:35] [INFO]: 收到服务器地址更新通知, 将在下一次重连时应用.
[2023-01-07 00:23:35] [INFO]: 登录成功 欢迎使用: acao
[2023-01-07 00:23:35] [INFO]: 开始加载好友列表...
[2023-01-07 00:23:35] [INFO]: 共加载 23 个好友.
[2023-01-07 00:23:35] [INFO]: 开始加载群列表...
[2023-01-07 00:23:36] [INFO]: 共加载 7 个群.
[2023-01-07 00:23:36] [INFO]: 资源初始化完成, 开始处理信息.
[2023-01-07 00:23:36] [INFO]: アトリは、高性能ですから!
[2023-01-07 00:23:36] [INFO]: HTTP POST上报器已启动: http://127.0.0.1:5701/
[2023-01-07 00:23:36] [INFO]: 正在检查更新.
[2023-01-07 00:23:36] [INFO]: CQ HTTP 服务器已启动: [::]:5700
[2023-01-07 00:23:48] [INFO]: 检查更新完成. 当前已运行最新版本.
[2023-01-07 00:23:48] [INFO]: 开始诊断网络情况
[2023-01-07 00:23:51] [INFO]: 网络诊断完成. 未发现问题
[2023-01-07 00:23:58] [WARNING]: 上报 Event 数据到 http://127.0.0.1:5701/ 失败: Post "http://127.0.0.1:5701/": dial tcp 127.0.0.1:5701: connectex: No connection could be made because the target machine actively refused it. 将进行第 1 次重试
[2023-01-07 00:24:02] [WARNING]: 上报 Event 数据到 http://127.0.0.1:5701/ 失败: Post "http://127.0.0.1:5701/": dial tcp 127.0.0.1:5701: connectex: No connection could be made because the target machine actively refused it. 将进行第 2 次重试

这里上报出现了许多错误,是正常现象,因为我们没有监听程序,没地方上报
等我们接下来写完监听程序就不会这样了
注:第七行的[WARNING]: Protocol -> device lock is disable. http api may fail.属于正常现象,不需要找问题(不影响)

config.yml 中,还可以设置在线状态,参考在线状态

配置device.json(账号信息)

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
好的,以下是一个简单的示例代码,可以通过调用go-cqhttp提供的HTTP接口来实现用户金币数量的记录和管理: ```go package main import ( "fmt" "net/http" "net/url" ) const apiURL = "http://127.0.0.1:5700" func main() { // 获取用户金币数量 gold, _ := getGold("123456") // 假设用户 ID 为 123456 fmt.Println("当前金币数量:", gold) // 增加用户金币数量 incGold("123456", 10) // 增加 10 个金币 // 获取用户金币数量 gold, _ = getGold("123456") fmt.Println("增加后金币数量:", gold) } // 获取用户金币数量 func getGold(userID string) (int, error) { resp, err := http.Get(apiURL + "/get_group_member_info?group_id=123456&user_id=" + userID) if err != nil { return 0, err } defer resp.Body.Close() // 解析返回的 JSON 数据 var data struct { User struct { Gold int `json:"gold"` } `json:"user"` } err = json.NewDecoder(resp.Body).Decode(&data) if err != nil { return 0, err } return data.User.Gold, nil } // 增加用户金币数量 func incGold(userID string, gold int) error { // 构造请求参数 values := url.Values{} values.Set("user_id", userID) values.Set("gold", strconv.Itoa(gold)) resp, err := http.PostForm(apiURL + "/inc_gold", values) if err != nil { return err } defer resp.Body.Close() // 解析返回的 JSON 数据 var data struct { RetCode int `json:"retcode"` Status string `json:"status"` } err = json.NewDecoder(resp.Body).Decode(&data) if err != nil { return err } if data.RetCode != 0 { return fmt.Errorf("api error: %s", data.Status) } return nil } ``` 在上面的代码中,我们使用http 包来发送 HTTP 请求,调用了 go-cqhttp 提供的 "/get_group_member_info" 和 "/inc_gold" 接口来实现获取用户金币数量和增加用户金币数量的功能。你可以根据自己的需求修改代码,例如修改接口地址、请求参数等。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饭a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值