当前位置: 首页 > news >正文

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第二期]

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第二期]

第二期介绍:频道模块之频道管理

目录

  • QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第二期]
    • 第二期介绍:频道模块之频道管理
      • 获取用户详情
      • 获取用户频道列表
      • 获取频道详情
      • 获取子频道列表
      • 获取子频道详情
      • 创建子频道
      • 修改子频道
      • 删除子频道
      • 致谢和更新


不懂得的也可以来私聊或评论区问哦~
在这里插入图片描述
原力到一千才可以推广,三连啊喂!!!


在这里插入图片描述

获取用户详情

接口

GET /users/@me

功能描述
用于获取当前用户(机器人)详情。

Content-Type

application/json

返回
返回 User 对象。

错误码
详见错误码。

Python示例

# 用于获取当前用户(机器人)详情。
import requestsurl = "https://api.sgroup.qq.com/users/@me"
Authorization = f"QQBot {这个内容填写第一期我们获取的调用凭证}"
herders = {"Content-Type": "application/json","Authorization": Authorization}response = requests.get(url, headers=herders)print(response.json())

获取的数据包如下:

{"id": "11586990140073229091","username": "gitsub","avatar": "https://thirdqq.qlogo.cn/g?b=oidb&k=M5TibpXicS7Jt4z89BZxiamAA&s=100&t=1641802698","union_openid": "74F138F7F3AF68C4B8E8325013FCA295","union_user_account": ""
}

在这里插入图片描述

获取用户频道列表

接口

GET /users/@me/guilds

功能描述
用于获取当前用户(机器人)所加入的频道列表,支持分页。

当 HTTP Authorization 中填入 Bot Token 是获取机器人的数据,填入 Bearer Token 则获取用户的数据。

总的来说就是

Authorization = f"QQBot {这个内容填写第一期我们获取的调用凭证}"

你要获取机器人数据,格式为QQBot {这个内容填写第一期我们获取的调用凭证},如果获取用户数据,格式为Bearer 调用凭证

Content-Type

application/json

返回
返回 Guild 对象数组。

错误码
详见错误码。

Python示例

import requests"""
用于获取当前用户(机器人)所加入的频道列表,支持分页。当 HTTP Authorization 中填入 Bot Token 是获取机器人的数据,填入 Bearer Token 则获取用户的数据。
"""url = "https://api.sgroup.qq.com/users/@me/guilds"
Authorization = f"QQBot {这个内容填写第一期我们获取的调用凭证}"
headers = {"Content-Type": "application/json","Authorization": Authorization
}response = requests.get(url, headers=headers).json()
print(response)

获取的数据包如下:

[{"id": "696527283900292399","name": "鹅们的萌宠啦咔咔啦","icon": "https://groupprohead-76292.picgzc.qpic.cn/482231626508223/100?t=1626508224633","owner_id": "4828365788198541698","owner": false,"joined_at": "2021-12-08T16:12:31+08:00","member_count": 17,"max_members": 300,"description": "123"
}]

🧐这里需要注意,当你有多个频道时,你获取的数据包格式为:

[{你第一个频道的数据},{你第二个频道的数据},{...}]

当你想要获取其中某一个值时,例如 id 的值,可以使用:

response[0]['id']

在这里插入图片描述

获取频道详情

接口

GET /guilds/{guild_id}

🧐在获取频道列表的数据包后,数据包内包含了频道的 guild_id

功能描述
用于获取 guild_id 指定的频道的详情。

Content-Type

application/json

返回
返回 Guild 对象

错误码
详见错误码。

Python示例

import requests
"""
用于获取 guild_id 指定的频道的详情。
"""
url = f"https://api.sgroup.qq.com/guilds/{guild_id}"
Authorization = f"QQBot {这个内容填写第一期我们获取的调用凭证}"
herders = {"Content-Type": "application/json","Authorization": Authorization}response = requests.get(url, headers=herders).json()
print(response)

获取的数据包如下:

{"id": "123456","name": "xxxxxx","icon": "xxxxxx","owner_id": "xxxxxx","owner": false,"joined_at": "2022-01-13T11:02:21+08:00","member_count": 5,"max_members": 300,"description": "千江有水千江月,万里无云万里天"
}

在这里插入图片描述

获取子频道列表

接口

GET /guilds/{guild_id}/channels

🧐在获取频道列表的数据包后,数据包内包含了频道的 guild_id

功能描述
用于获取 guild_id 指定的频道下的子频道列表。

Content-Type

application/json

返回
返回 Channel 对象数组。

错误码
详见错误码。

Python示例

