GroupBot

一个 Bot 在一个 中所扮演的对象。

GroupBot 实现 OrganizationBot, 并对外提供转化为 Member 的能力, 以允许将自身转化为在目标群中的成员。

Author

ForteScarlet

See also

Functions

Link copied to clipboard
abstract suspend override fun asMember(): GroupMember

将当前bot转化为此组织中的成员。

Link copied to clipboard
abstract suspend override fun cancel(reason: Throwable?): Boolean

关闭此Bot。

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract suspend fun contact(id: ID): Contact?

通过唯一标识获取对应的 Contact 实例。当且仅当因标识对应联系人不存在而导致无法获取时得到null。

Link copied to clipboard
open suspend fun contactCount(): Int

得到当前容器中所有联系人的总数量。

Link copied to clipboard
open fun delay(duration: JavaDuration, runnable: Runnable): DelayableCompletableFuture<Void?>

延时 duration 时间后执行回调函数 runnable,得到一个 DelayableCompletableFuture

open fun delay(millis: Long, runnable: Runnable): DelayableCompletableFuture<Void?>

延迟 millis 毫秒后执行 runnable,得到一个 DelayableCompletableFuture

open fun delay(time: Long, timeUnit: TimeUnit, runnable: Runnable): DelayableCompletableFuture<Void?>

延迟时间单位为 timeUnittime 时长后执行 runnable,得到一个 DelayableCompletableFuture

Link copied to clipboard

延迟 duration 时间后,执行 supplier, 并将 supplier 得到结果通过得到的 DelayableCompletableFuture 向下传递。

open fun <V> delayAndCompute(millis: Long, supplier: Supplier<V>): DelayableCompletableFuture<V>

延迟 millis 毫秒的时长后执行 supplier, 并将 supplier 得到结果通过得到的 DelayableCompletableFuture 向下传递。

open fun <V> delayAndCompute(time: Long, timeUnit: TimeUnit, supplier: Supplier<V>): DelayableCompletableFuture<V>

延迟时间单位为 timeUnittime 时长后执行 supplier, 并将 supplier 得到结果通过得到的 DelayableCompletableFuture 向下传递。

Link copied to clipboard
abstract suspend fun group(id: ID): Group?

通过唯一标识获取这个bot对应的某个群,获取不到则为null。

Link copied to clipboard
open suspend fun groupCount(): Int

得到当前容器中所有的总数量。

Link copied to clipboard
abstract suspend fun guild(id: ID): Guild?

通过唯一标识获取这个bot对应的某个频道,获取不到则为null。

Link copied to clipboard
open suspend fun guildCount(): Int

得到当前容器中所有频道服务器的总数量。

Link copied to clipboard
open override fun invokeOnCompletion(handler: CompletionHandler)

当完成(或被cancel)时执行一段处理。

Link copied to clipboard
abstract infix fun isMe(id: ID): Boolean

用于检测一个 ID 是否属于当前BOT。一个bot可能会存在多个领域的ID,例如作为bot的client ID和作为user的普通ID。

Link copied to clipboard
abstract suspend override fun join()

让当前bot挂起当前协程直至其被 cancel

Link copied to clipboard
abstract suspend fun resolveImage(id: ID): Image<*>

尝试通过解析一个 ID 并得到对应的可用于发送的图片实例。 这个 Image 不一定是真正远端图片结果,它有可能只是一个预处理类型。 在执行 resolveImage 的过程中也不一定出现真正地挂起行为,具体细节请参考具体实现。

Link copied to clipboard
abstract suspend override fun start(): Boolean

真正的启动这个BOT。 但是已经关闭的 Bot 无法再次 start.

Link copied to clipboard
open fun waiting()

阻塞当前线程并等待 join 的挂起结束。

Properties

Link copied to clipboard
abstract override val avatar: String

这个账户的头像。 这年头了,应该不会有什么聊天平台的用户没有头像信息了吧。

Link copied to clipboard
open override val bot: Bot

当前 Objective 来自的bot。

Link copied to clipboard
open val category: Category?

此用户(对于bot来讲)的"分组"。 通常情况下,FriendInfo 能够支持 "分组" 概念的概率会更大一些, 但是无法保证存在分组概念或支持分组的获取。

