【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学

这篇具有很好参考价值的文章主要介绍了【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:
程序上云的服务器搭建步骤已经发布,大家可以移步至此查看:【0基础QQ机器人开发二】服务器篇

一、本文目的:

前段时间由于学习原因产生了一个自动化管理QQ群的需求,在我几天的努力之下,通过各种学习CV,终于实现了该需求,但是因为这个项目并不是很完美,里面有些许的bug,导致身为完美主义的我很快就将其弃用,等过了一段时间想将其完善一下的时候,发现之前在项目中所需要的知识已经忘得一干二净,因此有了这篇博客,这也是我在学习编程路上的一大痛点,因此,以后我会坚持发文,巩固学习,也希望大家可以互相监督,共同进步!!!

同时也可以为想要打造自己的QQ机器人的同学提供一点点经验.


二、实现历程:

有了需求之后,我便开始了我的面向百度编程,一开始想要通过web端QQ实现,结果突然想起web端qq已经停运,因此想要借助win32这个库,通过程序界面实现自动化,结果还是太年轻了,作为一个六边形小白,我连pywin32的库都看不太懂,因此继续面向百度编程,终于我在网上发现了不知道哪位大佬写的基于一个我也不知道的语言开发的框架基于go语言开发的框架go-cqhttp。


三、开发过程

1.准备工作

搭建一个QQ机器人需要什么?

  • 一台windows电脑
  • 一台云服务器

我们需要准备go-cqhttp以及python环境,如果想要把机器人部署在服务器上可以去腾讯云买一个服务器,服务器相当于一个远程的电脑,由专人维护而且稳定性高,可以实现7*24小时的运行,有了云服务器即可实现QQ机器人24小时在线啦,所以推荐大家使用服务器运行,什么?都3202年了你还没有服务器!赶紧去腾讯云买一个,具体教程选购云服务器,下面就跟上我的步伐,let’s go!!!

1.cq-http的下载地址:Releases · Mrs4s/go-cqhttp (github.com)

友情提示:如果登录不上github,大家可以通过我的百度云连接下载,我提供了x86机器的windows版和linux版两个包

进去之后我们可以看到有众多版本可以选择,大家根据电脑选择即可
不管你部署在哪里,都必须要安装windows版本,这个具体原因后面再说。

  • 如果要部署在服务器,可以再服务器使用uanem -a查看机器的架构,一般服务器都是x86_64所以我们选择linux_amd64.deb的版本即可【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学

    • 如果要部署在windows可以点击show all 25 assets选择windows_amd64.zip即可

【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学
下载好后

  • 如果要在windows上进行部署,直接解压可以看到如下安装包,【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学

  • 如果要在linux服务器上进行部署,如果下载的是deb包,可以直接使用sudo dpkg -i go-cqhttp_1.1.0_adm64.deb即可安装成功

2. 运行
windows平台

再windows平台下直接打开解压好的压缩包,运行go-cqhttp.exe即可运行
可能会出现如下弹窗,点击仍要运行
【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学
一直点确定即可

【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学最后可以看到文件夹多出了一个.bat文件 双击运行
【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学
运行后选择0 回车再关掉窗口
【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学

可以看到又多出了一个config.yml文件,这是文件用来设置我们要登陆的qq号以及一些其他的配置信息,双击使用记事本打开【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学
在相应位置输入账号和密码
【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学
保存并关闭

重点来了!!!
电脑要和登录qq的手机处于同一局域网下,也就是连接同一个wifi
然后双击go-cqhttp.bat运行
未完待续。。。
一下内容为之前写的,版本有些老了

  • linux平台在安装好后直接输入命令go-cqhttp即可运行

第一次运行会生成一个config.yml文件,这个文件是用来配置我们要登录的qq号和密码以及一些其他配置的文件

  • windows平台直接双击使用记事本打开config.yml,在相应的位置输入你的qq号
  • linux平台需要使用文本编辑器来编辑文件。
2.python环境的配置

在linux服务器上安装python,一般服务器都会自带python开发环境


2.程序配置

1.将go-cqhttp解压之后出现会三个文件

【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学

我们双击go-cqhttp.exe文件

这时候会出现如下界面:

【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学

我们无脑确认就可以

2.这时候我们发现文件里多出了一个.bat文件【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学

.bat文件是批处理文件,我们可以通过运行.bat文件运行我们提前在里面写好的cmd命令

这时我们运行.bat文件,出现如下窗口

