From 9ab99b22e23026ab3c5bd7cf7f0bc592289cce8c Mon Sep 17 00:00:00 2001
From: Yutou <583819556@qq.com>
Date: Wed, 19 Feb 2025 10:24:13 +0800
Subject: [PATCH] =?UTF-8?q?feat(bot):=20=E5=A2=9E=E5=8A=A0=E5=AE=9A?=
=?UTF-8?q?=E6=97=B6=E6=B8=85=E7=90=86=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98?=
=?UTF-8?q?=E5=8C=96=E6=B6=88=E6=81=AF=E5=8F=91=E9=80=81=E9=80=BB=E8=BE=91?=
=?UTF-8?q?-=20=E5=9C=A8=20AbsGPTManager=20=E4=B8=AD=E6=B7=BB=E5=8A=A0?=
=?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E8=B0=83=E5=BA=A6=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD=EF=BC=8C=E7=94=A8=E4=BA=8E=E5=AE=9A=E6=9C=9F=E6=B8=85?=
=?UTF-8?q?=E7=90=86=E8=B5=84=E6=BA=90=20-=20=E4=BF=AE=E6=94=B9=20BaiduGPT?=
=?UTF-8?q?=20=E7=B1=BB=E4=B8=AD=E7=9A=84=E6=B6=88=E6=81=AF=E5=8F=91?=
=?UTF-8?q?=E9=80=81=E9=80=BB=E8=BE=91=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=AE=9A?=
=?UTF-8?q?=E6=97=B6=E6=B8=85=E7=90=86=E8=B0=83=E5=BA=A6=20-=20=E6=9B=B4?=
=?UTF-8?q?=E6=96=B0=20BaiduGPTManager=20=E4=B8=AD=E7=9A=84=20sendMessage?=
=?UTF-8?q?=20=E6=96=B9=E6=B3=95=EF=BC=8C=E6=B7=BB=E5=8A=A0=E7=94=A8?=
=?UTF-8?q?=E6=88=B7=E9=94=81=E6=B3=A8=E9=87=8A=20-=20=E5=8D=87=E7=BA=A7?=
=?UTF-8?q?=20qianfan=20=E4=BE=9D=E8=B5=96=E8=87=B30.1.4=20=E7=89=88?=
=?UTF-8?q?=E6=9C=AC=20-=20=E6=9B=B4=E6=96=B0=20QQBot=20=E7=89=88=E6=9C=AC?=
=?UTF-8?q?=E5=8F=B7=E8=87=B3=201.7.14?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 2 +-
.../java/com/yutou/qqbot/QQBotApplication.java | 2 +-
.../java/com/yutou/qqbot/gpt/AbsGPTManager.java | 16 +++++++++++++++-
.../com/yutou/qqbot/gpt/BaiduGPTManager.java | 10 +++++++++-
.../yutou/qqbot/models/Commands/BaiduGPT.java | 3 +++
5 files changed, 29 insertions(+), 4 deletions(-)
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();
}
}