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
参数
字段名 | 类型 | 描述 |
---|---|---|
name | string | 子频道名称 |
type | int | 子频道类型 ChannelType |
sub_type | int | 子频道子类型 ChannelSubType |
position | int | 子频道排序,必填;当子频道类型为 子频道分组(ChannelType=4) 时,必须大于等于 2 |
parent_id | string | 子频道所属分组ID |
private_type | int | 子频道私密类型 PrivateType |
private_user_ids | string 数组 | 子频道私密类型成员 ID |
speak_permission | int | 子频道发言权限 SpeakPermission |
application_id | string | 应用类型子频道应用 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
参数
字段名 | 类型 | 描述 |
---|---|---|
name | string | 子频道名 |
position | int | 排序 |
parent_id | string | 分组 id |
private_type | int | 子频道私密类型 PrivateType |
speak_permission | int | 子频道发言权限 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官方机器人文档)[第一期]
➡️第三期:频道模块之频道成员(更新中…)