Nonebot框架开发酷Q机器人插件

nonebot官方文档:https://none.rclab.tk/guide/
cqhttp官方文档:https://cqhttp.cc/docs/4.10/#/

装饰器

—命令识别

@on_command()

  • name 定义命令名称 字符串类型

  • aliases=(cmd1,cmd2,…)元组类型的命令别名

  • permission= perm.权限
    权限可选值:
    PRIVATE_FRIEND 私人好友
    PRIVATE_GROUP 私人群
    PRIVATE_DISCUSS 私人讨论组
    PRIVATE_OTHER 私人其他
    PRIVATE 私人
    DISCUSS 讨论组
    GROUP_MEMBER 群成员
    GROUP_ADMIN 群管理
    GROUP_OWNER 群主
    GROUP 群
    SUPERUSER 超级管理员
    EVERYBODY 任何人

  • only_to_me = True 为True在群里唤醒机器人需要@,False则时不需要

  • privileged = False 默认值为False 是否开启特权,在存在会话的情况下也运行该装饰器下的函数

  • shell_like= False 默认值False 是否用类shell语法来分割命令后面的参数

—事件监听

@on_notice()
可选参数:

  • group_upload 事件名:群文件上传
  • group_admin 事件名:
    group_admin.set、group_admin.unset 事件子类型,分别表示设置和取消管理员
  • group_decrease 事件名:群成员减少
    group_decrease.leave、group_decrease.kick、group_decrease.kick_me 事件子类型,分别表示主动退群、成员被踢、登录号被踢
  • group_increase 事件名:群成员增加
    group_increase.approve、group_increase.invite 事件子类型,分别表示管理员已同意入群、管理员邀请入群
  • friend_add 事件名:好友添加

—消息控制

@on_message()

—请求处理

@on_request()
可选参数:

  • friend 好友添加请求
  • group 群添加请求(自身是群主或管理员)

消息处理

—发送回复消息

session.send()
参数:

  • message 要发送的消息内容
  • at_sender 回复时是否@消息发送者 默认为False
  • ensure_private 确定消息来源是否为私聊 默认为False
  • ignore_failure 是否忽略可能发送的错误 默认为True
  • **kargs 默认为None

—发送私聊消息

send_private_msg()
参数:

  • user_id number - 对方 QQ 号
  • message message - 要发送的内容
  • auto_escape boolean false 消息内容是否作为纯文本发送(即不解析 CQ 码),只在 message字段是字符串时有效

—发送群消息

send_group_msg()
参数:

  • group_id number - 群号
  • message message - 要发送的内容
  • auto_escape boolean false 消息内容是否作为纯文本发送(即不解析 CQ 码),只在 message
    字段是字符串时有效

—发送讨论组消息

send_discuss_msg()
参数:

  • discuss_id number - 讨论组 ID(正常情况下看不到,需要从讨论组消息上报的数据中获得)
  • message message - 要发送的内容
  • auto_escape boolean false 消息内容是否作为纯文本发送(即不解析 CQ 码),只在 message
    字段是字符串时有效

—发送消息

send_msg()
参数:

  • message_type string - 消息类型,支持
    private、group、discuss,分别对应私聊、群组、讨论组,如不传入,则根据传入的 *_id 参数判断
  • user_id number - 对方 QQ 号(消息类型为 private 时需要)
  • group_id number - 群号(消息类型为 group 时需要)
  • discuss_id number - 讨论组 ID(消息类型为 discuss 时需要)
  • message message - 要发送的内容
  • auto_escape boolean false 消息内容是否作为纯文本发送(即不解析 CQ 码),只在 message
    字段是字符串时有效

—撤回消息

ps:需要安装酷Q pro版才能实现该功能
delete_msg()
参数:

  • message_id number (int32)

—发送好友赞

ps:需要安装酷Q pro版才能实现该功能
send_like()
参数:

  • user_id number - 对方 QQ 号
  • times number 赞的次数默认值为1,每个好友每天最多 10 次

—处理加好友请求

set_friend_add_request()
参数:

  • flag string - 加好友请求的 flag(需从上报的数据中获得)
  • approve boolean true 是否同意请求
  • remark string 空 添加后的好友备注(仅在同意时有效)

—处理加群请求/邀请

set_group_add_request()
参数:

  • flag string - 加群请求的 flag(需从上报的数据中获得)
  • sub_type 或 type string - add 或 invite,请求类型(需要和上报消息中的 sub_type 字段相符)
  • approve boolean true 是否同意请求/邀请
  • reason string 空 拒绝理由(仅在拒绝时有效)

