QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期]
QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期]
第三期介绍:频道模块之频道成员
目录
- QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期]
- 第三期介绍:频道模块之频道成员
- 获取子频道在线成员数
- 获取频道成员列表
- 获取频道身份组成员列表
- 获取频道成员详情
- 删除频道成员
- 致谢和更新
不懂得的也可以来私聊或评论区问哦~
原力到一千才可以推广,三连啊喂!!!
获取子频道在线成员数
接口
GET /channels/{channel_id}/online_nums
功能描述
此接口用于查询音视频/直播子频道channel_id
的在线成员数。
Content-Type
application/json
返回
成功时返回空对象,包含在线成员数:
{"online_nums": 1
}
错误码
具体错误码信息请参考错误码。
Python示例
import requestsurl = f"https://api.sgroup.qq.com/channels/{channel_id}/online_nums"
Authorization = f"QQBot {你的鉴权,不懂得看前面文章}"herders = {"Content-Type": "application/json","Authorization": Authorization}response = requests.get(url, headers=herders).json()print(response)
运行成功如下,因为我没有音频子频道,所以是如下输出:
{'code': 505007, 'message': 'requested channel is not audio or live channel'}
获取频道成员列表
接口
GET /guilds/{guild_id}/members
功能描述
用于获取指定guild_id
的频道中所有成员的详情列表,支持分页。
注意事项
- 公域机器人暂不支持申请,仅私域机器人可用。
- 开通后需要先将机器人从频道移除,然后重新添加,方可生效。
Content-Type
application/json
参数
字段名 | 类型 | 描述 |
---|---|---|
after | string | 上一次回包中最后一个 member 的 user id ,如果是第一次请求填 0,默认为 0 |
limit | uint32 | 分页大小,1-400,默认是 1。成员较多的频道尽量使用较大的 limit 值,以减少请求数 |
返回
返回Member
对象数组。
返回结果说明
- 在每次翻页的过程中,可能会返回上一次请求已经返回过的
member
信息,需要调用方自己根据user id
来进行去重。 - 每次返回的
member
数量与limit
不一定完全相等。翻页请使用最后一个member
的user id
作为下一次请求的after
参数,直到回包为空,拉取结束。
错误码
具体错误码信息请参考错误码。
Python示例
import requestsurl = f"https://api.sgroup.qq.com/guilds/{guild_id}/members?limit=2"
Authorization = f"QQBot {你的鉴权}"herders = {"Content-Type": "application/json","Authorization": Authorization}response = requests.get(url, headers=herders).json()print(response)
运行结果如下:
# 运行出来的是一行的,不好展示,使用官方回复样式,实际获取数据和这个大差不差
[{"user": {"id": "xxxxxx","username": "xxxx","avatar": "xxxxxx","bot": false,"public_flags": 0,"system": false,"union_openid": "xxxxxx","union_user_account": ""},"nick": "","roles": ["1"],"joined_at": "2021-12-09T15:53:41+08:00","deaf": false,"mute": false,"pending": false},{"user": {"id": "xxxxxx","username": "秦时明月","avatar": "xxxxxx","bot": false,"public_flags": 0,"system": false,"union_openid": "xxxxxx","union_user_account": ""},"nick": "","roles": ["4"],"joined_at": "2021-12-02T15:19:00+08:00","deaf": false,"mute": false,"pending": false}
]
获取频道身份组成员列表
接口
GET /guilds/{guild_id}/roles/{role_id}/members
功能描述
用于获取 guild_id
频道中指定 role_id
身份组下所有成员的详情列表,支持分页。
注意
- 公域机器人暂不支持申请,仅私域机器人可用,选择私域机器人后默认开通。
- 开通后需要先将机器人从频道移除,然后重新添加,方可生效。
参数
字段名 | 类型 | 描述 |
---|---|---|
start_index | string | 将上一次回包中 next 填入,如果是第一次请求填 0,默认为 0 |
limit | uint32 | 分页大小,1-400,默认是 1。成员较多的频道尽量使用较大的 limit 值,以减少请求数 |
返回
字段名 | 类型 | 描述 |
---|---|---|
data | Member 对象数组 | 一组用户信息对象 |
next | string | 下一次请求的分页标识 |
有关返回结果的说明
每次返回的 member
数量与 limit
不一定完全相等。特定管理身份组下的成员可能存在一次性返回全部的情况。
错误码
详见错误码。
Python示例
import requestsurl = f"https://api.sgroup.qq.com/guilds/{guild_id}/roles/{role_id}/members?limit=2"
Authorization = f"QQBot {你的鉴权}"herders = {"Content-Type": "application/json","Authorization": Authorization}response = requests.get(url, headers=herders).json()print(response)
运行结果如下:
{"data": [{"user": {"id": "xxx","username": "xxx","avatar": "xxx","bot": false},"nick": "xxx","joined_at": "2021-11-03T20:41:36+08:00"}],"next": "0"
}
获取频道成员详情
接口
GET /guilds/{guild_id}/members/{user_id}
功能描述
用于获取 guild_id
指定的频道中 user_id
对应成员的详细信息。
Content-Type
application/json
返回
返回 Member 成员对象。
错误码
详见错误码。
Python示例
import requestsurl = f"https://api.sgroup.qq.com/guilds/{guild_id}/members/{user_id}"
Authorization = f"QQBot {你的鉴权}"herders = {"Content-Type": "application/json","Authorization": Authorization}response = requests.get(url, headers=herders).json()print(response)
运行结果如下:
{"user": {"id": "2823701233424295228","username": "xxx","avatar": "https://qqchannel-profile-1251316161.file.myqcloud.com/xxxxxxx","bot": false,"union_openid": "","union_user_account": ""},"nick": "","roles": ["1"],"joined_at": "2021-12-05T14:08:29+08:00"
}
删除频道成员
接口
DELETE /guilds/{guild_id}/members/{user_id}
功能描述
用于删除 guild_id
指定的频道下的成员 user_id
。
- 需要使用的
token
对应的用户具备踢人权限。如果是机器人,要求被添加为管理员。(读者需要知道的是,在我们提交的鉴权里,除了机器人的,也可以提交管理员的鉴权,当你提交的是机器人的鉴权,那么将是机器人执行,如果你提交的是操作者的鉴权,那么将是操作者执行,这在第一期提过一点) - 操作成功后,会触发 频道成员删除事件。
- 无法移除身份为管理员的成员
注意
- 公域机器人暂不支持申请,仅私域机器人可用,选择私域机器人后默认开通。
- 注意: 开通后需要先将机器人从频道移除,然后重新添加,方可生效。
Content-Type
application/json
参数
字段名 | 类型 | 描述 |
---|---|---|
add_blacklist | bool | 删除成员的同时,将该用户添加到频道黑名单中 |
delete_history_msg_days | int | 删除成员的同时,撤回该成员的消息,可以指定撤回消息的时间范围 |
注:消息撤回时间范围仅支持固定的天数: 3
, 7
, 15
, 30
。 特殊的时间范围: -1: 撤回全部消息
。默认值为 0
不撤回任何消息。
返回
成功返回 HTTP 状态码 204
。
错误码
详见错误码。
Python示例
import requestsurl = f"https://api.sgroup.qq.com/guilds/{guild_id}/members/{user_id}"
Authorization = f"QQBot {你的鉴权}"data = {{"add_blacklist": True,# 删除成员的同时,将该用户添加到频道黑名单中"delete_history_msg_days": -1# -1: 撤回全部消息
}
}
herders = {"Content-Type": "application/json","Authorization": Authorization}response = requests.delete(url, headers=herders).json()print(response)
我懒得删除自己的用户,这里返回就不展示了,官方也没有给示例,成功了就是返回状态码。
致谢和更新
文章持续更新,如果三连支持,速更!!!
请在评论区提出疑惑和建议
上次更新: 9/10/2024, PM
👻关于频道成员事件和音视频/直播子频道成员进出事件 ,它们基于websocket方法。因为目前在讲openapi方法调用QQ频道机器人,所以暂时跳过这部分,当然放心啦,三连我速更,肯定会讲啦。
⬅️QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第二期]
➡️第四期:频道模块之频道身份组与权限管理(更新中…)
相关文章:

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期]
QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期] 第三期介绍:频道模块之频道成员 目录 QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期]第三期介绍:频道模块之频道成员获取子频道在线成员数获取频道成员列表获取频道身份组成员列…...