import requestsurl = f"https://api.sgroup.qq.com/guilds/{guild_id}/channels"
Authorization = f"QQBot {这个内容填写第一期我们获取的调用凭证}"
herders = {"Content-Type": "application/json","Authorization": Authorization}response = requests.get(url, headers=herders).json()
print(response)

获取的数据包如下:

[{"id": "xxxxxx","guild_id": "123456","name": "很高兴遇见你","type": 4,"position": 2,"parent_id": "0","owner_id": "0","sub_type": 0},{"id": "xxxxxx","guild_id": "123456","name": "🔒管理员议事厅","type": 0,"position": 1,"parent_id": "xxxxxx","owner_id": "0","sub_type": 0,"private_type": 1},{"id": "xxxxxx","guild_id": "123456","name": "🚪小黑屋","type": 0,"position": 2,"parent_id": "xxxxxx","owner_id": "0","sub_type": 0,"private_type": 0},{"id": "xxxxxx","guild_id": "123456","name": "新的子频道","type": 0,"position": 2,"parent_id": "123456","owner_id": "0","sub_type": 0,"private_type": 2}
]

🧐这里需要注意,当你有多个子频道时,你获取的数据包格式为:

[{你第一个频道的数据},{你第二个频道的数据},{...}]

当你想要获取其中某一个值时,例如 id 的值,可以使用:

response[0]['id']

在这里插入图片描述

获取子频道详情

接口

GET /channels/{channel_id}

🧐在获取子频道列表的数据包后,数据包内包含了频道的 channel_id

功能描述
用于获取 channel_id 指定的子频道的详情。

Content-Type

application/json

返回
返回 Channel 对象。

错误码
详见错误码。

Python示例

import requestsurl = f"https://api.sgroup.qq.com/channels/{channel_id}"
Authorization = f"QQBot {这个内容填写第一期我们获取的调用凭证}"
herders = {"Content-Type": "application/json","Authorization": Authorization}response = requests.get(url, headers=herders).json()
print(response)

获取的数据包如下:

{"id": "123456","guild_id": "xxxxxx","name": "很高兴遇见你","type": 4,"position": 2,"owner_id": "0","sub_type": 0,"private_type": 0,"speak_permission": 0,"application_id": "0"
}

在这里插入图片描述

创建子频道

接口

POST /guilds/{guild_id}/channels

功能描述
用于在 guild_id 指定的频道下创建一个子频道。

  • 要求操作人具有管理频道的权限,如果是机器人,则需要将机器人设置为管理员。
  • 创建成功后,返回创建成功的子频道对象,同时会触发一个频道创建的事件通知。

注意
公域机器人暂不支持申请,仅私域机器人可用,选择私域机器人后默认开通。
注意: 开通后需要先将机器人从频道移除,然后重新添加,方可生效。

Content-Type

application/json

参数

字段名类型描述
namestring子频道名称
typeint子频道类型 ChannelType
sub_typeint子频道子类型 ChannelSubType
positionint子频道排序,必填;当子频道类型为 子频道分组(ChannelType=4) 时,必须大于等于 2
parent_idstring子频道所属分组ID
private_typeint子频道私密类型 PrivateType
private_user_idsstring 数组子频道私密类型成员 ID
speak_permissionint子频道发言权限 SpeakPermission
application_idstring应用类型子频道应用 AppID,仅应用子频道需要该字段

返回
返回 Channel 对象。

错误码
详见错误码。

Python示例

import requestsurl = f"https://api.sgroup.qq.com/guilds/{guild_id}/channels"
Authorization = f"QQBot {你自己的鉴权}"data = {"name": "测试频道1",# 名字随意"type": 0,# 文字子频道"position": 1,"parent_id": "xxx","owner_id": "xxx","sub_type": 0,"private_type": 0
}herders = {"Content-Type": "application/json","Authorization": Authorization}response = requests.post(url, headers=herders, json=data).json()
print(response)

获取的数据包如下:

{"id": "xxxxxx","guild_id": "xxxxxx","name": "测试频道1","type": 0,"position": 1,"parent_id": "xxxxx","owner_id": "xxxxxx","sub_type": 0
}

在这里插入图片描述

修改子频道

接口

PATCH /channels/{channel_id}

🧐在获取子频道列表的数据包后,数据包内包含了频道的 channel_id

功能描述
用于修改 channel_id 指定的子频道的信息。

  • 要求操作人具有管理子频道的权限,如果是机器人,则需要将机器人设置为管理员。
  • 修改成功后,会触发子频道更新事件。

注意
公域机器人暂不支持申请,仅私域机器人可用,选择私域机器人后默认开通。
注意: 开通后需要先将机器人从频道移除,然后重新添加,方可生效。

Content-Type

application/json

参数

