OneBotBot

一个 OneBot 协议的 Bot

Bot 的终止

Bot的运行状态 (isActive) 可能会因为一些原因被更改:

  • 手动终止 (使用 cancel)。

  • 父级Job或被关联的Job被终止 (可能来自 BotManager、Application等)。

  • 会话连接失败且重试次数到达上限。比如 ws 的连接会话意外被中断, 且在重新连接的过程中始终失败并达到了重试次数上限,此时会话中的任务会被视为因异常结束, 并连带 OneBotBot 的任务一同终结。

日志

OneBotBot 的内部会输出三种日志:

  • love.forte.simbot.component.onebot.v11.core.bot.OneBotBot.$uniqueId bot的基本日志,例如连接信息、接收到的原始事件等debug日志。

Author

ForteScarlet

Properties

Link copied to clipboard
Link copied to clipboard
abstract val apiClient: HttpClient

OneBotBot 用于请求API的 HttpClient

Link copied to clipboard
abstract val apiHost: Url

OneBotBot 用于请求 API 的目标服务器地址

Link copied to clipboard

当前Bot的配置类。

Link copied to clipboard

联系人相关操作,即好友相关的关系操作。

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

OneBotBot 会使用的 Json

Link copied to clipboard
Link copied to clipboard
abstract override val groupRelation: OneBotBotGroupRelation

与群聊相关的操作

Link copied to clipboard
open override val guildRelation: GuildRelation?

始终为 null。 OB11协议主要为普通群聊设计。

Link copied to clipboard
abstract override val id: ID

当前Bot的唯一标识。

Link copied to clipboard
abstract override val name: String

Bot的名称,来自 GetLoginInfoApi API. name 是一个缓存值,不会实时查询或实时刷新。

Link copied to clipboard

OneBotBot 衍生出的 actor 使用的 CoroutineContext。 源自 coroutineContext, 但是不包含 Job

Link copied to clipboard
abstract val userId: ID

Bot自身的 ID,来自事件或 GetLoginInfoApi API.

Inherited properties

Link copied to clipboard
abstract val component: Component
Link copied to clipboard
abstract val isActive: Boolean
Link copied to clipboard
abstract val isCompleted: Boolean
Link copied to clipboard
abstract val isStarted: Boolean

Functions

Link copied to clipboard
abstract suspend fun getCookies(domain: String? = null): GetCookiesResult

获取 Cookies

Link copied to clipboard
abstract suspend fun getCredentials(domain: String? = null): GetCredentialsResult

获取 QQ 相关接口凭证

Link copied to clipboard
abstract suspend fun getCsrfToken(): GetCsrfTokenResult

获取 CSRF Token

Link copied to clipboard
abstract suspend fun getMessageContent(messageId: ID): OneBotMessageContent

根据 messageId 使用 GetMsgApi 查询消息内容, 并得到对应的 OneBotMessageContent

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

检测给定的 id 是否与 OneBotBot.iduserId (如果已经初始化) 相同。

Link copied to clipboard
open suspend override fun messageFromId(id: ID): OneBotMessageContent

根据 id 使用 GetMsgApi 查询消息内容, 并得到对应的 OneBotMessageContent

Link copied to clipboard
open suspend override fun messageFromReference(reference: MessageReference): OneBotMessageContent

根据消息引用的id使用 GetMsgApi 查询消息内容, 并得到对应的 OneBotMessageContent

Link copied to clipboard
abstract fun push(rawEvent: String): Flow<EventResult>

直接推送一个外部的原始事件字符串。 你需要收集结果的 Flow 事件才会真正的被处理, 或者使用 pushAndLaunch

Link copied to clipboard
open fun pushAndLaunch(rawEvent: String): Job

直接推送一个外部的原始事件字符串,并在异步任务中处理事件。

Link copied to clipboard
abstract suspend fun queryLoginInfo(): GetLoginInfoResult

通过 GetLoginInfoApi 查询当前Bot的信息, 并刷新 userIdname 的缓存值。

Link copied to clipboard
abstract suspend override fun start()

启动Bot。 启动过程中会通过 GetLoginInfoApi 初始化当前账户信息, 并同时初始化 userId

Inherited functions

Link copied to clipboard
open fun cancel()
abstract fun cancel(reason: Throwable?)
Link copied to clipboard
abstract suspend fun execute(api: OneBotApi<*>): HttpResponse

使用当前 OneBotApiExecutable 执行 api 并得到原始的 HttpResponse 结果。

Link copied to clipboard
abstract suspend fun <T : Any> executeData(api: OneBotApi<T>): T

使用当前 OneBotApiExecutable 执行 api 并得到 T 结果。

Link copied to clipboard
abstract suspend fun executeRaw(api: OneBotApi<*>): String

使用当前 OneBotApiExecutable 执行 api 并得到原始的 String 结果。

Link copied to clipboard
abstract suspend fun <T : Any> executeResult(api: OneBotApi<T>): OneBotApiResult<T>

使用当前 OneBotApiExecutable 执行 api 并得到 OneBotApiResult 结果。

Link copied to clipboard

OneBotApiExecutableScope 的作用域下执行 action

Link copied to clipboard
abstract suspend fun join()
Link copied to clipboard
abstract fun onCompletion(handle: OnCompletion)