—发送文字

#文件位置:插件py文件中 发送其他类型消息同理
from nonebot import CommandSession,on_command
@on_command('你好')
async def auto_reply(session:CommandSession):await session.send('[转账] 0.01元转账需收款,请使用手机QQ查看。',at_sender=True)

—发送表情

QQ表情

[CQ:face,id=表情id]

emoji表情

[CQ:emoji,id=表情id]

原创表情

[CQ:bface,id=表情id]

小表情

[CQ:sface,id=表情id]

酷Q [CQ:face,*] 表情代码对应表:https://cqp.cc/t/36910
酷Q [CQ:emoji,*] emoji表情代码对应表:https://cqp.cc/t/15827

—发送图片

ps:需要安装酷Q pro版才能实现该功能

[CQ:image,file=文件名]

—发送语音

ps:需要安装酷Q pro版才能实现该功能

[CQ:record,file=文件名]

—分享音乐

[CQ:music,id=209249583,type=qq]

—发送窗口抖动

戳一戳

session.send('[CQ:shake,id=1]')

— @某人

{1}为被@的群成员帐号。若该参数为all,则@全体成员(次数用尽或权限不足则会转换为文本)。
举例:[CQ:at,qq=123456]

— 发送猜拳魔法表情

[CQ:rps,type={1}]
{1}为猜拳结果的类型,暂不支持发送时自定义。该参数可被忽略。
1 - 猜拳结果为石头
2 - 猜拳结果为剪刀
3 - 猜拳结果为布

— 发送掷骰子魔法表情

[CQ:dice,type={1}]
{1}对应掷出的点数,暂不支持发送时自定义。该参数可被忽略。

— 匿名发消息(仅支持群消息使用)

[CQ:anonymous,ignore={1}]
本CQ码需加在消息的开头。
当{1}为true时,代表不强制使用匿名,如果匿名失败将转为普通消息发送。
当{1}为false或ignore参数被忽略时,代表强制使用匿名,如果匿名失败将取消该消息的发送。
举例:
[CQ:anonymous,ignore=true]
[CQ:anonymous]

— 发送音乐

[CQ:music,type={1},id={2}]
{1}为音乐平台类型,目前支持qq、163、xiami
{2}为对应音乐平台的数字音乐id
注意:音乐只能作为单独的一条消息发送
举例:
[CQ:music,type=qq,id=422594](发送一首QQ音乐的“Time after time”歌曲到群内)
[CQ:music,type=163,id=28406557](发送一首网易云音乐的“桜咲く”歌曲到群内)

— 发送音乐自定义分享

[CQ:music,type=custom,url={1},audio={2},title={3},content={4},image={5}]
{1}为分享链接,即点击分享后进入的音乐页面(如歌曲介绍页)。
{2}为音频链接(如mp3链接)。
{3}为音乐的标题,建议12字以内。
{4}为音乐的简介,建议30字以内。该参数可被忽略。
{5}为音乐的封面图片链接。若参数为空或被忽略,则显示默认图片。
注意:音乐自定义分享只能作为单独的一条消息发送

— 发送链接分享

[CQ:share,url={1},title={2},content={3},image={4}]
{1}为分享链接。
{2}为分享的标题,建议12字以内。
{3}为分享的简介,建议30字以内。该参数可被忽略。
{4}为分享的图片链接。若参数为空或被忽略,则显示默认图片。
注意:链接分享只能作为单独的一条消息发送

群组管理

—群组踢人

set_group_kick()

—群组单人禁言

set_group_ban()

—群组匿名用户禁言

set_group_anonymous_ban()

—群组全员禁言

set_group_whole_ban()

—群组设置管理员

set_group_admin()

—群组匿名

set_group_anonymous()

—设置群名片

set_group_card()

—退出群组

set_group_leave()

—设置群组专属头衔

set_group_special_title()

—退出讨论组

set_discuss_leave()

—获取群列表

get_group_list()获取群成员信息 get_group_member_info()

—获取群成员列表

get_group_member_list()

—获取群信息

_get_group_info()

—获取会员信息

_get_vip_info()

—获取群公告

_get_group_notice()

–发布群公告

_send_group_notice()

数据获取

—获取登录号信息

get_login_info()
返回数据:

  • user_id number (int64) QQ 号
  • nickname string

—获取陌生人信息