Link copied to clipboard
abstract override val component: Component

每个Bot都有一个所属组件。

Link copied to clipboard
abstract val contacts: Items<Contact>

得到当前容器中能够获取到的联系人序列。

Link copied to clipboard
abstract override val coroutineContext: CoroutineContext
Link copied to clipboard

对于一个Bot,其应当存在一个事件处理器。

Link copied to clipboard
abstract val groups: Items<Group>

获取当前bot所处的群聊序列。

Link copied to clipboard
abstract val guilds: Items<Guild>

获取当前的所有频道服务器序列。

Link copied to clipboard
abstract override val id: ID

Bot的唯一标识。此处的唯一标识通常指的是在其所属的 BotManager 中的唯一标识, 而不代表其在对应平台系统内的唯一标识。

Link copied to clipboard
abstract override val isActive: Boolean

是否正在运行,即启动后尚未关闭。

Link copied to clipboard
abstract override val isCancelled: Boolean

是否已经被取消。

Link copied to clipboard

是否支持contacts相关的获取操作。当 contactscontact 都不被支持时得到 false。 默认情况下视其为 true,由实现者重写此属性来决定其可用性。

Link copied to clipboard

是否支持groups相关的获取操作。当 groupsgroup 都不被支持时得到 false。 默认情况下视其为 true,由实现者重写此属性来决定其可用性。

Link copied to clipboard

是否支持guilds相关的获取操作。当 guildsguild 都不被支持时得到 false。 默认情况下视其为 true,由实现者重写此属性来决定其可用性。

Link copied to clipboard
abstract override val isStarted: Boolean

是否已经启动过了。

Link copied to clipboard
abstract override val logger: Logger

当前目标内存在的日志对象。

Link copied to clipboard
abstract val manager: BotManager<out Bot>

每个bot都肯定会由一个 BotManager 进行管理。

Link copied to clipboard
abstract override val username: String

这个账号的用户名。

Extensions

Link copied to clipboard
fun <A : Application> CoroutineScope.applicationLauncher(create: suspend () -> A): ApplicationLauncher<A>

通过一个协程作用域并提供构建函数来得到一个 ApplicationLauncher 实例。

Link copied to clipboard
inline operator fun UserInfo.component1(): ID

UserInfo 的结构解构, 第1个值。相当于 UserInfo.id

Link copied to clipboard
inline operator fun UserInfo.component2(): String

UserInfo 的结构解构, 第2个值。相当于 UserInfo.username

Link copied to clipboard
inline operator fun UserInfo.component3(): String

UserInfo 的结构解构, 第3个值。相当于 UserInfo.avatar

Link copied to clipboard
inline fun <T> CoroutineScope.effectedFlowItems(crossinline block: suspend FlowCollector<T>.() -> Unit): Items<T>

以构建 Flow 的方式构建 Items.

Link copied to clipboard
inline fun <T> CoroutineScope.effectedItemsByFlow(crossinline flowFactory: () -> Flow<T>): Items<T>

提供 CoroutineScope 和构建 Flow 的函数 flowFactory 来构建 Items.

Link copied to clipboard
inline fun <T> CoroutineScope.flowItems(crossinline block: suspend FlowCollector<T>.(Items.PreprocessingProperties) -> Unit): Items<T>

以构建 Flow 的方式构建 Items.

Link copied to clipboard
infix fun Bot.isNotMe(id: ID): Boolean

Bot.isMe 的取反。

Link copied to clipboard
inline fun <T> CoroutineScope.itemsByFlow(crossinline flowFactory: (Items.PreprocessingProperties) -> Flow<T>): Items<T>

提供 CoroutineScope 和构建 Flow 的函数 flowFactory 来构建 Items.

Link copied to clipboard
fun <T> CoroutineScope.lazyValue(init: Boolean = false, initializer: suspend () -> T): LazyValue<T>
Link copied to clipboard
inline fun <T> CoroutineScope.produceItems(context: CoroutineContext = EmptyCoroutineContext, capacity: Int = 0, crossinline block: suspend ProducerScope<T>.(Items.PreprocessingProperties) -> Unit): Items<T>

通过 produce 构建 ChannelIterator 来得到一个 Items 实例。

Link copied to clipboard

比较两个 IDContainerIDContainer.id 是否一致。