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

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

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官方机器人文档)[第一期]

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


http://www.kler.cn/a/299894.html

相关文章:

  • ios打包:uuid与udid
  • Vue2官网教程查漏补缺学习笔记 - 3Vue实例4模板语法5计算属性监听器
  • 使用LabVIEW的History功能实现队列数据的读取而不清空
  • 深度学习|表示学习|卷积神经网络|通道 channel 是什么?|05
  • HarmonyOS Next构建工具 lycium 原理介绍
  • 【java】签名验签防篡改研究测试
  • Java System.getenv 和 System.getProperty 区别
  • DAY74
  • 【笔记】扩散模型(七):Latent Diffusion Models(Stable Diffusion)论文解读与代码实现
  • Flutter 中的低功耗蓝牙概述
  • 连锁管理系统如何兼批发和零售 连锁收银系统如何配合做好财务
  • C++之函数的分文件编写
  • ToDesk远程连接Ubuntu 2022.04,鼠标动不了,Windows自带的远程桌面连接也连不上,TightVNC Viewer也连不上的解决办法
  • vc-align源码分析 -- ant-design-vue系列
  • transform: rotate 旋转中心在左上角
  • 网络层_计算机网络
  • 智能匹配新高度:相亲交友系统如何运用AI技术提升用户体验
  • 如何选择合适的加密软件?加密软件有哪些用途呢?
  • 心脑血管科黄力主任:血栓是如何悄然“养”大的?医生警示七大高危群体!
  • OPENAIGC开发者大赛高校组银奖 | GOIS——面向地质报告的多场景办公智能助手
  • Linux下载新版火狐浏览器,替换默认火狐浏览器,保留桌面任务栏图标快捷方式
  • 操作系统安全保护
  • 贪心+滑窗+递推,LeetCode 2555. 两个线段获得的最多奖品
  • adb的安装和使用 以及安装Frida 16.0.10+雷电模拟器
  • QT设置闹钟超时播报
  • B站宋红康JAVA基础视频教程之Chapter13(泛型)