【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学

这里我们输入0再回车,选择HTTP通信

  1. 这时文件中又多出了一个config.yml文件

【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学

4.重点来了

这个配置文件就是一直让我出错,出bug的根源,这里是我配置好的,可以直接复制到你的.yml文件中用,只需要吧QQ账号和密码(密码为空时会使用扫码登陆)替换成你的即可(.yml文件可以直接用记事本打开)

这里说几个我认为比较重要的点:

  • heartbeat是心跳频率,貌似是用于防止腾讯把你踢下线的,不需要可以改为-1

  • 【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学
    5700端口是用于向服务器发送请求的端口

  • 【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学
    5701端口是用于监听返回的消息的端口

  • max-retries最好设置为0,因为第一次用的时候发现一条消息总是接收好几遍,原来是这个参数搞的鬼

以上两个端口如果跟你电脑使用的端口有重复可以进行修改,防止出问题

# go-cqhttp 默认配置文件

account: # 账号相关
  uin: 123456 # QQ账号
  password: '' # 密码为空时使用扫码登录
  encrypt: false  # 是否开启密码加密
  status: 0      # 在线状态 请参考 https://docs.go-cqhttp.org/guide/config.html#在线状态
  relogin: # 重连设置
    delay: 3   # 首次重连延迟, 单位秒
    interval: 3   # 重连间隔
    max-times: 0  # 最大重连次数, 0为无限制

  # 是否使用服务器下发的新地址进行重连
  # 注意, 此设置可能导致在海外服务器上连接情况更差
  use-sso-address: true
  # 是否允许发送临时会话消息
  allow-temp-session: false

heartbeat:
  # 心跳频率, 单位秒
  # -1 为关闭心跳
  interval: 5

message:
  # 上报数据类型
  # 可选: string,array
  post-format: string
  # 是否忽略无效的CQ码, 如果为假将原样发送
  ignore-invalid-cqcode: false
  # 是否强制分片发送消息
  # 分片发送将会带来更快的速度
  # 但是兼容性会有些问题
  force-fragment: false
  # 是否将url分片发送
  fix-url: false
  # 下载图片等请求网络代理
  proxy-rewrite: ''
  # 是否上报自身消息
  report-self-message: false
  # 移除服务端的Reply附带的At
  remove-reply-at: false
  # 为Reply附加更多信息
  extra-reply-data: false
  # 跳过 Mime 扫描, 忽略错误数据
  skip-mime-scan: false

output:
  # 日志等级 trace,debug,info,warn,error
  log-level: warn
  # 日志时效 单位天. 超过这个时间之前的日志将会被自动删除. 设置为 0 表示永久保留.
  log-aging: 15
  # 是否在每次启动时强制创建全新的文件储存日志. 为 false 的情况下将会在上次启动时创建的日志文件续写
  log-force-new: true
  # 是否启用日志颜色
  log-colorful: true
  # 是否启用 DEBUG
  debug: false # 开启调试模式

# 默认中间件锚点
default-middlewares: &default
  # 访问密钥, 强烈推荐在公网的服务器设置
  access-token: ''
  # 事件过滤器文件目录
  filter: ''
  # API限速设置
  # 该设置为全局生效
  # 原 cqhttp 虽然启用了 rate_limit 后缀, 但是基本没插件适配
  # 目前该限速设置为令牌桶算法, 请参考:
  # https://baike.baidu.com/item/%E4%BB%A4%E7%89%8C%E6%A1%B6%E7%AE%97%E6%B3%95/6597000?fr=aladdin
  rate-limit:
    enabled: false # 是否启用限速
    frequency: 1  # 令牌回复频率, 单位秒
    bucket: 1     # 令牌桶大小

database: # 数据库相关设置
  leveldb:
    # 是否启用内置leveldb数据库
    # 启用将会增加10-20MB的内存占用和一定的磁盘空间
    # 关闭将无法使用 撤回 回复 get_msg 等上下文相关功能
    enable: true

  # 媒体文件缓存, 删除此项则使用缓存文件(旧版行为)
  cache:
    image: data/image.db
    video: data/video.db

# 连接服务列表
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: 'http://127.0.0.1:5701/'                # 地址
          secret: ''             # 密钥
          max-retries: 0         # 最大重试,0 时禁用
      #  retries-interval: 1500 # 重试时间,单位毫秒,0 时立即
      #- url: http://127.0.0.1:5701/ # 地址
      #  secret: ''                  # 密钥
      #  max-retries: 10             # 最大重试,0 时禁用
      #  retries-interval: 1000      # 重试时间,单位毫秒,0 时立即

