身份组相关查询
更新时间: 2024/03/12 10:50:20
服务器身份组相关查询
查询服务器身份组
调用 GetServerRoles
方法,可查询指定服务器下已创建的身份组列表, 从指定优先级开始分页查询。查询结果按照身份组优先级从大到小排序。查询参数中priority设为0,会从最大优先级开始返回,也就是第一页。第一页查询结果还会额外包含 @everyone 身份组,放在返回列表的第一项。
示例代码如下:
cppGetServerRolesParam param;
param.server_id = 123456;
param.limit = 20;
param.priority = 1;
param.cb = [this](const GetServerRolesResp& resp) {
if (resp.res_code != NIMResCode::kNIMResSuccess) {
// error handling
return;
}
// process response
// ...
};
Role::GetServerRoles(param);
查询服务器身份组成员
调用GetMembersFromServerRole
方法,从服务器指定身份组中分页查询成员列表。
仅自定义身份组(即 QChatRoleInfoBase
下 role_type
值为 2
的身份组)支持调用该方法查询身份组成员。创建服务器时默认创建的 @everyone 身份组(即role_type
值为 1
的身份组),不支持查询成员信息,@everyone 身份组默认包含所有身份组成员。如调用该方法查询 @everyone 身份组成员,将报错(错误码 403).
示例代码如下:
cppGetMembersFromServerRoleParam param;
param.server_id = 123456;
param.role_id = 123456;
param.timestamp = 0;
param.limit = 20;
param.begin_account_id = "";
param.cb = [this](const GetMembersFromServerRoleResp& resp) {
if (resp.res_code != NIMResCode::kNIMResSuccess) {
// error handling
return;
}
// process response
// ...
};
Role::GetMembersFromServerRole(param);
查询指定用户所在身份组列表
调用GetRolesByAccid
方法,可根据用户 ID (accid
)获取其已经分配的身份组列表。
查询结果只会返回自定义身份组,不包含 @everyone 身份组。
示例代码如下:
cppGetRolesByAccidParam param;
param.server_id = 123456;
param.timestamp = 0;
param.limit = 20;
param.account_id = "accid1";
param.cb = [this](const GetRolesByAccidResp& resp) {
if (resp.res_code != NIMResCode::kNIMResSuccess) {
// error handling
return;
}
// process response
// ...
};
Role::GetRolesByAccid(param);
批量查询用户所在服务器身份组列表
调用GetExistingServerRolesByAccids
方法,您可根据一组用户 ID(accid
)列表查询这些用户所属的身份组列表。
- 查询结果只会返回自定义身份组,不包含 @everyone 身份组。
- 单次调用该方法最多可传入 100 个
accid
。
示例代码如下:
cppGetExistingServerRolesByAccidsParam param;
param.server_id = 123456;
param.account_ids = {"accid1", "accid2"};
param.cb = [this](const GetExistingServerRolesByAccidsResp& resp) {
if (resp.res_code != NIMResCode::kNIMResSuccess) {
// error handling
return;
}
// process response
// ...
// if accid2 is not in any role, then resp will only return roles which has accid1
};
Role::GetExistingServerRolesByAccids(param);
查询服务器身份组是否包含指定成员
调用GetExistingAccidsInServerRole
方法,可查询某个服务器身份组是否包含指定成员。
示例代码如下:
cppGetExistingAccidsInServerRoleParam param;
param.server_id = 123456;
param.role_id = 123456;
param.account_ids = {"accid1", "accid2"};
param.cb = [this](const GetExistingAccidsInServerRoleResp& resp) {
if (resp.res_code != NIMResCode::kNIMResSuccess) {
// error handling
return;
}
// process response
// ...
};
Role::GetExistingAccidsInServerRole(param);
}));
频道身份组相关查询
查询频道身份组列表
调用GetChannelRoles
方法获取频道下所有已分配的身份组列表。
示例代码如下:
cppGetChannelRolesParam param;
param.server_id = 123456;
param.channel_id = 123456;
param.timestamp = 0;
param.limit = 20;
param.cb = [this](const GetChannelRolesResp& resp) {
if (resp.res_code != NIMResCode::kNIMResSuccess) {
// error handling
return;
}
// process response
// ...
};
Role::GetChannelRoles(param);
批量查询已存在频道身份组列表
调用GetExistingChannelRolesByServerRoleIds
方法,可根据一组服务器身份组列表查询已存在的频道身份组列表。
示例代码如下:
cppGetExistingChannelRolesByServerRoleIdsParam param;
param.server_id = 123456;
param.role_ids = {123456, 234567};
param.cb = [this](const GetExistingChannelRolesByServerRoleIdsResp& resp) {
if (resp.res_code != NIMResCode::kNIMResSuccess) {
// error handling
return;
}
// process response
// ...
};
Role::GetExistingChannelRolesByServerRoleIds(param);
用户定制权限相关查询
查询频道成员定制权限
通过GetMemberRoles
方法,可分页获取频道下所有针对成员个人的定制权限列表。
调用该方法需要拥有kPermissionManageRole
权限。
示例代码如下:
cppGetMemberRolesParam param;
param.server_id = 123456;
param.channel_id = 123456;
param.timestamp = 0;
param.limit = 20;
param.cb = [this](const GetMemberRolesResp& resp) {
if (resp.res_code != NIMResCode::kNIMResSuccess) {
// error handling
return;
}
// process response
// ...
};
Role::GetMemberRoles(param);
查询指定频道下的定制权限列表
通过GetExistingAccidsOfMemberRoles
方法,您可根据一组用户 ID (accid
)查询这些用户在指定频道下所拥有的定制权限列表。
示例代码如下:
cppGetExistingAccidsOfMemberRolesParam param;
param.server_id = 123456;
param.account_ids = {"accid1", "accid2"};
param.cb = [this](const GetExistingAccidsOfMemberRolesResp& resp) {
if (resp.res_code != NIMResCode::kNIMResSuccess) {
// error handling
return;
}
// process response
// ...
};
Role::GetExistingAccidsOfMemberRoles(param);
查询自己拥有的权限
查询自己是否拥有某个权限
通过CheckPermission
方法可查询当前登录用户是否拥有频道下的定制权限.
身份组权限分为服务器专有的权限与非服务器专有权限(即服务器和频道下均可配置的权限)。如果查询服务器专有的权限,则channel_id
不需要传,其他情况则channel_id
必须要传。
示例代码如下:
cpp
QChatCheckPermissionParam param;
param.server_id = 123456;
param.channel_id = 123456; // set to zero if you want to check permission in server
param.permission = kPermissionManageChannel;
param.cb = [this](const CheckPermissionResp& resp) {
if (resp.res_code != NIMResCode::kNIMResSuccess) {
// error handling
return;
}
// process response
// ...
};
Role::CheckPermission(param);
查询自己是否拥有某些权限
调用CheckPermissions
方法,可指定服务器和频道查询自己是否拥有某些权限(单次最多可查 10 个权限)。
示例代码如下:
cppQChatCheckPermissionsParam param;
param.server_id = 123456;
param.channel_id = 123456; // set to zero if you want to check permission in server
param.permissions = {kPermissionManageChannel, kPermissionSendMessage};
param.cb = [this](const QChatCheckPermissionsResp& resp) {
if (resp.res_code != NIMResCode::kNIMResSuccess) {
// error handling
return;
}
// process response
// ...
};
Role::CheckPermissions(param);