[Change] SpringCQMessageEvent 更新 getImageUrl 具体实现, 首选BotCode中url地址;

[Change] BotEventHandler 调整initial代码;
This commit is contained in:
LamGC 2020-04-16 20:38:04 +08:00
parent 9f58e186d5
commit 99cdfb7598
2 changed files with 27 additions and 9 deletions

View File

@ -62,7 +62,19 @@ public class BotEventHandler implements EventHandler {
.build() .build()
)); ));
private static boolean initialled = false;
static { static {
initial();
}
public synchronized static void initial() {
if(initialled) {
Logger logger = LoggerFactory.getLogger("BotEventHandler@<init>");
logger.warn("BotEventHandler已经执行过初始化方法, 可能存在多次执行的问题, 堆栈信息: \n {}",
Throwables.getStackTraceAsString(new Exception()));
return;
}
executor.setEventUncaughtExceptionHandler(new EventUncaughtExceptionHandler() { executor.setEventUncaughtExceptionHandler(new EventUncaughtExceptionHandler() {
private final Logger log = LoggerFactory.getLogger("EventUncaughtExceptionHandler"); private final Logger log = LoggerFactory.getLogger("EventUncaughtExceptionHandler");
@Override @Override
@ -77,10 +89,10 @@ public class BotEventHandler implements EventHandler {
}); });
try { try {
executor.addHandler(new BotEventHandler()); executor.addHandler(new BotEventHandler());
executor.addHandler(new TestEventHandler());
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
LoggerFactory.getLogger("BotEventHandler@Static").error("添加Handler时发生异常", e); LoggerFactory.getLogger("BotEventHandler@Static").error("添加Handler时发生异常", e);
} }
initialled = true;
} }
private BotEventHandler() { private BotEventHandler() {

View File

@ -1,5 +1,6 @@
package net.lamgc.cgj.bot.event; package net.lamgc.cgj.bot.event;
import net.lamgc.cgj.bot.BotCode;
import net.lz1998.cq.event.message.CQDiscussMessageEvent; import net.lz1998.cq.event.message.CQDiscussMessageEvent;
import net.lz1998.cq.event.message.CQGroupMessageEvent; import net.lz1998.cq.event.message.CQGroupMessageEvent;
import net.lz1998.cq.event.message.CQMessageEvent; import net.lz1998.cq.event.message.CQMessageEvent;
@ -49,19 +50,24 @@ public class SpringCQMessageEvent extends MessageEvent {
} }
/** /**
* 该功能在CQ上需要CQHttp插件启用http接口调用和serve_data_files为true. * 通过CQ码获取图片下载链接.
* 如使用本方法, 则对方需开启5700端口, 且可能会影响多机器人处理. * @param imageFileName 图片完整CQ码
* @param imageFileName 图片文件名
* @return 图片下载链接 * @return 图片下载链接
*/ */
@Override @Override
public String getImageUrl(String imageFileName) { public String getImageUrl(String imageFileName) {
InetSocketAddress remoteAddress = cq.getBotSession().getRemoteAddress(); BotCode code;
if(remoteAddress == null) { if(imageFileName.startsWith("[CQ:") && imageFileName.endsWith("]")) {
throw new IllegalStateException("remoteAddress failed to get"); code = BotCode.parse(imageFileName);
return code.getParameter("url");
} else {
InetSocketAddress remoteAddress = cq.getBotSession().getRemoteAddress();
if(remoteAddress == null) {
throw new IllegalStateException("remoteAddress failed to get");
}
String file = cq.getImage(imageFileName).getData().getFile().replaceAll("\\\\", "/");
return "http://" + remoteAddress.getHostString() + ":5700/data" + file.substring(file.lastIndexOf("/data") + 5);
} }
String file = cq.getImage(imageFileName).getData().getFile().replaceAll("\\\\", "/");
return "http://" + remoteAddress.getHostString() + ":5700/data" + file.substring(file.lastIndexOf("/data") + 5);
} }
@Override @Override