亚信安全全球云安全SaaS运营总部落地厦门 安全点亮一带一路
近日,第二十四届中国国际投资贸易洽谈会(以下简称“投洽会”)在福建厦门隆重开幕。本届投洽会以“投资链接世界”为主题,积极践行全球发展倡议,服务高质量共建“一带一路”。在投洽会的重要环节,福建省重大…...

在cmd中输入mysql无法运行(环境变量配置保姆级教程)
MySQL环境变量配置 问题概述:解决方法及步骤:检测是否解决问题 问题概述: 下载安装mysql之后,打开cmd界面输入mysql,出现如下提示: mysql 不是内部或外部命令,也不是可运行的程序,或…...

在Webmin上默认状态无法正常显示 Mariadb V11.02及以上版本
OS: Armbian OS 24.5.0 Bookworm Mariadb V11.02及以上版本 Webmin:V2.202 非常小众的问题,主要是记录一下。 如题 Webmin 默认无法 Mariadb V11.02及以上版本 如果对 /etc/webmin/mysql/config 文件作相应调整就可以再现Mariadb管理界面。 路径文件&am…...

C和指针:预处理(#include/define/if...)
预处理器 编译第一步称为预处理(preprocessing)阶段。C预处理器(preprocessor)在源代码编译之前对其进行一些文本性质的操作,包括删除注释、插入被#include 指令包含的文件的内容,替换由#define指令定义的符号以及根据条件编译指令进行编译。 预定义符…...

【Java数据结构】泛型的进阶部分(泛型通配符)
1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…...
大模型实战一、Ollama+RagFlow 部署本地知识库
大模型实战一、OllamaRagFlow 部署本地知识库 参考你提供的文章,这里是基于 Windows 系统通过 Docker 安装部署 RagFlow 和 Ollama 的本地化大模型知识库的详细教程。本文将指导你如何在 Windows 上使用 Docker 来设置 RagFlow 和 Ollama 环境,并安装通…...

系统工程建模MBSE
################################# ############# 片段一 ############## ################################# 下图采用“V”模式显示了集成的基于模型的系统/嵌入式软件开发流程Harmony。左侧描述了自顶向下的设计流程,而右侧显示了自底而上的从单元测试到最终系统验收测试…...

SVN的使用技巧
SVN(Subversion)是近年来崛起的版本管理工具,因为是免费的,所以用的人还是不少的。故做一些总结。 如果是新手,基本对SVN一点都不了解的话,建议去学习一下这个系统的教程,讲的也很详细Tortoise…...
使用 RabbitMQ 实现秒杀订单系统的异步消息处理
使用 RabbitMQ 实现秒杀订单系统的异步消息处理 在秒杀系统中,如何确保高并发环境下的订单处理稳定高效是个很大的挑战。为了解决这个问题,我们通常会引入消息队列,通过异步处理来削峰填谷。这篇文章将详细讲解如何使用 RabbitMQ 来设计一个…...
oracle19.3单机升级到Oracle19.22
1.补丁包、opatch准备 -rw-r--r-- 1 oracle oinstall 1817908992 9月 10 14:25 p35943157_190000_Linux-x86-64.zip -rw-r--r-- 1 oracle oinstall 133535622 9月 10 14:22 p6880880_190000_Linux-x86-64.zip2.解压补丁包和opatch包 先将原有opatch备份 [oraclecyptdg ~]$…...

半导体的发展--创世新产品介绍
文章目录 半导体的发展 半导体的发展 现代社会对于芯片的需求是越来越多了,90 年代我们能在收音机,电视机,DVD,上面看到芯片的身影,进入 2000 年,电脑,手机逐渐进入中国家庭,中国高…...

Ubuntu WSL使用技巧
0 Preface/Foreword 1 默认为root用户 当下载完成Ubuntu之后,首次登录,当完成初始化后,提示输入新的用户名时候,直接点击右上角的X按钮,再重新登陆,系统会默认使用root权限登录。...

4 个步骤带你快速上手 Einstein Copilot for Tableau
如果你的企业仍未部署或希望迁移至 Tableau Cloud,可考虑订阅 Tableau 高级套件。 自 Einstein Copilot for Tableau 发布以来,相信部分用户已经尝试过在 Tableau Cloud 中借助 AI 对话助理,快速解决数据分析中的问题,获得更准确的…...

C++ | Leetcode C++题解之第386题字典序排数
题目: 题解: class Solution { public:vector<int> lexicalOrder(int n) {vector<int> ret(n);int number 1;for (int i 0; i < n; i) {ret[i] number;if (number * 10 < n) {number * 10;} else {while (number % 10 9 || numbe…...

vsftpd配置用户和密码让其他客户端连接
一、第一个主机:vsftpd下载及配置 前置准备: #卸载防火墙 yum -y remove firewalld #为了不让防火墙有影响,iptables配置也清空 iptables -F vim /etc/selinux/conf SELINUXdisabled #主要是把它改为disabled或者permissive SELINUXTYPEtargeted #重启linux让seli…...
Oracle使用序列后提示违反唯一约束---解决办法
1、问题原因分析 出现这个问题的原因是插入数据的时候,由于之前没有使用序列插入,而是直接插入了一个比当前序列nextval还大的值,即直接将id写死了。后面再使用序列插入的时候,如果序列小于该值的话,是可以正常插入的…...
乐观锁悲观锁
乐观锁 乐观锁的核心思想是“尽量不去锁定资源,而是尽量让线程并发地工作”,并在最后阶段检查冲突,只有在检测到冲突时才会采取纠正措施。乐观锁通常通过以下方式实现: 版本号控制:每次对共享资源进行修改时…...
Unity面试:什么是UnityEvent?
UnityEvent是Unity引擎中一种特殊的事件系统,属于Unity的事件和委托机制。它允许开发者在运行时定义和管理事件的响应,从而实现松耦合的事件处理。 以下是UnityEvent的一些主要特点和用途: 松耦合的设计:UnityEvent允许对象之间…...
食品安全管理员考试真题题库及答案
食品安全管理员考试真题题库及答案 95.对食品生产经营企业来说,实施ISO 22000是()。 A.强制性的 B.无效的 C.自愿的 D.必须的 答案:C 96.CDC的意思是()。 A.卫生监督所 B.疾病控制预防中心 C.卫生…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...

认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...

【Java多线程从青铜到王者】单例设计模式(八)
wait和sleep的区别 我们的wait也是提供了一个还有超时时间的版本,sleep也是可以指定时间的,也就是说时间一到就会解除阻塞,继续执行 wait和sleep都能被提前唤醒(虽然时间还没有到也可以提前唤醒),wait能被notify提前唤醒…...

基于谷歌ADK的 智能产品推荐系统(2): 模块功能详解
在我的上一篇博客:基于谷歌ADK的 智能产品推荐系统(1): 功能简介-CSDN博客 中我们介绍了个性化购物 Agent 项目,该项目展示了一个强大的框架,旨在模拟和实现在线购物环境中的智能导购。它不仅仅是一个简单的聊天机器人,更是一个集…...