API权限信息
ApiPermission
在API模块中,有一个类型 ApiPermission
,它代表了一个频道服务器中、 针对一个接口(例如 /guilds/{guild_id}/members/{user_id}
) 的授权信息。
可以通过 GetApiPermissionListApi
获取到指定频道中针对所有接口的授权信息, 并作为 ApiPermissions
类型返回。
ApiPermissions
ApiPermissions
是对一组 ApiPermission
的包装。 除了能够对内部的 ApiPermission
进行迭代以外,还额外提供了一些API用于判断是否包含或寻找某些授权信息。
我们以 GetGuildApi
(获取频道信息详情) 为例:
// 可迭代的
apiPermissions.forEach { apiPermission -> }
// 获取到对 GetGuildApi 的全部授权信息(仅匹配path、忽略method的所有API)
val apiPermissionList = apiPermissions[GetGuildApi] // get(...)
// 寻找对 GetGuildApi 的授权信息
val apiPermissionOrNull = apiPermissions.find(GetGuildApi)
// 判断是否包含对 GetGuildApi 的授权信息
val isContains = GetGuildApi in apiPermissions // contains(...)
for (ApiPermission apiPermission : apiPermissions) {
// 可迭代的
}
// 获取到对 GetGuildApi (的相同path的所有API) 的全部授权信息(忽略method)
var apiPermissionList = apiPermissions.get(GetGuildApi.Factory);
// 寻找对 GetGuildApi 的授权信息
var apiPermissionOrNull = apiPermissions.find(GetGuildApi.Factory);
// 判断是否包含对 GetGuildApi 的授权信息
var isContains = apiPermissions.contains(GetGuildApi.Factory);
ApiDescription
可以看到,这些额外的API可以将一个 API 实现的伴生对象(通常命名为 Factory
) 作为参数。 实际上,它们的参数类型是 ApiDescription
—— 一个用于描述API信息的类型,也是用来跟 ApiPermissions
进行配合的。
在API模块中,所有 QQGuildApi
实现的伴生对象均会实现此接口并提供此API的基本信息,以便于在 ApiPermissions
中使用。
ApiPermissionDemand
在API模块中, DemandApiPermissionApi
可以用来创建一个 API 接口权限授权链接。
此API请求成功后的返回值类型即为 ApiPermissionDemand
。
Last modified: 15 November 2024