Commit aa427c20 authored by jiahua.liu's avatar jiahua.liu

plugin supporting

parent 350fe5aa
package net.mamoe.mirai.plugin package net.mamoe.mirai.plugin
import net.mamoe.mirai.Bot
import net.mamoe.mirai.utils.DefaultLogger import net.mamoe.mirai.utils.DefaultLogger
import net.mamoe.mirai.utils.io.encodeToString import net.mamoe.mirai.utils.io.encodeToString
import java.io.File import java.io.File
...@@ -25,6 +26,11 @@ abstract class PluginBase constructor() { ...@@ -25,6 +26,11 @@ abstract class PluginBase constructor() {
} }
open fun onBotAdd(bot: Bot) {
}
private lateinit var pluginDescription: PluginDescription private lateinit var pluginDescription: PluginDescription
internal fun init(pluginDescription: PluginDescription) { internal fun init(pluginDescription: PluginDescription) {
...@@ -200,7 +206,7 @@ object PluginManager { ...@@ -200,7 +206,7 @@ object PluginManager {
val subClass = pluginClass.asSubclass(PluginBase::class.java) val subClass = pluginClass.asSubclass(PluginBase::class.java)
val plugin: PluginBase = subClass.getDeclaredConstructor().newInstance() val plugin: PluginBase = subClass.getDeclaredConstructor().newInstance()
description.loaded = true description.loaded = true
logger.info("successfully loaded plugin " + description.name) logger.info("successfully loaded plugin " + description.name + " version " + description.version + " by " + description.author)
logger.info(description.info) logger.info(description.info)
nameToPluginBaseMap[description.name] = plugin nameToPluginBaseMap[description.name] = plugin
...@@ -220,6 +226,12 @@ object PluginManager { ...@@ -220,6 +226,12 @@ object PluginManager {
pluginsFound.values.forEach { pluginsFound.values.forEach {
loadPlugin(it) loadPlugin(it)
} }
nameToPluginBaseMap.values.forEach {
it.onEnable()
}
} }
......
...@@ -22,6 +22,7 @@ kotlin { ...@@ -22,6 +22,7 @@ kotlin {
} }
} }
fun kotlinx(id: String, version: String) = "org.jetbrains.kotlinx:kotlinx-$id:$version" fun kotlinx(id: String, version: String) = "org.jetbrains.kotlinx:kotlinx-$id:$version"
fun ktor(id: String, version: String) = "io.ktor:ktor-$id:$version" fun ktor(id: String, version: String) = "io.ktor:ktor-$id:$version"
...@@ -36,6 +37,8 @@ dependencies { ...@@ -36,6 +37,8 @@ dependencies {
api(kotlinx("io", kotlinXIoVersion)) api(kotlinx("io", kotlinXIoVersion))
api(kotlinx("coroutines-io", coroutinesIoVersion)) api(kotlinx("coroutines-io", coroutinesIoVersion))
api(kotlinx("coroutines-core", coroutinesVersion)) api(kotlinx("coroutines-core", coroutinesVersion))
implementation("org.jsoup:jsoup:1.12.1")
implementation(group = "com.alibaba", name = "fastjson", version = "1.2.62")
} }
tasks.withType<JavaCompile>() { tasks.withType<JavaCompile>() {
......
import com.alibaba.fastjson.JSON
import kotlinx.coroutines.*
import net.mamoe.mirai.contact.Contact
import net.mamoe.mirai.message.data.Image
import net.mamoe.mirai.message.uploadAsImage
import org.jsoup.Jsoup
class ImageProvider {
lateinit var contact: Contact
// `Deferred<Image?>` causes a runtime ClassCastException
val image: Deferred<Image> by lazy {
GlobalScope.async {
//delay((Math.random() * 5000L).toLong())
class Result {
var id: String = ""
}
withTimeoutOrNull(5 * 1000) {
withContext(Dispatchers.IO) {
val result = JSON.parseObject(
Jsoup.connect("http://dev.itxtech.org:10322/v2/randomImg.uue").ignoreContentType(true).timeout(
10_0000
).get().body().text(),
Result::class.java
)
Jsoup.connect("http://dev.itxtech.org:10322/img.uue?size=large&id=${result.id}")
.userAgent("Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; ja-jp) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27")
.timeout(10_0000)
.ignoreContentType(true)
.maxBodySize(Int.MAX_VALUE)
.execute()
.bodyStream()
}
}?.uploadAsImage(contact) ?: error("Unable to download image")
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment