mirror of
https://github.com/LamGC/ContentGrabbingJi.git
synced 2025-07-01 04:47:26 +00:00
[Add] pom.xml 增加JLine库;
[Update] ConsoleMain 增强Cli使用体验; [Add] BotEventHandler 增加同步执行命令的方法'executeMessageEvent(MessageEvent, boolean)'; [Change] Main 适配ConsoleMain的更改;
This commit is contained in:
5
pom.xml
5
pom.xml
@ -179,6 +179,11 @@
|
||||
<artifactId>gifencoder</artifactId>
|
||||
<version>0.10.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jline</groupId>
|
||||
<artifactId>jline</artifactId>
|
||||
<version>3.15.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -93,7 +93,7 @@ public class Main {
|
||||
}
|
||||
|
||||
@Command
|
||||
public static void consoleMode() {
|
||||
public static void consoleMode() throws IOException {
|
||||
ConsoleMain.start();
|
||||
}
|
||||
|
||||
|
@ -120,20 +120,38 @@ public class BotEventHandler implements EventHandler {
|
||||
*/
|
||||
@NotAccepted
|
||||
public static void executeMessageEvent(MessageEvent event) {
|
||||
try {
|
||||
executeMessageEvent(event, false);
|
||||
} catch (InterruptedException e) {
|
||||
log.error("执行时发生异常", e);
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 投递消息事件
|
||||
* @param event 事件对象
|
||||
*/
|
||||
@NotAccepted
|
||||
public static void executeMessageEvent(MessageEvent event, boolean sync) throws InterruptedException {
|
||||
String debuggerName = SettingProperties.getProperty(0, "debug.debugger");
|
||||
if(!event.getMessage().startsWith(ADMIN_COMMAND_PREFIX) &&
|
||||
!Strings.isNullOrEmpty(debuggerName)) {
|
||||
try {
|
||||
MessageEventExecutionDebugger debugger = MessageEventExecutionDebugger.valueOf(debuggerName.toUpperCase());
|
||||
debugger.debugger.accept(executor, event, SettingProperties.getProperties(SettingProperties.GLOBAL),
|
||||
MessageEventExecutionDebugger.getDebuggerLogger(debugger));
|
||||
MessageEventExecutionDebugger.getDebuggerLogger(debugger));
|
||||
} catch(IllegalArgumentException e) {
|
||||
log.warn("未找到指定调试器: '{}'", debuggerName);
|
||||
} catch (Exception e) {
|
||||
log.error("事件调试处理时发生异常", e);
|
||||
}
|
||||
} else {
|
||||
BotEventHandler.executor.executor(event);
|
||||
if(sync) {
|
||||
BotEventHandler.executor.executorSync(event);
|
||||
} else {
|
||||
BotEventHandler.executor.executor(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,22 +3,36 @@ package net.lamgc.cgj.bot.framework.cli;
|
||||
import net.lamgc.cgj.bot.boot.ApplicationBoot;
|
||||
import net.lamgc.cgj.bot.event.BotEventHandler;
|
||||
import net.lamgc.cgj.bot.message.MessageSenderBuilder;
|
||||
import org.jline.reader.LineReader;
|
||||
import org.jline.reader.LineReaderBuilder;
|
||||
import org.jline.reader.impl.history.DefaultHistory;
|
||||
import org.jline.terminal.TerminalBuilder;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Scanner;
|
||||
import java.io.IOException;
|
||||
|
||||
public class ConsoleMain {
|
||||
|
||||
public static void start() {
|
||||
MessageSenderBuilder.setCurrentMessageSenderFactory(new ConsoleMessageSenderFactory());
|
||||
private final static Logger log = LoggerFactory.getLogger(ConsoleMain.class);
|
||||
|
||||
public static void start() throws IOException {
|
||||
ConsoleMessageSenderFactory senderFactory = new ConsoleMessageSenderFactory();
|
||||
MessageSenderBuilder.setCurrentMessageSenderFactory(senderFactory);
|
||||
ApplicationBoot.initialBot();
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
System.out.print("会话QQ:");
|
||||
long qqId = scanner.nextLong();
|
||||
System.out.print("会话群组号:");
|
||||
long groupId = scanner.nextLong();
|
||||
LineReader lineReader = LineReaderBuilder.builder()
|
||||
.appName("CGJ")
|
||||
.history(new DefaultHistory())
|
||||
.terminal(TerminalBuilder.builder()
|
||||
.dumb(true)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
long qqId = Long.parseLong(lineReader.readLine("会话QQ: "));
|
||||
long groupId = Long.parseLong(lineReader.readLine("会话群组号:"));
|
||||
boolean isGroup = false;
|
||||
do {
|
||||
String input = scanner.nextLine();
|
||||
String input = lineReader.readLine("App " + qqId + (isGroup ? "@" + groupId : "$private") + " >");
|
||||
if(input.equalsIgnoreCase("#exit")) {
|
||||
System.out.println("退出应用...");
|
||||
break;
|
||||
@ -27,7 +41,11 @@ public class ConsoleMain {
|
||||
System.out.println("System: 群模式状态已变更: " + isGroup);
|
||||
continue;
|
||||
}
|
||||
BotEventHandler.executeMessageEvent(new ConsoleMessageEvent(isGroup ? groupId : 0, qqId, input));
|
||||
try {
|
||||
BotEventHandler.executeMessageEvent(new ConsoleMessageEvent(isGroup ? groupId : 0, qqId, input), true);
|
||||
} catch (InterruptedException e) {
|
||||
log.error("执行时发生中断", e);
|
||||
}
|
||||
} while(true);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user