5.当我们配置好以后,运行go-cqhttp.bat文件,按照提示进行登陆即可

出现如下界面即表示登陆成功

【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学

3.python程序开发

在这里我先为大家提供简单的接收发送消息的代码以及一些官方文档中的API,等有时间有人看了我再上传一些自己写的代码

import requests
import socket
import json

ListenSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ListenSocket.bind(('localhost', 5701))
ListenSocket.listen(100)

HttpResponseHeader = '''HTTP/1.1 200 OK
Content-Type: text/html
'''

def request_to_json(msg):
    for i in range(len(msg)):
        if msg[i]=="{" and msg[-1]=="}":
            return json.loads(msg[i:])
    return None


def rev_msg():
    Client, Address = ListenSocket.accept()
    Request = Client.recv(1024).decode(encoding='utf-8')
    # print(Request)
    rev_json=request_to_json(Request)
    Client.sendall((HttpResponseHeader).encode(encoding='utf-8'))
    Client.close()
    return rev_json


data = {
    'user_id': 123456,# QQ号
    'message': '你好',# 消息内容
    'auto_escape': False
}
cq_url = "http://127.0.0.1:5700/send_private_msg"
rev = requests.post(cq_url, data=data)
print(rev.url)

if __name__ == '__main__':
    print('============start==================')
    while True:
        rev_msg = rev_msg()
        user_id = rev_msg.setdefault('user_id')
        raw_message = rev_msg.setdefault('raw_message')
        print(f'您收到了来自{user_id}{raw_message}')

4.常用API

API 功能
/send_private_msg 发送私聊消息
/send_group_msg 发送群消息
/send_msg 发送消息
/delete_msg 撤回信息
/set_group_kick 群组踢人
/set_group_ban 群组单人禁言
/set_group_whole_ban 群组全员禁言
/set_group_admin 群组设置管理员
/set_group_card 设置群名片(群备注)
/set_group_name 设置群名
/set_group_leave 退出群组
/set_group_special_title 设置群组专属头衔
/set_friend_add_request 处理加好友请求
/set_group_add_request 处理加群请求/邀请
/get_login_info 获取登录号信息
/get_stranger_info 获取陌生人信息
/get_friend_list 获取好友列表
/get_group_info 获取群信息
/get_group_list 获取群列表
/get_group_member_info 获取群成员信息
/get_group_member_list 获取群成员列表
/get_group_honor_info 获取群荣誉信息
/can_send_image 检查是否可以发送图片
/can_send_record 检查是否可以发送语音
/get_version_info 获取版本信息
/set_restart 重启 go-cqhttp
/.handle_quick_operation 对事件执行快速操作
拓展 API 及与 OneBot 标准有略微差异的 API
拓展 API 功能
/set_group_portrait 设置群头像
/get_image 获取图片信息
/get_msg 获取消息
/get_forward_msg 获取合并转发内容
/send_group_forward_msg 发送合并转发(群)
/.get_word_slices 获取中文分词
/.ocr_image

四、心得

1.本文中有些知识点我还没来得及写下来,等过段时间我再继续整理

2.有需求才会有动力,通过这次QQ机器人的需求,我学习了TCP/IP协议,socket网络编程,requests库,json库等等,在此过程中收获颇丰,相较于看视频学习和看书学习,这样边学边用的过程极大地提高了知识点的复用性和实用性,因此也建议大家可以采用这样的方式来学习!!!

3.由于本人小白一枚,文中的不足之处还请各位童鞋多多指出!栓Q!!!

4.喜欢本文的同学不妨点个关注,我会持续更新一些有趣的内容~~文章来源地址https://www.toymoban.com/news/detail-402860.html

