diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index aa5e2ed..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "_book"]
- path = _book
- url = https://storage.sukazyo.cc/Eyre_S/morny-book.git
diff --git a/gradle.properties b/gradle.properties
index cdc89ae..e748f83 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -5,7 +5,7 @@ MORNY_ARCHIVE_NAME = morny-coeur
MORNY_CODE_STORE = https://github.com/Eyre-S/Coeur-Morny-Cono
MORNY_COMMIT_PATH = https://github.com/Eyre-S/Coeur-Morny-Cono/commit/%s
-VERSION = 1.0.0-RC3.5
+VERSION = 1.0.0-RC3.6
USE_DELTA = false
VERSION_DELTA =
@@ -16,7 +16,7 @@ CODENAME = beiping
libSpotbugsVersion = 4.7.3
-libMessivaVersion = 0.1.0.1
+libMessivaVersion = 0.1.1
libJavaTelegramBotApiVersion = 6.2.0
diff --git a/src/main/java/cc/sukazyo/cono/morny/Log.java b/src/main/java/cc/sukazyo/cono/morny/Log.java
index b9e0e83..4c3dadd 100644
--- a/src/main/java/cc/sukazyo/cono/morny/Log.java
+++ b/src/main/java/cc/sukazyo/cono/morny/Log.java
@@ -1,6 +1,8 @@
package cc.sukazyo.cono.morny;
-import cc.sukazyo.messiva.Logger;
+import cc.sukazyo.messiva.formatter.SimpleFormatter;
+import cc.sukazyo.messiva.log.LogLevel;
+import cc.sukazyo.messiva.logger.Logger;
import cc.sukazyo.messiva.appender.ConsoleAppender;
import java.io.PrintWriter;
@@ -16,7 +18,29 @@ public class Log {
* messiva 更新
* @since 0.4.1.1
*/
- public static final Logger logger = new Logger(new ConsoleAppender());
+ public static final Logger logger = new Logger(new ConsoleAppender(new SimpleFormatter())).minLevel(LogLevel.INFO);
+
+ /**
+ * Is the Debug mode enabled.
+ *
+ * @return if the minimal log level is equal or lower than DEBUG level.
+ */
+ public static boolean debug () {
+ return logger.levelSetting.minLevel().level <= LogLevel.DEBUG.level;
+ }
+
+ /**
+ * Switch the Debug log output enabled.
+ *
+ * if enable the debug log output, all the Log regardless of LogLevel will be output.
+ * As default, if the debug log output is disabled, Logger will ignore the Logs level lower than INFO.
+ *
+ * @param debug switch enable the debug log output as true, or disable it as false.
+ */
+ public static void debug (boolean debug) {
+ if (debug) logger.minLevel(LogLevel.ALL);
+ else logger.minLevel(LogLevel.INFO);
+ }
/**
* 获取异常的堆栈信息.
diff --git a/src/main/java/cc/sukazyo/cono/morny/ServerMain.java b/src/main/java/cc/sukazyo/cono/morny/ServerMain.java
index ba8e79e..113879b 100644
--- a/src/main/java/cc/sukazyo/cono/morny/ServerMain.java
+++ b/src/main/java/cc/sukazyo/cono/morny/ServerMain.java
@@ -5,6 +5,8 @@ import cc.sukazyo.cono.morny.util.CommonFormat;
import javax.annotation.Nonnull;
import java.time.ZoneOffset;
+import java.util.ArrayList;
+import java.util.List;
import static cc.sukazyo.cono.morny.Log.logger;
@@ -93,11 +95,17 @@ public class ServerMain {
config.eventOutdatedTimestamp = systemStartupTime;
+ List unknownArgs = new ArrayList<>();
+
for (int i = 0; i < args.length; i++) {
if (args[i].startsWith("-")) {
switch (args[i]) {
+ case "-d", "--dbg", "--debug" -> {
+ Log.debug(true);
+ continue;
+ }
case "--outdated-block", "-ob" -> {
config.eventIgnoreOutdated = true;
continue;
@@ -188,10 +196,17 @@ public class ServerMain {
}
- logger.warn("Can't understand arg to some meaning :\n " + args[i]);
+ unknownArgs.add(args[i]);
}
+ unknownArgs.forEach(arg -> logger.warn("Can't understand arg to some meaning :\n " + arg));
+
+ if (Log.debug())
+ logger.warn("Debug log output enabled.\n It may lower your performance, make sure that you are not in production environment.");
+
+ logger.debug("Debug log output enabled.");
+
String propToken = null;
String propTokenKey = null;
for (String iKey : MornyConfig.PROP_TOKEN_KEY) {
diff --git a/src/main/java/cc/sukazyo/cono/morny/bot/query/ShareToolBilibili.java b/src/main/java/cc/sukazyo/cono/morny/bot/query/ShareToolBilibili.java
index 68652bd..da6c2fa 100644
--- a/src/main/java/cc/sukazyo/cono/morny/bot/query/ShareToolBilibili.java
+++ b/src/main/java/cc/sukazyo/cono/morny/bot/query/ShareToolBilibili.java
@@ -13,6 +13,7 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import static cc.sukazyo.cono.morny.Log.logger;
import static cc.sukazyo.cono.morny.util.tgapi.formatting.NamedUtils.inlineIds;
public class ShareToolBilibili implements ITelegramQuery {
@@ -32,25 +33,25 @@ public class ShareToolBilibili implements ITelegramQuery {
final Matcher regex = REGEX_BILI_VIDEO.matcher(event.inlineQuery().query());
if (regex.matches()) {
-// logger.debug(String.format(
-// "====== ok\n1: %s\n2: %s\n3: %s\n4: %s\n5: %s\n6: %s\n7: %s",
-// regex.group(1), regex.group(2), regex.group(3), regex.group(4),
-// regex.group(5), regex.group(6), regex.group(7)
-// ));
+ logger.debug(String.format(
+ "====== Share Tool Bilibili Catch ok\n1: %s\n2: %s\n3: %s\n4: %s\n5: %s\n6: %s\n7: %s",
+ regex.group(1), regex.group(2), regex.group(3), regex.group(4),
+ regex.group(5), regex.group(6), regex.group(7)
+ ));
// get video id from input, also get video part id
String av = regex.group(2)==null ? regex.group(6)==null ? null : regex.group(6) : regex.group(2);
String bv = regex.group(3)==null ? regex.group(7)==null ? null : regex.group(7) : regex.group(3);
-// logger.trace(String.format("catch id av[%s] bv[%s]", av, bv));
+ logger.trace(String.format("catch id av[%s] bv[%s]", av, bv));
final int part = regex.group(5)==null ? -1 : Integer.parseInt(regex.group(5));
-// logger.trace(String.format("catch part [%s]", part));
+ logger.trace(String.format("catch part [%s]", part));
if (av == null) {
assert bv != null;
av = String.valueOf(BiliTool.toAv(bv));
-// logger.trace(String.format("converted bv[%s] to av[%s]", bv, av));
+ logger.trace(String.format("converted bv[%s] to av[%s]", bv, av));
} else {
bv = BiliTool.toBv(Long.parseLong(av));
-// logger.trace(String.format("converted av[%s] to bv[%s]", av, bv));
+ logger.trace(String.format("converted av[%s] to bv[%s]", av, bv));
}
// build standard share links
final String linkPartParam = part==-1 ? "" : "?p="+part;
@@ -58,7 +59,7 @@ public class ShareToolBilibili implements ITelegramQuery {
final String linkBv = "https://www.bilibili.com/video/BV"+bv + linkPartParam;
final String idAv = "av"+av;
final String idBv = "BV"+bv;
-// logger.trace("built all data.");
+ logger.trace("built all data.");
// build share message element
List> result = new ArrayList<>();
diff --git a/src/main/java/cc/sukazyo/cono/morny/util/UniversalCommand.java b/src/main/java/cc/sukazyo/cono/morny/util/UniversalCommand.java
index f9e11b8..2bf2e8e 100644
--- a/src/main/java/cc/sukazyo/cono/morny/util/UniversalCommand.java
+++ b/src/main/java/cc/sukazyo/cono/morny/util/UniversalCommand.java
@@ -19,16 +19,18 @@ public class UniversalCommand {
} else if (coma[i] == '"') {
while (true) {
i++;
- if (coma[i] == '"') {
+ if (i >= coma.length) {
break;
- } else if (coma[i] == '\\' && (coma[i+1] == '"' || coma[i+1] == '\\')) {
+ } else if (coma[i] == '"') {
+ break;
+ } else if (coma[i] == '\\' && i+1 < coma.length && (coma[i+1] == '"' || coma[i+1] == '\\')) {
i++;
tmp.append(coma[i]);
} else {
tmp.append(coma[i]);
}
}
- } else if (coma[i] == '\\' && (coma[i+1] == ' ' || coma[i+1] == '"' || coma[i+1] == '\\')) {
+ } else if (coma[i] == '\\' && i+1 < coma.length && (coma[i+1] == ' ' || coma[i+1] == '"' || coma[i+1] == '\\')) {
i++;
tmp.append(coma[i]);
} else {