起因
这就不得不提一款二字游戏 “鸣潮” 是的。
本项目也是为了开发一个 鸣潮的Bot OneBotv11协议的机器人
项目
https://github.com/FxRayHughes/chaobot
这个项目并未使用任何 QQ 微信相关的实现代码
未对任何软件进行逆向!
历程
首先肯定是得要有一个Kotlin项目了 😅
然后引入 TabooLib的 插件和依赖 设置 kts 简单放一个我写的
创建项目
import io.izzel.taboolib.gradle.*
plugins {
id("io.izzel.taboolib") version "2.0.12"
kotlin("jvm") version "1.9.24"
application
}
taboolib {
env {
install(APPLICATION)
install(CONFIGURATION)
install(EXPANSION_COMMAND_HELPER)
// 依赖下载目录
fileLibs = "libraries"
// 资源下载目录
fileAssets = "assets"
}
version {
taboolib = "6.1.1"
coroutines = "1.7.3"
skipKotlinRelocate = true
skipTabooLibRelocate = true
}
}
repositories {
mavenCentral()
}
dependencies {
taboo("io.javalin:javalin:6.1.3")
taboo("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.24")
taboo("org.slf4j:slf4j-simple:2.0.10")
taboo("com.alibaba.fastjson2:fastjson2-kotlin:2.0.50")
taboo("com.squareup.okhttp3:okhttp:4.12.0")
testImplementation(kotlin("test"))
testImplementation("com.alibaba.fastjson2:fastjson2-kotlin:2.0.50")
taboo(kotlin("reflect"))
}
tasks.test {
useJUnitPlatform()
}
kotlin {
jvmToolchain(8)
}
tasks.jar {
manifest {
attributes("Main-Class" to "top.maplex.chaobot.Main")
}
}
application {
mainClass.set("top.maplex.chaobot.Main")
}
设置启动与关闭
我是这样设计的
先注册关闭逻辑 然后 进行启动逻辑
fun main(args: Array<String>) {
Runtime.getRuntime().addShutdownHook(Thread {
tPrintln("&c服务器即将关闭")
App.shutdown()
})
App.init()
LogManager.start()
StartHook.eval()
tPrintln("&3鸣潮Bot · 枫溪 &7- &8Chaobot - &f1.0.0")
}
具体行为看GitHub仓库 这里就简单说一下
颜色部分抄的大阔的项目 嘻嘻
先设置一下关闭App时候的回调 让Taboolib执行关闭回调
启动TabooLib的初始化方法 App.init()
加载Log管理器
启动自己实现的Hook
实现一些Hook
其实这才是这篇文章的重点
具体实现方式看我的仓库吧 StartHook 部分
根据不同的优先级 对类进行扫描
fun eval() {
evalConfig()
evalAwake()
evalEvent()
evalCommand()
}
依次实现了
Config 文件的自动注入与释放
Awake 自唤醒运行方法
EventBus 的启动与初始化 对声明的Listener进行注册
Command 注册机器人的命令模块
实现EventBus
是的 event 是各个平台实现的 由于taboolibapp自己不带eventbus 所以我就自己实现了一下
但是写起来也不难这种东西
根据这个图片的设计思路就可以快速的制作了!
由于我用的是Kotlin语言 所以我把这个 HanderList 外置了 存进了一个Map里
并没有使用伴生类进行使用 这会导致更加繁琐
解决了这个问题之后 其他的问题就都好解决了!
感悟
手拿把掐!
完全不难~
参与讨论
(Participate in the discussion)
参与讨论