get_stranger_info()
参数:

  • user_id number - QQ 号
  • no_cache boolean false 是否不使用缓存(使用缓存可能更新不及时,但响应更快)

返回数据:

  • user_id number (int64) QQ 号
  • nickname string 昵称
  • sex string 性别,male 或 female 或 unknown
  • age number (int32) 年龄

—获取 Cookies

get_cookies()
返回数据:

  • cookies string

—获取 CSRF Token

get_csrf_token()
返回数据:

  • token number (int32) CSRF Token

—获取 QQ 相关接口凭证

get_credentials()
返回数据:

  • cookies string Cookies值
  • csrf_token number(int32) CSRF Token

—获取语音

get_record()
参数:

  • file string - 收到的语音文件名(CQ 码的 file 参数),如
    0B38145AA44505000B38145AA4450500.silk
  • out_format string - 要转换到的格式,目前支持 mp3、amr、wma、m4a、spx、ogg、wav、flac
  • full_path boolean false 是否返回文件的绝对路径(Windows 环境下建议使用,Docker 中不建议)

返回数据:

  • file string 转换后的语音文件名或路径,如 0B38145AA44505000B38145AA4450500.mp3,如果开启了
    full_path,则如
    C:\Apps\CoolQ\data\record\0B38145AA44505000B38145AA4450500.mp3

—获取图片

get_image()
参数:

  • file string - 收到的图片文件名(CQ 码的 file 参数),如
    6B4DE3DFD1BD271E3297859D41C530F5.jpg

返回数据:

  • file string 下载后的图片文件路径,如
    C:\Apps\CoolQ\data\image\6B4DE3DFD1BD271E3297859D41C530F5.jpg

—获取插件运行状态

get_status()

—获取 酷Q 及 HTTP API 插件的版本信息

get_version_info()
返回数据:

  • app_initialized boolean HTTP API 插件已初始化
  • app_enabled boolean HTTP API 插件已启用
  • plugins_good object HTTP API 的各内部插件是否正常运行
  • app_good boolean HTTP API 插件正常运行(已初始化、已启用、各内部插件正常运行)
  • online boolean 当前 QQ 在线,null 表示无法查询到在线状态
  • good boolean HTTP API 插件状态符合预期,意味着插件已初始化,内部插件都在正常运行,且 QQ 在线

—检查是否可以发送图片

can_send_image()
返回数据:

  • yes boolean 是或否

—检查是否可以发送语音

can_send_record()
返回数据:

  • yes boolean 是或否

—重启 HTTP API 插件

set_restart_plugin()
参数:

  • delay number 0 要延迟的毫秒数,如果默认情况下无法重启,可以尝试设置延迟为 2000 左右

—清理数据目录

clean_data_dir()

  • 参数: data_dir string - 收到清理的目录名,支持 image、record、show、bface

—清理插件日志

clean_plugin_log()

—重启 酷Q,并以当前登录号自动登录(需勾选快速登录)

_set_restart()
参数:
字段名 数据类型 默认值 说明

  • clean_log boolean false 是否在重启时清空 酷Q 的日志数据库(log*.db)
  • clean_cache boolean false 是否在重启时清空 酷Q 的缓存数据库(cache.db)
  • clean_event boolean false 是否在重启时清空 酷Q 的事件数据库(eventv2.db)

— 检查更新

.check_update()

—对事件执行快速操作

.handle_quick_operation()

—获取 data 目录中的文件的接口

除了上面的 API,插件还提供一个简单的静态文件获取服务,请求方式只支持 HTTP 的 GET,URL 路径为 /data/
加上要请求的文件相对于 酷Q data 目录的路径。例如,假设 酷Q 主目录在 C:\Apps\CQA,则要获取
C:\Apps\CQA\data\image\ABCD.jpg.cqimg 的话,只需请求
/data/image/ABCD.jpg.cqimg,响应内容即为要请求的文件。 和上面的其它请求一样,如果配置文件中指定了 access
token,则每次请求需要在请求头中加入验证头 Authorization: Bearer your-token。
另外,请求的路径中不允许出现 …,即上级目录的标记,以防止恶意或错误的请求到系统中的其它文件。 本功能默认情况下不开启,在配置文件中将
serve_data_files 设置为 yes 或 true 即可开启,见 配置文件说明。

