mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-22 13:46:13 +08:00
Auto loader for BotFactory
This commit is contained in:
parent
7b9e6e532d
commit
a496a93433
@ -11,7 +11,6 @@ import net.mamoe.mirai.data.Packet
|
|||||||
import net.mamoe.mirai.message.data.Image
|
import net.mamoe.mirai.message.data.Image
|
||||||
import net.mamoe.mirai.message.data.ImageId0x03
|
import net.mamoe.mirai.message.data.ImageId0x03
|
||||||
import net.mamoe.mirai.message.data.ImageId0x06
|
import net.mamoe.mirai.message.data.ImageId0x06
|
||||||
import net.mamoe.mirai.network.data.*
|
|
||||||
import net.mamoe.mirai.qqAccount
|
import net.mamoe.mirai.qqAccount
|
||||||
import net.mamoe.mirai.timpc.internal.RawGroupInfo
|
import net.mamoe.mirai.timpc.internal.RawGroupInfo
|
||||||
import net.mamoe.mirai.timpc.network.GroupImpl
|
import net.mamoe.mirai.timpc.network.GroupImpl
|
||||||
|
@ -0,0 +1,90 @@
|
|||||||
|
@file:Suppress("FunctionName", "unused")
|
||||||
|
|
||||||
|
package net.mamoe.mirai
|
||||||
|
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import net.mamoe.mirai.utils.MiraiLogger
|
||||||
|
|
||||||
|
// Do not use ServiceLoader. Probably not working on MPP
|
||||||
|
private val factory = run {
|
||||||
|
try {
|
||||||
|
Class.forName("net.mamoe.mirai.timpc.TIMPC").kotlin.objectInstance as BotFactory
|
||||||
|
} catch (ignored: Exception) {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
} ?: error(
|
||||||
|
"""
|
||||||
|
No BotFactory found. Please ensure that you've added dependency of protocol modules.
|
||||||
|
Available modules:
|
||||||
|
- net.mamoe:mirai-core-timpc
|
||||||
|
You should have at lease one protocol module installed.
|
||||||
|
""".trimIndent()
|
||||||
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加载现有协议的 [BotFactory], 并调用其 [BotFactory.Bot]
|
||||||
|
*
|
||||||
|
* 在当前 CoroutineScope 下构造 Bot 实例
|
||||||
|
* 该 Bot 实例的生命周期将会跟随这个 CoroutineScope.
|
||||||
|
* 这个 CoroutineScope 也会等待 Bot 的结束才会结束.
|
||||||
|
*
|
||||||
|
* ```kotlin
|
||||||
|
* suspend fun myProcess(){
|
||||||
|
* TIMPC.Bot(account, logger)
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
suspend fun Bot(account: BotAccount, logger: MiraiLogger? = null): Bot =
|
||||||
|
factory.Bot(account, logger)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加载现有协议的 [BotFactory], 并调用其 [BotFactory.Bot]
|
||||||
|
*
|
||||||
|
* 在当前 CoroutineScope 下构造 Bot 实例
|
||||||
|
* 该 Bot 实例的生命周期将会跟随这个 CoroutineScope.
|
||||||
|
* 这个 CoroutineScope 也会等待 Bot 的结束才会结束.
|
||||||
|
*
|
||||||
|
* ```kotlin
|
||||||
|
* suspend fun myProcess(){
|
||||||
|
* TIMPC.Bot(account, logger)
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
suspend fun Bot(qq: Long, password: String, logger: MiraiLogger? = null): Bot =
|
||||||
|
factory.Bot(qq, password, logger)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加载现有协议的 [BotFactory], 并调用其 [BotFactory.Bot]
|
||||||
|
*
|
||||||
|
* 在特定的 CoroutineScope 下构造 Bot 实例
|
||||||
|
* 该 Bot 实例的生命周期将会跟随这个 CoroutineScope.
|
||||||
|
* 这个 CoroutineScope 也会等待 Bot 的结束才会结束.
|
||||||
|
*
|
||||||
|
* ```kotlin
|
||||||
|
* fun myProcess(){
|
||||||
|
* TIMPC.run {
|
||||||
|
* GlobalScope.Bot(account, logger)
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
fun CoroutineScope.Bot(qq: Long, password: String, logger: MiraiLogger? = null): Bot =
|
||||||
|
factory.run { this@Bot.Bot(qq, password, logger) }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加载现有协议的 [BotFactory], 并调用其 [BotFactory.Bot]
|
||||||
|
*
|
||||||
|
* 在特定的 CoroutineScope 下构造 Bot 实例
|
||||||
|
* 该 Bot 实例的生命周期将会跟随这个 CoroutineScope.
|
||||||
|
* 这个 CoroutineScope 也会等待 Bot 的结束才会结束.
|
||||||
|
*
|
||||||
|
* ```kotlin
|
||||||
|
* fun myProcess(){
|
||||||
|
* TIMPC.run {
|
||||||
|
* GlobalScope.Bot(account, logger)
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
fun CoroutineScope.Bot(account: BotAccount, logger: MiraiLogger? = null): Bot =
|
||||||
|
factory.run { this@Bot.Bot(account, logger) }
|
Loading…
Reference in New Issue
Block a user