diff --git a/mirai-console/src/main/java/net/mamoe/mirai/console/events/Events.java b/mirai-console/src/main/java/net/mamoe/mirai/console/events/Events.java index e9445449d..be017d241 100644 --- a/mirai-console/src/main/java/net/mamoe/mirai/console/events/Events.java +++ b/mirai-console/src/main/java/net/mamoe/mirai/console/events/Events.java @@ -22,37 +22,6 @@ import java.util.function.Function; * 事件处理 */ public final class Events { - - private static void printDeprecated(){ - System.err.println("Events.subscribe is deprecated, it will be remove soon"); - System.err.println("Please use PluginBase.getEventListener"); - System.err.println("Events.subscribe 即将在下个版本移除"); - System.err.println("请更换为PluginBase.getEventListener"); - System.err.println("Events.subscribe is deprecated, it will be remove soon"); - System.err.println("Please use PluginBase.getEventListener"); - System.err.println("Events.subscribe 即将在下个版本移除"); - System.err.println("请更换为PluginBase.getEventListener"); - System.err.println("Events.subscribe is deprecated, it will be remove soon"); - System.err.println("Please use PluginBase.getEventListener"); - System.err.println("Events.subscribe 即将在下个版本移除"); - System.err.println("请更换为PluginBase.getEventListener"); - } - - @NotNull - @Deprecated() - public static Listener subscribe(@NotNull Class eventClass, @NotNull Function onEvent) { - printDeprecated(); - return EventsImplKt.subscribeEventForJaptOnly(eventClass, GlobalScope.INSTANCE, onEvent); - } - - @NotNull - @Deprecated() - public static Listener subscribeAlways(@NotNull Class eventClass, @NotNull Consumer onEvent) { - printDeprecated(); - return EventsImplKt.subscribeEventForJaptOnly(eventClass, GlobalScope.INSTANCE, onEvent); - } - - /** * 阻塞地广播一个事件. * diff --git a/mirai-console/src/main/java/net/mamoe/mirai/console/utils/BotManager.java b/mirai-console/src/main/java/net/mamoe/mirai/console/utils/BotManager.java index db7ff63de..4b959c40a 100644 --- a/mirai-console/src/main/java/net/mamoe/mirai/console/utils/BotManager.java +++ b/mirai-console/src/main/java/net/mamoe/mirai/console/utils/BotManager.java @@ -11,20 +11,20 @@ import java.util.List; */ public class BotManager { - static List getManagers(long botAccount) { + public static List getManagers(long botAccount) { Bot bot = MiraiConsole.INSTANCE.getBotOrThrow(botAccount); return getManagers(bot); } - static List getManagers(Bot bot){ + public static List getManagers(Bot bot){ return BotHelperKt.getBotManagers(bot); } - static boolean isManager(Bot bot, long target){ + public static boolean isManager(Bot bot, long target){ return getManagers(bot).contains(target); } - static boolean isManager(long botAccount, long target){ + public static boolean isManager(long botAccount, long target){ return getManagers(botAccount).contains(target); } } diff --git a/mirai-console/src/main/java/net/mamoe/mirai/console/utils/CommandArg.kt b/mirai-console/src/main/java/net/mamoe/mirai/console/utils/CommandArg.kt new file mode 100644 index 000000000..ad670a1cf --- /dev/null +++ b/mirai-console/src/main/java/net/mamoe/mirai/console/utils/CommandArg.kt @@ -0,0 +1,113 @@ +package net.mamoe.mirai.console.utils + +import net.mamoe.mirai.Bot +import net.mamoe.mirai.console.command.CommandSender +import net.mamoe.mirai.console.command.GroupContactCommandSender +import net.mamoe.mirai.contact.Group +import net.mamoe.mirai.contact.QQ + +/** + * this output type of that arg + * input is always String + */ +interface CommandArg{ + operator fun invoke():T = get() + + fun get():T + + fun read(s:String, commandSender: CommandSender) +} + + +abstract class CommandArgImpl( +):CommandArg{ + + lateinit var value:T + + override fun get(): T = value + + override fun read(s: String, commandSender: CommandSender) { + value = parse(s, commandSender) + } + + abstract fun parse(s:String, commandSender: CommandSender):T +} + +class IntArg:CommandArgImpl(){ + override fun parse(s: String, commandSender: CommandSender): Int { + return try{ + s.toInt() + }catch (e:Exception){ + error("无法识别整数$s") + } + } +} + +class LongArg:CommandArgImpl(){ + override fun parse(s: String, commandSender: CommandSender): Long { + return try{ + s.toLong() + }catch (e:Exception){ + error("无法识别长整数$s") + } + } +} + +class DoubleArg:CommandArgImpl(){ + override fun parse(s: String, commandSender: CommandSender): Double { + return try{ + s.toDouble() + }catch (e:Exception){ + error("无法识别小数$s") + } + } +} + + +class StringArg:CommandArgImpl(){ + override fun parse(s: String, commandSender: CommandSender): String { + return s + } +} + +/** + * require a bot that already login in console + * input: Bot UIN + * output: Bot + * errors: String->Int convert, Bot Not Exist + */ + +class ExistBotArg:CommandArgImpl(){ + override fun parse(s: String, commandSender: CommandSender): Bot { + val uin = try{ + s.toLong() + }catch (e:Exception){ + error("无法识别QQ UIN$s") + } + return try{ + Bot.getInstance(uin) + }catch (e:NoSuchElementException){ + error("无法找到Bot $uin") + } + } +} + + + +class ExistGroupArg:CommandArgImpl(){ + + override fun parse(s: String, commandSender: CommandSender): Group { + if((s === "" || s === "~") && commandSender is GroupContactCommandSender){ + return commandSender.contact as Group + } + + val code = try{ + s.toLong() + }catch (e:Exception){ + error("无法识别Group Code$s") + } + + TODO() + + } +} diff --git a/mirai-console/src/main/java/net/mamoe/mirai/console/utils/Value.kt b/mirai-console/src/main/java/net/mamoe/mirai/console/utils/Value.kt new file mode 100644 index 000000000..81e5296ba --- /dev/null +++ b/mirai-console/src/main/java/net/mamoe/mirai/console/utils/Value.kt @@ -0,0 +1,45 @@ +package net.mamoe.mirai.console.utils + +/** + * A Value + * the input type of this Value is T while the output is V + */ +abstract class Value{ + operator fun invoke():V = get() + + abstract fun get():V + + abstract fun set(t:T) +} + + + +/** + * This value can be used as a Config Value + */ +interface ConfigValue + + +/** + * A simple value + * the input type is same as output value + */ + +open class SimpleValue( + var value:T +):Value() { + override fun get() = this.value + + override fun set(t: T) { + this.value = t + } +} + +open class NullableSimpleValue( + value:T? = null +):SimpleValue( + value +){ + fun isNull() = value == null +} + diff --git a/mirai-console/src/main/kotlin/net/mamoe/mirai/console/utils/BotHelper.kt b/mirai-console/src/main/kotlin/net/mamoe/mirai/console/utils/BotHelper.kt index bdecf40d2..d4c2d7410 100644 --- a/mirai-console/src/main/kotlin/net/mamoe/mirai/console/utils/BotHelper.kt +++ b/mirai-console/src/main/kotlin/net/mamoe/mirai/console/utils/BotHelper.kt @@ -29,7 +29,7 @@ fun Bot.addManagerDeprecated(long: Long) { } @OptIn(ToBeRemoved::class) -fun Bot.addManager(long: Long): Boolean { +internal fun Bot.addManager(long: Long): Boolean { BOT_MANAGERS.putIfAbsent(this.id.toString(), mutableListOf()) BOT_MANAGERS[this.id.toString()] = (BOT_MANAGERS.getLongList(this.id.toString()) as MutableList).apply {