net.mamoe.mirai.console.plugin.loader.PluginLoadException: Exception while enabling SecondHandGoods-Plugin
at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:314)
at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:39)
at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt)
at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(JvmPluginLoader.kt:54)
at net.mamoe.mirai.console.plugin.PluginManager.enablePlugin(PluginManager.kt:173)
at net.mamoe.mirai.console.internal.plugin.PluginManagerImpl.enableAllLoadedPlugins$mirai_console(PluginManagerImpl.kt:181)
at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge.doStart$mirai_console(MiraiConsoleImplementationBridge.kt:359)
at net.mamoe.mirai.console.MiraiConsoleImplementation$Companion.start(MiraiConsoleImplementation.kt:512)
at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon(MiraiConsoleTerminalLoader.kt:182)
at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDaemon$default(MiraiConsoleTerminalLoader.kt:181)
at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.main(MiraiConsoleTerminalLoader.kt:59)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.itxtech.mcl.Utility.bootJars(Utility.java:86)
at org.itxtech.mcl.Utility.bootJars(Utility.java:76)
at org.itxtech.mcl.Utility.bootMirai(Utility.java:98)
at org.itxtech.mcl.module.builtin.Boot.boot(Boot.java:113)
at org.itxtech.mcl.module.ModuleManager.phaseBoot(ModuleManager.java:123)
at org.itxtech.mcl.Loader.lambda$start$4(Loader.java:196)
at org.itxtech.mcl.Loader.tryCatching(Loader.java:151)
at org.itxtech.mcl.Loader.start(Loader.java:196)
at org.itxtech.mcl.Loader.main(Loader.java:84)
Caused by: net.mamoe.mirai.console.permission.PermissionRegistryConflictException: Conflicting Permission registry. new: PermissionImpl(id=moon.top.plugin:*, description='The base permission', parent=PermissionImpl(id=*:*, description='The root permission', parent=<self>)), existing: PermissionImpl(id=moon.top.plugin:*, description='The base permission', parent=PermissionImpl(id=*:*, description='The root permission', parent=<self>))
at net.mamoe.mirai.console.internal.permission.AbstractConcurrentPermissionService.register(AbstractConcurrentPermissionService.kt:29)
at net.mamoe.mirai.console.permission.PermissionService.register$default(PermissionService.kt:103)
at net.mamoe.mirai.console.internal.plugin.JvmPluginInternal$parentPermission$2.invoke(JvmPluginInternal.kt:126)
at net.mamoe.mirai.console.internal.plugin.JvmPluginInternal$parentPermission$2.invoke(JvmPluginInternal.kt:125)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at net.mamoe.mirai.console.internal.plugin.JvmPluginInternal.getParentPermission(JvmPluginInternal.kt:125)
at net.mamoe.mirai.console.internal.plugin.JvmPluginInternal.internalOnEnable$mirai_console(JvmPluginInternal.kt:226)
at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.enable(BuiltInJvmPluginLoaderImpl.kt:308)
... 23 more
插件类
object SecondHandGoodsPlugin : KotlinPlugin(
JvmPluginDescription(
id = "moon.top.plugin",
name = "SecondHandGoods-Plugin",
version = "1.0-beta",
) {
author("m2on")
info("""二手物品市场自动检测插件""")
}
) {
override fun onEnable() {
SecondHandGoodsPlugin.reloadPluginData(GoodsData)
SecondHandGoodsPlugin.reloadPluginConfig(CommandConfig)
fun checkEnabled(group: Group,enabled:Boolean,toDo:()->Unit){
if(enabled){
toDo()
}else{
SecondHandGoodsPlugin.launch {
group.sendMessage("此群不在白名单中,功能未开启")
}
}
}
GlobalEventChannel.subscribeAlways<GroupMessageEvent> { event->
var isListen = GoodsData.groupWhiteList.contains(event.group.id)
var group = event.group
var content = event.message.content
val firSpa = content.indexOf(" ")
if(Regex(CommandConfig.addGoods).containsMatchIn(content)){
try {
checkEnabled(group,isListen)
{
val secSpa = content.indexOf(" ",firSpa+1)
val thiSpa = content.indexOf(" ",secSpa+1)
val goodsName = content.substring(firSpa+1,secSpa)
val goodsDesc = content.substring(secSpa+1,secSpa)
val goodsPrice = content.substring(secSpa+1).toDouble()
GoodsServiceImpl.addGoods(sender.id,goodsName,goodsPrice,goodsDesc,group)
}
}catch (e:Exception){
e.printStackTrace()
val secSpa = content.indexOf(" ",firSpa+1)
val goodsName = content.substring(firSpa+1,secSpa)
SecondHandGoodsPlugin.launch {
group.sendMessage(At(sender.id) +" 物品${goodsName}上架失败,请检查格式是否错误或联系管理员")
}
}
}else if(Regex(CommandConfig.removeGoods).containsMatchIn(content)){
checkEnabled(group,isListen)
{
val goodsName = content.substring(firSpa + 1)
GoodsServiceImpl.removeGoods(sender.id, goodsName, group)
}
}else if(Regex(CommandConfig.addGroupWhite).containsMatchIn(content)){
checkEnabled(group,isListen)
{
val addGroup = content.substring(firSpa + 1)
GroupServiceImpl.addWhitelistGroup(group, addGroup.toLong())
}
}else if(Regex(CommandConfig.removeGroupWhite).containsMatchIn(content)){
checkEnabled(group,isListen)
{
val removeGroup = content.substring(firSpa + 1)
GroupServiceImpl.removeWhitelistGroup(group, removeGroup.toLong())
}
}else if(Regex(CommandConfig.addAdmin).containsMatchIn(content)){
checkEnabled(group,isListen)
{
val qq = content.substring(firSpa + 1).toLong()
GroupServiceImpl.addAdmin(qq, group)
}
}else if(Regex(CommandConfig.removeAdmin).containsMatchIn(content)){
checkEnabled(group,isListen)
{
val qq = content.substring(firSpa + 1).toLong()
GroupServiceImpl.removeAdmin(qq, group)
}
}
}
logger.info { "二手市场插件已加载" }
}
}
autoData
object GoodsData :AutoSavePluginData("GoodsData"){
val goodsList:MutableMap<String,MutableList<Goods>> by value()
val groupWhiteList:MutableList<Long> by value()
val adminQQList:MutableMap<String,MutableList<Long>> by value()
val goodsNameList:MutableMap<String,MutableList<String>> by value()
val botOwner by value(0L)
}
实体类
@Serializable
class Goods {
var goodName = ""
var sellerQQ = 0L
var addTime = ""
var describe = ""
var price = 0.0
constructor(goodName: String, sellerQQ: Long, addTime: String, describe: String, prive: Double) {
this.goodName = goodName
this.sellerQQ = sellerQQ
this.addTime = addTime
this.describe = describe
this.price = prive
}
}
报错
插件类
autoData
实体类
一开始的时候因为实体类没有序列化,AutoData报错了,加上序列化后错误改变成了现在这个。看不出是什么问题,我在想是不是因为实体类的序列化。