到了这里,关于【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • go-cqhttp+SpringBoot3实现QQ机器人

    1.调用青云客的API进行自动聊天 2.输入自动添加为好友 非特殊情况保持一致即可! 1.SpringBoot-3.0.5 2.JDK-17 3.go-cqhttp1.0 Github:GitHub - Mrs4s/go-cqhttp: cqhttp的golang实现,轻量、原生跨平台. gocq api文档地址:https://docs.go-cqhttp.org/api/ https://gitee.com/mumangguo/go-cqhttp   Friend类 Message类

    2024年02月14日
    浏览(50)
  • go-cqhttp,QQ机器人发语音+视频+表情+接入chatgpt

    windows布局go-cqhttp_哔哩哔哩_bilibili 注意:图片需要放到go-cqhttp的目录下的data/images下面,否则无法发送,网络图片可以直接发送

    2024年02月11日
    浏览(47)
  • 新版nonebot,go-cqhttp搭建qq机器人保姆级教程

    前段时间QQ进行了更新,所以导致了非手表协议扫码登陆报错的问题,不过好在大佬已经推出rc5版本的go-cqhttp,解决了这一头疼的问题 在开始之前,我需要说明一下,本文章是针对没有经验和基础的用户,所以说篇幅可能会长一点 你需要准备的东西有: python3.8及以上版本 虚

    2023年04月18日
    浏览(52)
  • 【Python简单QQ机器人】使用nonebot2与go-cqhttp构建

    目录 一、前言 nonebot2-2.0.0b4 QQ机器人详细教程 二、准备 1.Python 2.Pycharm 3.nonebot2 4.go-cqhttp 三、配置 1.搭建go-cqhttp 2.创建nonebot2机器人 四、运行 五、nonebot2插件         闲着没事干,忽看到群里面的qq机器人,想要学习一下,用了两天实现了本体的搭建并添加了一些插件。期间

    2024年02月09日
    浏览(55)
  • 使用go-cqhttp搭建本地qq机器人 并实现发送信息案例(使用python)语言实现

    目录 1.go-cqhttp简介 2.案例介绍 3.下载go-cqhttp 4.配置安装 ①:下载之后我们可以将执行程序放在一个新建的文件夹中,然后双击执行该程序 直接点击确定执行  ②:然后双击执行该程序,会看到让我们选择一种通信方式,我们直接输入0 选择HTTP通信 ,然后回车  ③:然后他会

    2024年02月14日
    浏览(62)
  • GLM联合go-cqhttp实现qq群GLM机器人服务器的本地化部署笔记

    以下chatgpt-mirai-qq-bot简称GPT转发程序 实现本地化部署的GLM q群机器人 最好16GB的显存 显卡性能要求不高 window环境 该项目的是利用lss233大佬的项目一头对接GLM模型将其消息处理成go-cqhttp可以处理的形式最后发送到qq群内 lss233大佬的项目地址 https://github.com/lss233/chatgpt-mirai-qq-bot

    2024年02月16日
    浏览(40)
  • 使用腾讯云服务器+Nonebot2+go-cqhttp搭建QQ聊天机器人【保姆级教程 2023最新版】

    下载go-cqhttp 这里有不同版本的cqhttp,并且对每个版本都有介绍。但是大家可以看到有 arm与adm 不同的版本,这两个啥关系呢? 严格来说, AMD和ARM没有任何关系 。AMD是桌面级处理器和桌面级GPU的生产厂商,而ARM是移动级处理器的生产厂商。AMD是目前业内唯一一个可以提供高性能

    2023年04月18日
    浏览(50)
  • 【linux系统版本Centos7】基于nonebot与go-cqhttp的机器人云端部署

    二、Centos7安装Python3环境💖 ======================================================================================== 部署及机器人的时候需要使用nb-cli库,但是目前只有python3.7.6以上的版本支持他。所以大家安装Python的时候一定要安装python3.7.6以上的版本。否则就会报错没有nb-cli库。在这里小编推

    2024年04月27日
    浏览(37)
  • Python基于Mirai开发的QQ机器人保姆式教程(亲测可用)

    在本教程中,我们将使用Python和Mirai来开发一个 QQ机器人 ,本文提供了三个教学视频, 包教包会 ,本文也很贴心 贴了代码和相关文件 。话不多说,直接开始教学。 目录 一、安装配置MIrai 图片验证码报错: 二、机器人的认证与绑定 视频教学 代码 认证和绑定 主程序 三、好

    2024年02月09日
    浏览(44)
  • 手把手QQ机器人制作教程,根据官方接口进行开发,基于Python语言制作的详细教程(更新中)

    QQ开放平台官方地址:https://q.qq.com/#/app/bot QQ开放平台包含:QQ机器人、QQ小程序、QQ小游戏,我们这边选择QQ机器人。 机器人类型:设置私域机器人或者公域机器人,当然公域机器人对于服务器的要求过高,我们这边选择 私域机器人 进行开发。 特别注意在选择沙箱频道的时候

    2023年04月08日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包