字段名类型描述
namestring子频道名
positionint排序
parent_idstring分组 id
private_typeint子频道私密类型 PrivateType
speak_permissionint子频道发言权限 SpeakPermission

🤗需要修改哪个字段,就传递哪个字段即可。

返回
返回 Channel 对象。

错误码
详见错误码。

Python示例

import requestschannel_id = "xxx"
url = f"https://api.sgroup.qq.com/channels/{channel_id}"
Authorization = f"QQBot xxx"data = {"name": "测试频道2",
}herders = {"Content-Type": "application/json","Authorization": Authorization}response = requests.patch(url, headers=herders, json=data).json()
print(response)

获取的数据包如下:

{"id": "xxxxxx","guild_id": "xxxxxx","name": "测试频道2","type": 0,"position": 1,"parent_id": "xxxxx","owner_id": "xxxxxx","sub_type": 0
}

在这里插入图片描述

删除子频道

接口

DELETE /channels/{channel_id}

🧐在获取子频道列表的数据包后,数据包内包含了频道的 channel_id

功能描述
用于删除 channel_id 指定的子频道。

  • 要求操作人具有管理子频道的权限,如果是机器人,则需要将机器人设置为管理员。
  • 修改成功后,会触发子频道删除事件。

注意
公域机器人暂不支持申请,仅私域机器人可用,选择私域机器人后默认开通。
注意: 开通后需要先将机器人从频道移除,然后重新添加,方可生效。

Content-Type

application/json

返回
成功返回 HTTP 状态码 200。

错误码
详见错误码。

Python示例

import requestschannel_id = "xxx"
url = f"https://api.sgroup.qq.com/channels/{channel_id}"
Authorization = f"QQBot xxx"herders = {"Content-Type": "application/json","Authorization": Authorization}response = requests.delete(url, headers=herders, json=data).json()
print(response)

注意
子频道的删除是无法撤回的,一旦删除,将无法恢复。
在这里插入图片描述

致谢和更新

文章持续更新,如果三连支持,速更!!!
请在评论区提出疑惑和建议
上次更新: 9/8/2024, PM

👻关于频道和子频道事件,它们基于websocket方法。因为目前在讲openapi方法调用QQ频道机器人,所以暂时跳过这部分,当然放心啦,三连我速更,肯定会讲啦。


在这里插入图片描述
文章内容都是连续的,如果你在本文没有找到解决办法,不如前往其他几期寻找答案吧😉

⬅️QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第一期]

➡️QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期]

相关文章:

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第二期]

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第二期] 第二期介绍:频道模块之频道管理 目录 QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第二期]第二期介绍:频道模块之频道管理获取用户详情获取用户频道列表获取频道详情获取子频道列表获…...

参赛心得和思路分享:2021第二届云原生编程挑战赛2: 实现一个柔性集群调度机制

关联比赛: 2021第二届云原生编程挑战赛2:实现一个柔性集群调度机制 参赛心得 历时快两个月的第二届云原生编程挑战赛结束了,作为第一次参赛的萌新,拿下了28名的成绩,与第一名差了19万分,因为赛制时间太长&#xff0c…...

具体函数的卡诺图填入

目录 用卡诺图表示逻辑函数 基本步骤 例子1 例子2 例子3 用卡诺图表示逻辑函数 基本步骤 例子1 由真值表得卡诺图。 在函数值为1的地方在卡诺图上画上1。 例子2 例子3 非标准与或式,要找到公共部分。 将AB所在的那一行填上1。 将A非D的那个部分也填上1。 再…...

STM32 HAL freertos零基础(六)计数型信号量

1、计数型信号量 计数型信号量(Counting Semaphore)是另一种类型的信号量,它可以保持一个大于等于0的整数值,这个值表示可用资源的数量。本质上相当于队列长度大于1得队列。经典问题就是剩余车辆统计,出入车辆,车辆数据可以实时更新。 2、相关API函数 xSemaphoreCreat…...

Dynamics CRM Ribbon Workbench-the solution contains non-entity components

今天在一个低版本的环境里准备用Ribbon Workbench去编辑一个按钮时,遇到了如下错误 一开始没当回事,以为是我的解决方案问题,去检查了下,只有一个组件,并且哪怕我把组件换成了某个实体也不行,尝试了其他任何…...

谷歌对抗司法部:为什么谷歌的“数百个竞争对手”说法站不住脚

随着谷歌反垄断陪审团审判的进行,谷歌声称美国司法部对广告技术市场的看法狭隘,并且广告商和出版商有很多替代选择。然而,证据并不支持这一说法。 谷歌误导性地声称有“数百个竞争对手。” 虽然存在许多广告技术提供商,但谷歌在…...

