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

文章目录

  • 一、本文目的:
  • 二、实现历程:
  • 三、开发过程
    • 1.准备工作
        • 1.cq-http的下载地址:[Releases · Mrs4s/go-cqhttp (github.com)](https://github.com/Mrs4s/go-cqhttp/releases)
        • 2.python环境的配置
    • 2.程序配置
    • 3.python程序开发
      • 4.常用API
        • 拓展 API 及与 OneBot 标准有略微差异的 API
  • 四、心得

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

一、本文目的:

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

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


二、实现历程:

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


三、开发过程

1.准备工作

我们需要准备go-cqhttp以及python环境(基于windows下的python环境开发)

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

进去之后我们可以看到有众多版本可以选择,大家根据电脑选择即可:打开go-cqhttp_windows_amd64.zip进行下载

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sxqF87XX-1659249632172)(https://raw.githubusercontent.com/175603a/Figurebed/main/img/202207311305753.png)]

之后的解压不用我多说了吧

2.python环境的配置

Python环境配置教程(超详细图文版)_qq_35789981的博客-CSDN博客_python环境配置


2.程序配置

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

在这里插入图片描述

我们双击go-cqhttp.exe文件

这时候会出现如下界面:

在这里插入图片描述

我们无脑确认就可以

2.这时候我们发现文件里多出了一个.bat文件在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

4.重点来了

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

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

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

  • 在这里插入图片描述
    5700端口是用于向服务器发送请求的端口

  • image-20220731134222408
    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: falseheartbeat:# 心跳频率, 单位秒# -1 为关闭心跳interval: 5message:# 上报数据类型# 可选: string,arraypost-format: string# 是否忽略无效的CQ码, 如果为假将原样发送ignore-invalid-cqcode: false# 是否强制分片发送消息# 分片发送将会带来更快的速度# 但是兼容性会有些问题force-fragment: false# 是否将url分片发送fix-url: false# 下载图片等请求网络代理proxy-rewrite: ''# 是否上报自身消息report-self-message: false# 移除服务端的Reply附带的Atremove-reply-at: false# 为Reply附加更多信息extra-reply-data: false# 跳过 Mime 扫描, 忽略错误数据skip-mime-scan: falseoutput:# 日志等级 trace,debug,info,warn,errorlog-level: warn# 日志时效 单位天. 超过这个时间之前的日志将会被自动删除. 设置为 0 表示永久保留.log-aging: 15# 是否在每次启动时强制创建全新的文件储存日志. 为 false 的情况下将会在上次启动时创建的日志文件续写log-force-new: true# 是否启用日志颜色log-colorful: true# 是否启用 DEBUGdebug: 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=aladdinrate-limit:enabled: false # 是否启用限速frequency: 1  # 令牌回复频率, 单位秒bucket: 1     # 令牌桶大小database: # 数据库相关设置leveldb:# 是否启用内置leveldb数据库# 启用将会增加10-20MB的内存占用和一定的磁盘空间# 关闭将无法使用 撤回 回复 get_msg 等上下文相关功能enable: true# 媒体文件缓存, 删除此项则使用缓存文件(旧版行为)cache:image: data/image.dbvideo: 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文件,按照提示进行登陆即可

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

在这里插入图片描述

3.python程序开发

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

import requests
import socket
import jsonListenSocket = 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 Nonedef 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_jsondata = {'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.喜欢本文的同学不妨点个关注,我会持续更新一些有趣的内容~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/255182.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【最新】半小时教你制作出属于自己的QQ机器人【保姆级】

目录 前言QQ机器人功能展示一、安装nonebot2安装步骤建立一个新的机器人项目 二、安装go-cqhttp安装步骤修改配置 三、使用 前言 相信大家都有在QQ群见过QQ机器人&#xff0c;可以玩游戏、推送当日天气情况等。本文将基于nonebot2和go-cqhttp构建一个自定义的QQ机器人。 QQ机…

如何在linux上使用QQ(在终端上使用qq) mojo-qq

如何在linux终端上使用QQ 效果展示 介绍irc irc的历史非常悠久&#xff0c;那都是上个世界别人用来聊天的了&#xff0c;算是我接触到的最早的及时聊天 以下是来自google的简介 Internet Relay Chat (IRC) is an application layer protocol that facilitates communicatio…

QQ机器人

一、介绍 qqbot 是一个用 python 实现的、基于腾讯 SmartQQ 协议的 QQ 机器人&#xff0c;可运行在 Linux 、 Windows 和 Mac OSX 平台下。 本项目 github 地址&#xff1a; https://github.com/pandolia/qqbot 你可以通过扩展 qqbot 来实现&#xff1a; 监控、收集 QQ 消息自动…

实现一个QQ助手

一、准备工作 下载go-cqhttp&#xff0c;下载自己需要的版本&#xff0c;我是在ubuntu上搭建&#xff0c;我下载的是go-cqhttp_1.0.0-bata4_linux_amd64.deb 二、流程 2.1、生成配置文件 切换到下载路径&#xff0c;并执行如下命令&#xff1a; sudo dpkg -i go-cqhttp_1.0…

基于node.js和oicq的qq机器人 制作回顾分析笔记

目录 1 文章简介 2 项目介绍 3 qq机器人的登录部分 3.1 模块的调用 3.2 登录配置文件 3.3 登录部分 4. 普通非指令功能 4.1 自动复读 4.2 自助禁言 4.3 来点颜色 4.4 回复功能 5. 指令功能 5.1 删除图片 5.2 禁言 5.3 解除禁言 5.4 查看帮助 5.5 群白名单 5.6…

浙大知识图谱基础:学习笔记

0 基础知识 知识图谱中&#xff0c;知识的结构化表示主要有符号表示和向量表示两类方法。符号表示包括&#xff1a;一阶谓词逻辑&#xff0c;语义网络&#xff0c;描述逻辑和框架系统等。当前主要采用基于图的符号化知识表示&#xff0c;最常用的是有向标记图。 有向标记图分为…

识别在线视频中的歌曲并下载音乐

问题&#xff1a;视频中的歌曲觉得很好听&#xff0c;但又不知道是什么歌曲&#xff0c;如何解决&#xff1f; 1、在chrome商店中找到aha music 插件。 2、安装. 3、打开需要识别的视频网站&#xff0c;点击aha music按钮。 4、当找到该歌曲时&#xff0c;点击。 5、按F12 在…

小程序简单实现搜歌、听歌

这篇文章用了两个网易云音乐的接口&#xff08;不清楚是否是官方的&#xff09;&#xff0c;附上官方接口链接: 网易云音乐API / 本文所用接口&#xff1a; 1、http://musicapi.leanapp.cn/search 2、http://neteasecloudmusicapi.zhaoboy.com/song/url 效果图 相关代码如下 先…

java爬虫爬取音乐

以前写过一个音乐网站&#xff0c;我都是手动去下载音乐&#xff0c;并上传到网站&#xff0c;非常麻烦。 学习了HttpClinet和Jsoup 我决定完成一个简单的爬虫去收集音乐信息&#xff0c;并下载音乐&#xff1b; 先尝试做几个简单的小功能&#xff1a; 基本功能 1.根据歌曲…

计算机上面的音乐,电脑上如何识别音乐

电脑上如何识别音乐 我们都知道怎么在手机上使用软件来实现识别音乐的功能&#xff0c;但是在网上怎么识别呢。那么电脑上如何识别音乐呢?下面就让jy135小编来告诉大家吧&#xff0c;欢迎阅读。 首先打开midomi网站(http://www.midomi.com/) 见下图 点击网站上的“Click and S…

python音乐爬取

思路 本次爬取音乐使用reqursts模块&#xff0c;在安装此模块的基础上爬取音乐。 首先要获取抓包链接&#xff0c;这是一串网址&#xff0c;获取方法就是当你在浏览器界面播放音乐时打开开发者界面寻取。其次使用get()向服务器发送get请求 .content获取二进制数据。最后将此写入…

Spring AOP简介及相关案例

目录 一、Spring AOP简介 二、AOP相关术语 三、AOP入门案例 1. 引入依赖 2. 编写连接点 3. 编写通知类 4. 配置切面 5. 测试 四、通知类型 1. 编写通知方法 2. 配置切面 3. 测试 五、切点表达式 六、多切面配置 1. 编写发送邮件的通知 2. 配置切面 3. 测试 …

Java与数据库:JDBC和ORM框架的使用和效率优化

第一章&#xff1a;引言 随着互联网的快速发展和大数据时代的到来&#xff0c;数据库在软件开发中起到了至关重要的作用。Java作为一门强大而广泛应用的编程语言&#xff0c;提供了多种与数据库交互的方式。其中&#xff0c;JDBC和ORM框架是最常用的两种方式。本文将深入探讨J…

适合打游戏用的蓝牙耳机有哪些?吃鸡无延迟的蓝牙耳机推荐

现在手游的兴起&#xff0c;让游戏市场变得更加火爆&#xff0c;各种可以提高玩家体验的外设也越来越多&#xff0c;除了提升操作的外置按键与手柄外&#xff0c;能带来更出色音质与舒心使用的游戏耳机&#xff0c;整体氛围感更好&#xff0c;让玩家在细节上占据优势&#xff0…

打游戏的蓝牙耳机推荐哪一款?吃鸡蓝牙游戏耳机推荐

选倒一款好的蓝牙耳机&#xff0c;即可以享受美妙音乐&#xff0c;也可以沉浸于深度游戏体验之中&#xff0c;能够让自己的身心压力得到释放。不过呢&#xff0c;最近发现很多人在买蓝牙耳机的时候都不知道怎么选一款靠谱的产品。作为已有5年多玩机经验的爱好者&#xff0c;今天…

即兴演讲、怎么锻炼即兴演讲能力、一些即兴演讲的模板

文章目录 应有素质准备方法模糊性临场性 组合形式并列式正反式递进式 基本技巧举例说明**一. 散 点 联 想 法****二. 问题--原因--解决方案****三. 感谢--回顾--愿景****四. 观 音 按 揭 法****五. 黄 金 三 点 法****六. 总 结****1. 五个名称-锻炼你的大脑快速反应能力****2.…

String字符串

文章目录 String类String常用的字符串处理方法StringBuffer类 StringBufferStringBuffer类中常用的方法StringBuilder类&#xff08;了解为主&#xff09;StringTokenzier类&#xff08;了解为主&#xff09; final属性&#xff0c;不可扩展&#xff0c;不可子类&#xff0c;不…

在idea中创建一个SpringBoot模块

方式一&#xff1a;自动创建&#xff08;需要联网&#xff09; 第一步&#xff1a;新建模块 按住ctrlshiftalts&#xff0c;打开项目结构&#xff0c;选择新建模块&#xff1b; 第二步&#xff1a;选择Spring Web &#xff08;1&#xff09;选择SpringBoot版本&#xff0c…

结构型模式的设计模式笔记

此笔记是在软件秘笈-设计模式那点事上做的笔记 一.适配器模式 1.设计思路 既有的软件结构具有稳定运行的基础&#xff0c;但是却无法直接利用到新的程序当中&#xff0c;这时就需要一个适配器&#xff0c;在原有内容和新的结果之间沟通&#xff0c;从而达到预期的效果 &#…

asp.net 面试题目

1、页面传值的方式及其优缺点?Session,Application,Cookies,Requst.QueryString,Requst.Form,Server.Transfer(通过Context.Handler接收整个页面)2、ASP.NET身份验证方式及其工作原理Windows 身份验证提供程序提供有关如何将 Windows 身份验证与 Microsoft Internet 信息服务 …