查询和管理群成员
通过 ListMembers 查询一页群成员。将结果中的 NextCursor 传给下一次调用。游标为空时,表示已经查到最后一页。
查询一页成员
go
package guide
import (
"context"
"github.com/ProgramCX/GoQQBot/pkg/api"
"github.com/ProgramCX/GoQQBot/pkg/api/group"
)
func ReadMembers(ctx context.Context, client *api.Client, groupOpenID, cursor string) (*group.MemberPage, error) {
return group.NewClient(client).ListMembers(ctx, groupOpenID, cursor)
}其他成员操作
| 官方能力 | SDK 方法 |
|---|---|
| 获取群成员信息 | GetMember |
| 群成员批量移除 | RemoveMembers |
| 群黑名单查询 | ListBlacklist |
| 群黑名单操作 | UpdateBlacklist |
应用负责核对成员身份、检查操作权限并记录执行结果。遇到 QQ 返回的错误时,可通过 errors.As 读取 *api.APIError。详见错误处理。
注意事项
群成员与黑名单查询需要白名单权限
测试群成员列表、成员详情和黑名单查询时,QQ 均返回 40012010(应用无接口访问权限)。这三个接口只对加入白名单的机器人开放,需联系 QQ 平台运营申请。成功响应仍需用已获授权的机器人测试。
- 官方规定成员列表每页最多 30 条。黑名单默认每页 20 条,最多 100 条。SDK 每次请求只取一页。
- 接口受内邀或白名单限制。遇到权限错误时,先确认平台资格。
RemoveMembers和UpdateBlacklist每次最多操作 20 个成员。接口成功时仍应检查结果中的失败名单。- 仍在群内的成员无法通过
UpdateBlacklist加入黑名单。需要同时移除并拉黑时,可为RemoveMembers设置AddToMemberBlacklist。 - 多个协程同时读写同一份分页结果,可能出现数据竞争。共享原始事件数据时也是如此。