【python】nonebot--QQ接口库相关推荐

  1. smtplib库:Python使用QQ邮箱发送邮件

    目录 前言 发送email文本消息 发送email图片与附件消息 前言 一般来说,每个App都有一个意见反馈功能.对于企业,其意见反馈自然是发送到其服务器上,而对于个人应用来说,因为使用的人相对较少, ...

  2. 小伙用Python编写QQ机器人和女友聊了一下午都没被发现?

    1 技术选型 1.1 QQBot 百度了解到的第一个是QQBot,是一个用 python 实现的.基于腾讯 SmartQQ 协议的简单 QQ 机器人,可运行在 Linux 和 Windows 平台下, ...

  3. 小伙用Python编写QQ机器人和女朋友聊了一下午都没被发现?

    1 技术选型 1.1 QQBot 百度了解到的第一个是QQBot,是一个用 python 实现的.基于腾讯 SmartQQ 协议的简单 QQ 机器人,可运行在 Linux 和 Windows 平台下, ...

  4. Python 的协程库 greenlet 和 gevent

    greenlet 官方文档:https://greenlet.readthedocs.io/en/latest/ From:https://www.jianshu.com/u/3ab212f28d91 ...

  5. 可爱的python测试开发库及项目(python测试开发工具库汇总)

    转载: https://www.jianshu.com/p/ea6f7fb69501 可爱的python测试开发库及项目(python测试开发工具库汇总) github地址 相关书籍下载 Python ...

  6. Python - 140种标准库、第三方库和外部工具整理

    Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连接.数 ...

  7. Python从无到有搭建接口(API)自动化测试框架

    目录 1.前言 2.思路 3.正文 一.路径模块-initPath.py 二.配置文件模块-getConfig.py 三.读取用例模块-getCase.py 四.数据库操作模块-operatorDB. ...

  8. 可爱的python测试开发库(python测试开发工具库汇总)

    2019独角兽企业重金招聘Python工程师标准>>> 欢迎转载,转载请注明来源: github地址 谢谢点赞 本文地址 Python测试开发库 参考资料 https://githu ...

  9. python控制qq语音通话_懒人专用的奇淫技巧,用Python实现炫酷的语音操作电脑!...

    最近小编忙里偷闲的看了一部电影叫做<头号玩家>,虽然当时去电影院观看了,但是现在回看之后依然是感觉很过瘾,里面的虚拟现实让人看着非常的真实.小编也想过一把这种科幻的瘾. 虽然电影里的效果我 ...

  10. python+requests+pytest 接口自动化框架(四)

    目录 一.requests库简介 二.requests库常用方法 三.request()返回的response对象 四.实战案例 post(url, data=None, json=None, **k ...

最新文章

  1. java 深拷贝 流_(转)Java技巧:深拷贝的两种方式
  2. Requires: libstdc++.so.6(GLIBCXX_3.4.15)
  3. Win10解决无法访问其他机器共享的问题
  4. Winforn中设置ZedGraoh的GraphPane恢复到初始比例大小
  5. 大话设计模式—命令模式
  6. 上传图片---SpringMVC学习笔记(十一)
  7. Jenkins系列-Jenkins插件备份
  8. windows 批处理自学教程 基础篇
  9. class matplotlib.markers.MarkerStyle(marker=None, fillstyle=None)
  10. python画卡通皮卡丘_实现童年Pokémon,教你用Python画一只属于自己的皮卡丘
  11. python随机数据库_Python实现生成随机数据插入mysql数据库的方法
  12. 台式计算机运行慢怎么样能提高速度,电脑配置低怎么办 如何让电脑运行速度加快...
  13. 【C】有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中
  14. 华为服务器的系统,华为服务器系统
  15. 固定表头和第一列、内容可滚动的table表格
  16. SIGIR20|LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation
  17. 携程硅谷人才见面会邀请你参加!
  18. 浏览器状态响应码详解 1XX/2XX/3XX/4XX/5XX
  19. Python —— 列表的while循环遍历 、for循环遍历
  20. C++ 优先队列priority_queue,如何定义大小根堆

热门文章

  1. 10个精美免费PPT模板下载网站推荐
  2. zbbz加载成功用不了_cad加载应用程序不能加载
  3. tomcat乱码问题解决
  4. android7添加小工具,为Android应用添加桌面小工具(App Widget)
  5. c语言 字符串转浮点型函数
  6. 计算机开机密码设置要求,电脑设置开机密码
  7. dqo变换_一种基于dqo变换改进的电流检测新方法
  8. 外卖类应用的竞争与发展分析
  9. 学会Java输入输出流,看这一篇就够了,建议收藏!
  10. 基于深度学习的实时噪声抑制——深度学习落地移动端的范例