重生奇迹MU 沉迷升级的快感 法魔升级机器人

重生奇迹MU是一款以升级为主要玩法的游戏。升级是游戏基础,也是最重要的部分。通过升级,玩家可以获得更多的基础属性奖励和自由点数奖励,同时还能够穿戴最好的装备和翅膀。因此,升级在游戏中具有极其重要的地位。 史上升级最快的…...

从地图到智能地图:空间索引技术如何改变我们的世界

图源:WL 为什么空间索引很有用? 在处理地理空间数据时,空间索引是一个至关重要的功能,它决定了我们如何高效地从海量的地理数据中检索出所需的信息。想象一下,如果你正在处理一个包含数千万乃至数亿条记录的数据库,…...

深入理解AI Agent架构,史上最全解析!赶紧码住!

AI Agent框架(LLM Agent):LLM驱动的智能体如何引领行业变革,应用探索与未来展望 1. AI Agent(LLM Agent)介绍 1.1. 术语 Agent:“代理” 通常是指有意行动的表现。在哲学领域,Agen…...

苹果iOS/ iPadOS18 RC 版、17.7 RC版更新发布

iPhone 16 / Pro 系列新机发布后,苹果一同推出了 iOS 18 和 iPadOS 18 的 RC 版本,iOS 18 RC 的内部版本号为22A3354,本次更新距离上次发布 Beta/RC 间隔 12 天。 在 iOS 18 中,苹果给我们带来了 Apple Intelligence,这…...

CAN集线器(工业级、隔离式)

型号: MS-HUB-C 概述 MS-HUB 是一款可通过一路 CAN ,一路 RS-232为主口扩展出 7 路 CAN 从口的工业级光电隔离型 CAN 分配器。可以有效的实现 CAN 网络的中继、扩展与隔离。采用先进的自动流控技术自动侦测CAN 信号流向。MS-HUB 具备光电隔离功能&#x…...

代码随想录训练营 Day57打卡 图论part07 53. 寻宝(prim,kruskal算法)

代码随想录训练营 Day57打卡 图论part07 卡码53. 寻宝 题目描述 在世界的某个区域,有一些分散的神秘岛屿,每个岛屿上都有一种珍稀的资源或者宝藏。国王打算在这些岛屿上建公路,方便运输。 不同岛屿之间,路途距离不同,…...

Hibernate QueryPlanCache 查询计划缓存引发的内存溢出

目录 1.排查方式2.结论3.解决办法 前言:在生产环境中有一个后端程序多次报oom然后导致程序中断。 1.排查方式 通过下载后端程序产生的oom文件,将oom文件导入MemoryAnalyzer程序分析程序堆内存使用情况。 1、将oom文件导入MemoryAnalyzer后可以看到概览信…...

前端开发的观察者模式

什么是观察者设计模式 观察者模式(Observer Pattern)是前端开发中常用的一种设计模式。它定义了一种一对多的依赖关系,使得当一个对象的状态发生改变时,其所有依赖对象都能收到通知并自动更新。观察者模式广泛应用于事件驱动的系…...

Pycharm 输入三个引号没有自动生成函数(方法)注释

配置项路径:pycharm–>Settins–>Tools–>Python Integrated Tools–>Docstrings–>Docstrings format选择对应的工程,如果有多个工程的话将 Docstrings format 的值从 Plain 换成 reStructuredText...

lammps后处理:多帧孔洞体积和孔隙率的计算

本文介绍lammps后处理技巧:多帧孔洞体积和孔隙率的计算方法。 在前面的专栏中,已经介绍了单帧孔洞体积的计算方法,有不少粉丝朋友咨询多帧孔洞体积的计算方法。 在上一次案例代码的基础上,稍加修改,添加一个for循环遍历所有的帧即可实现多帧孔洞体积的计算。 计算的结果…...

免费且实用:UI设计常用的颜色参考网站和一些Icon设计网站

用心去分享!请给我点个关注和点赞收藏!谢谢各位努力的人才! 1.在UI设计的时候,没有灵感,怎么办?可以参考这个网站(需要魔法能量) 网址如下: Color Hunt - Color Palette…...

log4j日志封装说明—slf4j对于log4j的日志封装-正确获取调用堆栈

日志是项目中必用的东西,日志产品里最普及应该就是log4j了。(logback这里暂不讨论。) 先看一下常用的log4j的用法,一般来说log4j都会配合slf4j或者common-logging使用,这里已slf4j为例。添加gradle依赖: dependencies { compile(l…...

JVM面试真题总结(六)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 解释GC的标记-整理算法及其优点 GC(垃圾收集&#xff…...

C语言代码练习(第十八天)

今日练习: 48、猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时&…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...