diff --git a/pom.xml b/pom.xml index 47dd4e9..e4e9a1c 100644 --- a/pom.xml +++ b/pom.xml @@ -167,7 +167,7 @@ com.baidubce qianfan - 0.1.3 + 0.1.4 diff --git a/src/main/java/com/yutou/qqbot/QQBotApplication.java b/src/main/java/com/yutou/qqbot/QQBotApplication.java index f3404ce..e1fd3da 100644 --- a/src/main/java/com/yutou/qqbot/QQBotApplication.java +++ b/src/main/java/com/yutou/qqbot/QQBotApplication.java @@ -10,7 +10,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class QQBotApplication { - public static final String version = "QQBot v.1.7.13"; + public static final String version = "QQBot v.1.7.14"; public static void main(String[] args) { System.out.println("version = " + version); diff --git a/src/main/java/com/yutou/qqbot/gpt/AbsGPTManager.java b/src/main/java/com/yutou/qqbot/gpt/AbsGPTManager.java index 941166b..b1c6ce0 100644 --- a/src/main/java/com/yutou/qqbot/gpt/AbsGPTManager.java +++ b/src/main/java/com/yutou/qqbot/gpt/AbsGPTManager.java @@ -6,11 +6,13 @@ import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; public abstract class AbsGPTManager { + private ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); + private ScheduledFuture currentTask; protected static final AtomicInteger MAX_MESSAGE = new AtomicInteger(20); protected final ConcurrentHashMap> msgMap= new ConcurrentHashMap<>(); // 新增锁映射表 @@ -135,4 +137,16 @@ public abstract class AbsGPTManager { this.model=model; return this; } + public void sendMessageAndScheduleClear() { + // 取消当前的定时任务(如果存在) + if (currentTask != null && !currentTask.isCancelled()) { + currentTask.cancel(false); + } + + // 重新调度一个新的定时任务,一小时后执行 + currentTask = scheduler.schedule(() -> { + clear(); + currentTask = null; // 清空当前任务引用 + }, 1, TimeUnit.HOURS); + } } diff --git a/src/main/java/com/yutou/qqbot/gpt/BaiduGPTManager.java b/src/main/java/com/yutou/qqbot/gpt/BaiduGPTManager.java index 0840200..7c80845 100644 --- a/src/main/java/com/yutou/qqbot/gpt/BaiduGPTManager.java +++ b/src/main/java/com/yutou/qqbot/gpt/BaiduGPTManager.java @@ -79,7 +79,15 @@ public class BaiduGPTManager extends AbsGPTManager { .execute(); System.out.println("输出内容:" + response.getResult()); } - + /** + * 发送消息方法 + * 该方法用于处理用户发送的消息,并返回相应的回复消息 + * 它通过用户锁来限制每个用户同时只能有一个请求正在处理中 + * + * @param user 用户标识符,用于区分不同的用户 + * @param message 用户发送的消息内容 + * @return 返回处理后的消息对象,包含回复内容和是否为回复消息的标记 + */ @Override public Message sendMessage(String user, String message) { // 获取或创建用户锁 diff --git a/src/main/java/com/yutou/qqbot/models/Commands/BaiduGPT.java b/src/main/java/com/yutou/qqbot/models/Commands/BaiduGPT.java index 757df20..381e7a4 100644 --- a/src/main/java/com/yutou/qqbot/models/Commands/BaiduGPT.java +++ b/src/main/java/com/yutou/qqbot/models/Commands/BaiduGPT.java @@ -13,6 +13,7 @@ import com.yutou.qqbot.gpt.BaiduGPTManager; import com.yutou.napcat.event.MessageEvent; import com.yutou.qqbot.utlis.ConfigTools; import com.yutou.qqbot.utlis.HttpTools; +import com.yutou.qqbot.utlis.Log; import com.yutou.qqbot.utlis.StringUtils; import lombok.val; @@ -70,6 +71,7 @@ public class BaiduGPT extends Model { } if (event.getTextMessage().contains("画画")) { val file = BaiduGPTManager.getManager().textToImage(String.valueOf(qq), event.getTextMessage().replace("@" + QQDatabase.getMe().getUserId(), "").replace("画画", "").trim()); + Log.i("画图",event.getTextMessage()); if (file == null) { QQBotManager.getInstance().sendMessage(event.isUser(), qq, new Text("画不出")); } else { @@ -123,6 +125,7 @@ public class BaiduGPT extends Model { "\n"+ message.getContent(); QQBotManager.getInstance().sendMessage(event.isUser(), qq, new Text(sb)); + AbsGPTManager.getManager(gptManager).sendMessageAndScheduleClear(); } }