IM 即时通讯
Windows/macOS
开发指南

身份组相关查询

更新时间: 2023/03/06 15:35:15

服务器身份组相关查询

查询服务器身份组

调用 GetServerRoles方法,可查询指定服务器下已创建的身份组列表, 从指定优先级开始分页查询。查询结果按照身份组优先级从大到小排序。查询参数中priority设为0,会从最大优先级开始返回,也就是第一页。第一页查询结果还会额外包含 @everyone 身份组,放在返回列表的第一项。

示例代码如下:

GetServerRolesParam 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 方法,从服务器指定身份组中分页查询成员列表。

仅自定义身份组(即 QChatRoleInfoBaserole_type 值为 2 的身份组)支持调用该方法查询身份组成员。创建服务器时默认创建的 @everyone 身份组(即role_type 值为 1 的身份组),不支持查询成员信息,@everyone 身份组默认包含所有身份组成员。如调用该方法查询 @everyone 身份组成员,将报错(错误码 403).

示例代码如下:

GetMembersFromServerRoleParam 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 身份组。

示例代码如下:

GetRolesByAccidParam 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

示例代码如下:

GetExistingServerRolesByAccidsParam 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方法,可查询某个服务器身份组是否包含指定成员。

示例代码如下:

GetExistingAccidsInServerRoleParam 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方法获取频道下所有已分配的身份组列表。 示例代码如下:

GetChannelRolesParam 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方法,可根据一组服务器身份组列表查询已存在的频道身份组列表。

示例代码如下:

GetExistingChannelRolesByServerRoleIdsParam 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权限。

示例代码如下:

GetMemberRolesParam 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)查询这些用户在指定频道下所拥有的定制权限列表。 示例代码如下:

GetExistingAccidsOfMemberRolesParam 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必须要传。

示例代码如下:


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 个权限)。

示例代码如下:

QChatCheckPermissionsParam 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);
此文档是否对你有帮助?
有帮助
去反馈
  • 服务器身份组相关查询
  • 查询服务器身份组
  • 查询服务器身份组成员
  • 查询指定用户所在身份组列表
  • 批量查询用户所在服务器身份组列表
  • 查询服务器身份组是否包含指定成员
  • 频道身份组相关查询
  • 查询频道身份组列表
  • 批量查询已存在频道身份组列表
  • 用户定制权限相关查询
  • 查询频道成员定制权限
  • 查询指定频道下的定制权限列表
  • 查询自己拥有的权限
  • 查询自己是否拥有某个权限
  • 查询自己是否拥有某些权限