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

news2024/11/15 12:57:31

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

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

目录

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


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


在这里插入图片描述

获取用户详情

接口

GET /users/@me

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

Content-Type

application/json

返回
返回 User 对象。

错误码
详见错误码。

Python示例

# 用于获取当前用户(机器人)详情。
import requests

url = "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 requests

url = 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 requests

url = 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 requests

url = 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 requests

channel_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 requests

channel_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官方机器人文档)[第一期]
➡️第三期:频道模块之频道成员(更新中…)

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

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

相关文章

❤ Node05-增删改查接口优化

❤ Node05-增删改查接口优化 1、优化用户查询接口,根据用户条件查询我们的列表 ​ 先拿sql数据命令试试 SELECT * FROM user WHERE name san娟; 我们的查询命令没问题,接下来把我们的传入的活数据给传入进去即可 (1)传入查询…

游泳馆押金管理+手牌管理+刷手牌 开通方法

一、游泳馆手牌押金管理 1. 减少手牌丢失:收取押金可以让顾客更加谨慎地保管手牌,降低手牌丢失的概率。 2. 保障设施安全:有助于防止顾客对手牌的不当使用或故意破坏,保护游泳馆的设施和资源。 3. 规范顾客行为:促使…

Flutter Button使用

Material 组件库中有多种按钮组件如ElevatedButton、TextButton、OutlineButton等,它们的父类是于ButtonStyleButton。 基本的按钮特点: 1.按下时都会有“水波文动画”。 2.onPressed属性设置点击回调,如果不提供该回调则按钮会处于禁…

从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展

【科技明说 | 科技热点关注】 2024戴尔科技峰会在8月如期举行,虽然因事未能抵达现场参加,我只是观看了网上在线直播,也未能采访到DTF现场重要与会者,但是通过数十年对戴尔的跟踪与观察,我觉得2024戴尔科技…

哈希签名溯源--Lamport40签名算法

背景 哈希签名是指只依赖哈希函数的数字签名算法(而非某个数学问题,例如ECC的离散对数问题、RSA的大整数因式分解)。这类算法一直不是主流,但随着量子计算机及其配套算法(舒尔算法)的出现,ECC和…

kubeadm 初始化 k8s 证书过期解决方案

概述 在使用 kubeadm 初始化的 Kubernetes 集群中,默认情况下证书的有效期为一年。当证书过期时,集群中的某些组件可能会停止工作,导致集群不可用。本文将详细介绍如何解决 kubeadm 初始化的 Kubernetes 集群证书过期的问题,并提…

ETF全量后复权数据更新与一个限时免费的星球

原创第645篇 | AI量化实验室 AI量化实验室星球本周计划: 1、“七天入门量化投资”专栏更新完成第三天和第四天。 2、lightgbm为代表的机器学习因子合成与stockranker实现。 3、etf全量数据更新到最新。 class ETFQuotes(Quotes):def __init__(self, tb_basiebasi…

MySQL:运维管理-主从复制

目录 一、主从复制的概述二、主从复制的工作原理三、搭建主从复制的结构3.1 环境准备3.2 搭建配置(主库配置)3.3 搭建配置(从库配置)3.4 测试 一、主从复制的概述 主从复制是指将主数据库中的DDL和DML操作的二进制文件保存到本地&…

通义千问更新数学大模型及视觉多模态

Qwen2-Math,这是通义千问专门为数学场景优化的模型,其数学能力指标甚至超越了GPT4o, Claude3.5 Sonnet, Deepseek Coder等顶流模型,目前从指标来看是最强的数学模型。目前是免费供应,大家碰到数学问题可以选择使用这个模型。 Qw…

[数据集][图像分类]嘴巴张开闭合分类数据集6397长2类别

数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):6397 分类类别数:2 类别名称:["close","open&qu…

linux安装redis、使用redis、用springboot连接redis

安装redis 解压redis的tar包 tar -vsxf 包名 解压完之后进入解压过的tar包里 编译 make 安装和安装的位置 make PREFIX/opt/redis/redisserver install 成功后进入安装的位置 cd /opt/redis/redisserver/ 进入bin cd bin 找到redis-server,运行 ./redis-…

66城代表齐聚!蓝卓分享“全国经验”,批量复制推动中小企业数字化转型

9月6日下午,2024中小企业数字化转型现场交流活动在浙江宁波隆重举行。 全国66个中小企业试点城市500多名中小企业主管部门及专家学者,制造业企业、数字化转型服务商等重点企业代表齐聚宁波,共同探讨中小企业数字化转型的模式和路径。 工业和…

Keysight E4991A射频阻抗/材料分析仪3GHz

Keysight E4991A射频阻抗/材料分析仪3GHz KEYSIGHT E4991A(安捷伦)(要求提供) Keysight E4991A 射频阻抗/材料分析仪提供出色的阻抗测量性能和强大的内置分析功能。它将为评估 3 GHz 范围内组件的组件和电路设计师提供研发创新。…

小琳AI课堂:深入学习Transformer模型

大家好,这里是小琳AI课堂。今天我们来深入学习Transformer模型,这个在深度学习领域引发革命的技术。 Transformer模型的革命性优势 Transformer模型被认为是引发了深度学习领域革命的技术,主要原因有以下几点: 突破性的性能提升…

智能化升级:未来交流充电桩的创新之路

随着电动汽车的普及,交流充电桩作为充电基础设施的重要组成部分,其未来的发展趋势备受关注。本文将探讨交流充电桩在未来可能呈现的几个发展方向。 一、智能化升级 未来的交流充电桩将更加智能化。通过物联网技术,充电桩将能够实现远程监控…

已解决:ppt文件打开就是只读模式,如何改为可编辑模式?

PPT文档打开是只读模式,如何改成可编辑文档呢?这需要分几种情况来说,所以今天将介绍几种方法帮助PPT只读文档改为可编辑文档。 方法一: 我们可以先查看一下文件属性,属性中有只读属性,当我们打开文档之后带…

3个办法轻松操作:flac转mp3在线快速完成

在这个时代,音频已经渗入人们的生活,成为日常中不可或缺的一部分。因为实际需要,人们分门别类地设置了许多音频格式。flac格式作为一种常见的无损音频压缩格式,通常用于存储高品质音频文件。 对于那些希望在不同设备上享受音乐的…

设计模式 解释器模式(Interpreter Pattern)

文章目录 解释器模式简绍解释器模式的结构优缺点UML图具体代码实现Context 数据实体类,可以包含一些方法Abstract Expression 创建接口方法Terminal Expression 对数据简单处理Non-Terminal Expression 同样实现抽象接口方法Client(客户端) 调…

Java 字符串、数组、ArrayList之间的相互转换

1. 数组转字符串 import java.util.Arrays;public class Test02 {public static void main(String[] args){String[] scores1 new String[]{"10","20","30","40","50"};String[] scores2 {"10","20",…

开源的 Kafka 管理平台

来源:github.com/provectus/kafka-ui Apache Kafka UI 是一个免费的开源 Web UI,用于监控和管理 Apache Kafka 集群,可方便地查看 Kafka Brokers、Topics、消息、Consumer 等情况,支持多集群管理、性能监控、访问控制等功能。 1 …