相关链接 见文末

酷Q [CQHTTP Python Async SDK] 入坑指南

介绍和文档

CQHTTP Python Async SDK 是 酷Q 的 CQHTTP 插件的 异步 Python SDK 版本,采用异步 I/O,封装了 web 服务器相关的代码,支持 CQHTTP 的 HTTP 和反向 WebSocket 两种通信方式,让使用 Python 的开发者能方便地开发插件。

本 SDK 要求使用 Python 3.7 或更高版本、CQHTTP v4.8 或更高版本。

—-CQHTTP Python Async SDK

为什么用这个?

我之前写的 python 的机器人框架用的这个

基于 quart 框架写的采用了异步的方式,因此效率更高。(flask 和 quart 的对比)

保留了 quart 的功能,可以额外添加网页访问等功能。

采用 websocket 可以实现酷Q程序和机器人主要代码分离。

前置知识

flask

一个 flask 程序大概是这样的

code 1_flask.py

@app.route("xxx") 定义了一个路由,即一个特定的URL的位置。

之后当访问特定的URL时,会解析到该位置

例如

访问地址

路由

localhost:2333

/

Index Page

localhost:2333/hello

/hello

Hello World

异步程序

Python 3.4 引入了 asyncio 模块,增加了异步编程,跟 JavaScript 的async/await 极为类似,大大方便了异步任务的处理。它受到了开发者的欢迎,成为从 Python 2 升级到 Python 3 的主要理由之一。

asyncio 模块最大特点就是,只存在一个线程,跟 JavaScript 一样。

由于只有一个线程,就不可能多个任务同时运行。asyncio 是”多任务合作”模式(cooperative multitasking),允许异步任务交出执行权给其他任务,等到其他任务完成,再收回执行权继续往下执行,这跟 JavaScript 也是一样的。

—-Python 异步编程入门@阮一峰的网络日志

简单来说

一个问题:

早晨起床家里就你一个人在家,要做下面的事情

烧水 20min

洗漱 10min

淘米 10min

煮饭 20min

整理房间 15min

你会怎么干?

你的任务

同时进行的

时长

洗漱

烧水

10min

淘米

烧水

10min

整理房间

煮饭

20min

简单来说,就是异步程序,一个时间还是只能执行一个程序,但是执行顺序并不是固定的,在等待的时候可以把控制权交出,执行别的程序,等到完成后再收回控制权。这样表现出来就是交叉运行了(但是实际上还是同一时刻只有一个进程在运行)

这里不过多展开,需要的话可以自行了解

quart

quart 是一个和 flask 非常类似的 web 框架,区别是底层采用了异步的架构,简单来说,从一个 flask 程序过渡到 quart,只需要改变全部的库(和 flask 有关的变成 quart 对应的模块),然后对应的加上 await / async 即可。

code 2_quart.py

cqhttp

cqhttp 是酷Q端的插件。负责将酷Q的数据通过 websocket 发给后端。

配置

首先下载酷Q和cqhttp插件io.github.richardchien.coolqhttpapi.cpk

将插件放到 酷Q下的app目录,之后打开酷Q

在 CQHTTP 配置文件 \data\app\io.github.richardchien.coolqhttpapi\config 中,填写 ws_reverse_url 值为 ws://127.0.0.1:8080/ws/ ,这里 127.0.0.1:8080 应根据情况改为 bot.py 中传给 bot.run 的 host 和 port 参数。

然后,如果有的话,删掉 ws_reverse_event_url 和 ws_reverse_api_url 这两个配置项。

接着设置 use_ws_reverse 为 true。

最后重启 CQHTTP。

python-aiocqhttp 介绍

模块内部内置了一个 quart 作为 web 服务器,因此语法和 quart/flask 非常类似。python-aiocqhttp 作为 web 服务器,与酷Q的插件 cqhttp 相结合进行通信。cqhttp 将酷Q的消息编码成 json 发送到 python-aiocqhttp,同时 python-aiocqhttp 对其进行解析和封装。

除了酷Q的各种事件注册成了路由,python-aiocqhttp 同时也支持添加 quart 的路由。详见 aicocqhttp 文档 #添加路由

实例

上手第一个程序

一个简单的人工

ZZ

看一段对话

实现只有两行

展开来看核心代码

详见这段代码

code 3_aizz.py

QQ点歌系统

酷Q + python

