跳到主要内容
版本:3.3.0

容器概述

容器 Container 类型是一个基础性的接口,用于代表为某个或某系列属性的"容器"。

Container

Container 接口应当是所有(或者说大部分)容器接口的父接口。Container 接口的定义如下:

 interface Container

可以看到,Container 接口中不存在任何约束,仅仅用作为标记。

标准属性容器

实际上,容器类型更多的是在内部使用的。因此大部分情况下你不需要关心容器类型,更没有必要去实现它。 simbot在核心库中提供了部分内部常用一些容器类型,并由部分内部类型实现(例如一些事件或者对象)。

此章节会简单介绍这些标准容器类型(中提供的属性),仅做了解即可。

文档展现

在下文中,你可能会遇到类似于如下的文档展现形式:

FooContainer

属性类型描述
barBarproperty: bar
foo suspendFoosuspend 'property': foo

在这其中,bar 属性代表为一个普通的属性,其获取方式通常如下所示:

val bar: Bar = container.bar

但是对于 foo 属性,它标记了一个 suspend ,因此它代表一个 可挂起的 属性。 当然,这可能不是严格意义上的"属性",但这无伤大雅。对于这种属性,它的获取方式通常如下所示:

val foo: Foo = container.foo() // suspend

IDContainer

代表可用于获取 ID 的容器。

属性类型描述
idID唯一标识

BotContainer

用于获取 Bot 实例的容器。

属性类型描述
botBot唯一标识

ChannelInfoContainer

用于获取 ChannelInfo 实例的容器。

属性类型描述
channel suspendChannelInfo子频道信息

GuildInfoContainer

用于获取 GuildInfo 实例的容器。

属性类型描述
guild suspendGuildInfo频道服务器信息

GroupInfoContainer

用于获取 GroupInfo 实例的容器。

属性类型描述
group suspendGroupInfo群信息

UserInfoContainer

用于获取 UserInfo 实例的容器。

属性类型描述
user suspendUserInfo用户信息

MemberInfoContainer

用于获取 MemberInfo 实例的容器。

属性类型描述
member suspendMemberInfo组织成员信息

FriendInfoContainer

用于获取 FirendInfo 实例的容器。

属性类型描述
friend suspendFirendInfo好友信息

ResourceContainer

用于获取 Resource 实例的容器。

属性类型描述
resource suspendResource资源

BotSocialRelationsContainer

BotSocialRelationsContainer 相比较于上述的 标准属性容器 来讲,稍微有些特殊。 此容器代表为 "Bot社交关系容器" ,主要由 Bot 进行实现,并提供部分"社交信息"的获取API。 因此此容器下的类型提供的大多是 API 性质的内容。

FriendsContainer

获取与当前bot相关的 Friend 信息的社交容器。

API返回值描述
friendsItems<Friend>获取bot的好友列表
friend(ID) suspendFriend?获取bot指定ID的好友
val friends: Items<Friend> = container.friends

val id: ID = ...
val friend: Friend = container.friend(id)

GroupsContainer

获取与当前bot相关的 Group 信息的社交容器。

API返回值描述
groupsItems<Group>获取bot的群列表
group(ID) suspendGroup?获取bot指定ID的群
val groups: Items<Group> = container.groups

val id: ID = ...
val group: Group = container.group(id)

GuildsContainer

获取与当前bot相关的 Guild 信息的社交容器。

API返回值描述
guildsItems<Guild>获取bot的频道服务器列表
guild(ID) suspendGuild?获取bot指定ID的频道服务器
val guilds: Items<Guild> = container.guilds

val id: ID = ...
val guild: Guild = container.guild(id)