Table of Contents

服务器角色权限相关接口

预声明变量

readonly KookSocketClient _socketClient = null;
readonly KookRestClient _restClient = null;

SocketGuild socketGuild = null;

RestGuild restGuild = null;

IGuild guild = null;
IRole role = null;

获取服务器角色列表

GET /api/v3/guild-role/list

// 获取服务器的角色列表
IReadOnlyCollection<SocketRole> socketRoles = socketGuild.Roles;
IReadOnlyCollection<RestRole> restRoles = restGuild.Roles;
IReadOnlyCollection<IRole> roles = guild.Roles;

// 获取服务器的指定角色 ID 的信息
SocketRole socketRole = socketGuild.GetRole(roleId);
RestRole restRole = restGuild.GetRole(roleId);
IRole role = guild.GetRole(roleId);

创建服务器角色

POST /api/v3/guild-role/create

string roleName = null; // 角色名称

// API 请求
RestRole restRoleFromSocket = await socketGuild.CreateRoleAsync(roleName);
RestRole restRoleFromRest = await restGuild.CreateRoleAsync(roleName);
IRole role = await guild.CreateRoleAsync(roleName);

更新服务器角色

POST /api/v3/guild-role/update

string roleName = null; // 角色名称
Color color = default; // 角色颜色
bool hoist = default; // 是否分离显示
bool mentionable = default; // 是否可被提及
GuildPermissions permissions = default; // 角色权限

// API 请求
await role.ModifyAsync(x =>
{
    x.Name = roleName;
    x.Color = color;
    x.Hoist = hoist;
    x.Mentionable = mentionable;
    x.Permissions = permissions;
});

删除服务器角色

POST /api/v3/guild-role/delete

// API 请求
await role.DeleteAsync();

赋予用户角色

POST /api/v3/guild-role/grant

ulong guildId = default; // 服务器 ID
IRole role = null; // 角色
uint roleId = default; // 角色 ID
IEnumerable<IRole> roles = null; // 多个角色
IEnumerable<uint> roleIds = null; // 多个角色 ID
ulong userId = default; // 用户 ID

// API 请求赋予角色
await guildUser.AddRoleAsync(role);
await guildUser.AddRoleAsync(roleId);

// API 请求批量赋予角色
await guildUser.AddRolesAsync(roles);
await guildUser.AddRolesAsync(roleIds);

// API 请求,无实体操作
await _socketClient.Rest.AddRoleAsync(guildId, userId, roleId);

删除用户角色

POST /api/v3/guild-role/revoke

ulong guildId = default; // 服务器 ID
IRole role = null; // 角色
uint roleId = default; // 角色 ID
IEnumerable<IRole> roles = null; // 多个角色
IEnumerable<uint> roleIds = null; // 多个角色 ID
ulong userId = default; // 用户 ID

// API 请求赋予角色
await guildUser.RemoveRoleAsync(role);
await guildUser.RemoveRoleAsync(roleId);

// API 请求批量赋予角色
await guildUser.RemoveRolesAsync(roles);
await guildUser.RemoveRolesAsync(roleIds);

// API 请求,无实体操作
await _socketClient.Rest.RemoveRoleAsync(guildId, userId, roleId);