之前试过了,QQ音乐的数据最好弄到。所以就用QQ音乐了

1. 抓包获取API

以勾指起誓为例,搜索勾指起誓,推测服务器端返回一个json信息,在F12中一条条找,找到这个链接

对这段代码URL反编码可以看到,如图,参数列表有这么多。如果不想折腾可以直接替换里面的勾指起誓这四个字。但是作为尝试,为什么不折腾呢?

放到postman里面,一个参数一个参数尝试,发现至少需要保留 w=歌名 format=json 这两个。(如果不带format,得到的是 callback( jsondata ) 的形式。之后别的就没有影响了。记下来得到的最简化的URL https://c.y.qq.com/soso/fcgi-bin/client_search_cp?format=json&w={0}

2. 测试 API

先写一个requests请求测试一下。没有问题,然后分析json

获取到的数据可以点这查看 json

第一首歌是 泠鸢yousa 的,链接https://y.qq.com/n/yqq/song/001uRLnP2aCu1T.html

看起来这一串001uRLnP2aCu1T是歌曲的一个ID之类的。去 json 里面搜索这个 应该是 .data.song.list[0].songmid

3. demo

结合上面获取到的API,可以写出下面的一个程序,获得搜索列表并且生成第一首歌的地址。

code 4_qqmusic.py

4. 酷Q

这个时候和酷Q结合一下就是这样了。(假设通过 #点歌 指令响应)

code 5_qqmusic_2.py

这里的 auto_escape=False 是转义 酷Q 码。比如这里面用到了 [CQ:at,qq={0}] 有的时候可能并不希望酷Q输出各种奇奇怪怪的信息(比如利用这个特性发送卡片消息,大量@等等,可以进行转义(即不会解析成特殊消息))

进一步的,还能得到音频的歌手、简介等等

完整版本(我目前用的)如下(还是整个项目的代码片段,项目开源)

code 6_qqmusic_3.py

在获取了这些信息之后,酷Q是有卡片消息分享的(需要酷Q pro 才能正常使用),详见这里,使用最后一个方式分享即可。(上面的那个音乐分享,因为没有音频链接这一项,所以没用)

5. 酷Q码

进群欢迎

code 7_welcome.py

更多功能

例如群成员增加、减少,撤回消息等等各种功能,看文档吧。

还有什么应用?

理论上,凡是python可以做到的东西,你都可以写成酷Q的插件(即将QQ作为输入输出)

除了常见的比如群管理、小游戏、使用工具等等QQ机器人之外

再比如我能想到的比较典型的比如这些

功能

思路

服务器状态监控

python定时获取/需要时获取服务器状态,处理后返回信息

物联网设备开关

在有API的情况下,可以通过python发送指令

和shell交互

比如mc的服务端等等

重定向stdio

客服系统

机器人对于收到的消息进行汇总,然后分发给不同的后端客服

跨服务器

cqhttp 和 python-aiocqhttp 之间是通过 websocket 交互的,也就是二者不必像酷Q一样必须运行在同一个设备。这样可以比如酷Q放到Windows上面,然后插件主体放到Linux,或者酷Q本身运行在普通账户,插件主体运行在低权限账户上面。

其他资料链接

链接:

我目前正在做的一个,在 python-aiocqhttp 的基础上进行的一个适合于小游戏等等侧重交互性的插件的框架。

GitHub 地址

个人仓库地址(镜像, 备用)

备用站点为镜像/反代站点。速度相较于原站点较慢,建议仅在直接访问非大陆的服务器(原站点)更慢的时候再选择备用站点。

酷q服务器未响应,酷Q [CQHTTP Python Async SDK] 入坑指南【已失效】相关推荐

  1. 吃鸡服务器未响应卸载,DNF大马猴辅助使用说明

    DNF大马猴官方下载地址:https://lanzous.com/b0c7zlvmj 本软件采用云更新模式,确保用户每次用的都是最新版本! 支持系统:全系统(包括最新win10最新版本) ------ ...

  2. 文档服务器连接未响应,win7DNS服务器未响应或者未连接问题的解决

    win7DNS服务器未响应或者未连接问题的解决 win7DNS服务器未响应或者未连接问题的解决 经常遇到别人问这个问题,今天搜集了一下网络上的解决方案,然后系统的整理了一下,便于大家理解和解决问题.我 ...

  3. lol为什么网络连接到服务器未响应,lol登陆服务器未响应是怎么回事 解决lol登陆服务器未响应有方法...

    最近有很多lol玩家遇到了"登陆服务器未响应,您可能遇到一个网络问题,请检查您的网络"的问题,那么这是什么造成的呢,又该如何解决呢?下面小编给大家分享解决"lol登陆服务 ...

  4. 电脑连接到网络显示未连接到服务器未响应,电脑dns服务器未响应怎么办?

    原标题:电脑dns服务器未响应怎么办? 电脑使用时间长了,就容易出现各种问题,很难完全去避免.比如在连接网络的时候,出现了无法连接的情况.经过检测,发现是是DNS 服务器未响应导致的.那么,这种情况应 ...

  5. wdns服务器未响应,Win7系统​网络诊断提示DNS服务器未响应的解决方法

    Win7系统​网络诊断提示DNS服务器未响应的解决方法 昨天小编的朋友Win7系统​网络诊断提示DNS服务器未响应的解决方法说,她win7系统电脑在开机的过程中,怎么都连接不上网络了,并且出现dns服 ...

  6. win10远端服务器未响应,win10怎么连远程服务器未响应

    win10怎么连远程服务器未响应 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. ...

  7. 手把手教你dns服务器未响应导致无法上网怎么办

    dns服务器未响应怎么办?其实每个问题都是有着相对应的原因外加解决方法的,我这刚好就有一篇关于如何解决dns服务器未响应的方法,现在就来分享给各位小伙伴们哈~ 不知道小伙伴们在使用电脑进行上网的时候, ...

  8. 突然不能访问服务器未响应,windows 访问不服务器未响应

    windows 访问不服务器未响应 内容精选 换一换 OBS Browser+是一款用于访问和管理对象存储服务的图形化工具,支持通过配置内网DNS服务器地址的方式,使在华为云上的Windows ECS ...

  9. pps服务器未响应_pps服务器未响应停止播放怎么解决

    在前面小编给大家讲解了一些关于PPS的内容,但是也有网友遇到了新的问题,今天就有网友问到小编,说在利用PPS看电影的时候,PPS服务器未响应停止播放了,问小编怎么解决.下面我们就来看看PPS服务器未响 ...

  10. 登录超时服务器未响应,怎样解决超时时间已到、在操作完成之前超时时间已过或服务器未响应的问题?...

    怎样解决超时时间已到.在操作完成之前超时时间已过或服务器未响应的问题? 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. ...

最新文章

  1. L型代码结构案例:Link访问权限(上)
  2. Class类和Object类及用法(二)
  3. php 网页解析错误,php-解析错误:语法错误,文件意外结束
  4. python进行四舍五入
  5. 云服务售后服务调研,参与问卷送福利!
  6. PAT_B_1013 数素数
  7. linux镜像文件iso下载RedHat,RedHat Enterprise Linux ISO文件下载镜像站点
  8. 关于四元数与欧拉角协方差阵转换的一些思考
  9. PS磨皮—高低频磨皮
  10. 华为企业组网实例:VRRP+MSTP典型组网配置
  11. Jaden Casing Strings
  12. 竹笛的分类有哪些?来认识竹笛的大家族。
  13. CenterNet:Objects as Points代码解析(九):通过高斯函数画热点图
  14. elasticsearch 性能优化
  15. HI618E音频解码芯片
  16. 苹果切换系统按哪个键_苹果全新笔记本 一体机正品专区
  17. 正确使用 protobuf 的姿势
  18. 考研政治---马克思主义基本原理概论---辩证法
  19. python re模块 正则表达式
  20. 新年,你拥有一个新灵魂了吗?

热门文章

  1. Mac安装yaf扩展
  2. 【Android游戏开发详细过程2】Android平台飞机大战游戏APP设计与实现
  3. 【转】Tapestry5和Eclipse的整合
  4. 【转载】Android网络开发案例
  5. 计算机毕业设计Java宠物医院后台管理系统设计与实现(源码+系统+mysql数据库+lw文档)
  6. IBM X3650优盘启动
  7. mysql数据库安装教程(超级超级详细)
  8. mysql操作 菜鸟,菜鸟通关宝典之mysql基础操作
  9. 如何删除vc2013上配置好的opencv
  10. 用VC2013编译了一个程序,在Windows 8、Windows 7(64位、32位)下都能正常运行。但在Win XP,Win2003下运行时,却报错不能运行