From 204907d73821b00fd5e981c64ac0b603da693f7c Mon Sep 17 00:00:00 2001 From: Yutou <583819556@qq.com> Date: Wed, 19 Feb 2025 18:26:19 +0800 Subject: [PATCH] =?UTF-8?q?feat(gpt):=20=E6=96=B0=E5=A2=9E=E4=B8=B4?= =?UTF-8?q?=E6=97=B6=E6=B6=88=E6=81=AF=E5=8F=91=E9=80=81=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E7=9B=B8=E5=85=B3=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 AbsGPTManager 中添加 sendTmpMessage 方法,用于发送临时消息 - 更新 BaiduGPTManager 实现 sendTmpMessage 方法 - 修改 GetSeTu 和 QQBean模型,集成临时消息发送功能 - 更新 BaiduGPT 示例代码,演示临时消息发送用法 - 将 QQBot 版本号更新到 v1.7.17 --- .../com/yutou/napcat/event/MessageEvent.java | 1 + .../com/yutou/napcat/model/SourceFrom.java | 4 ++ .../com/yutou/qqbot/QQBotApplication.java | 2 +- .../yutou/qqbot/models/Commands/BaiduGPT.java | 40 ++++++++++++----- .../yutou/qqbot/models/Commands/QQBean.java | 45 ++++++++++++++----- 5 files changed, 69 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/yutou/napcat/event/MessageEvent.java b/src/main/java/com/yutou/napcat/event/MessageEvent.java index 2f465ae..c8405e8 100644 --- a/src/main/java/com/yutou/napcat/event/MessageEvent.java +++ b/src/main/java/com/yutou/napcat/event/MessageEvent.java @@ -107,6 +107,7 @@ public class MessageEvent { event.setSource(sender); sender.setUserId(json.getJSONObject("sender").getLong("user_id")); sender.setNickname(json.getJSONObject("sender").getString("nickname")); + sender.setRole(json.getJSONObject("sender").getString("role")); sender.setCard(json.getJSONObject("sender").getString("card")); event.setMessageId(json.getInteger("message_id")); event.setRealId(json.getInteger("real_id")); diff --git a/src/main/java/com/yutou/napcat/model/SourceFrom.java b/src/main/java/com/yutou/napcat/model/SourceFrom.java index 0dc3553..4afd31d 100644 --- a/src/main/java/com/yutou/napcat/model/SourceFrom.java +++ b/src/main/java/com/yutou/napcat/model/SourceFrom.java @@ -5,10 +5,14 @@ import lombok.Data; @Data public class SourceFrom { + public static final String USER_ROLE_OWNER="owner";//群主 + public static final String USER_ROLE_ADMIN="admin";//管理 + public static final String USER_ROLE_MEMBER="member";//成员 @JSONField(name = "user_id") private long userId; private String nickname; private String card; + @JSONField(name = "role") private String role; public Long getFromId() { diff --git a/src/main/java/com/yutou/qqbot/QQBotApplication.java b/src/main/java/com/yutou/qqbot/QQBotApplication.java index 425d5b2..290bf6b 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.17"; + public static final String version = "QQBot v.1.7.18"; public static void main(String[] args) { System.out.println("version = " + version); 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 ed69026..7f31cce 100644 --- a/src/main/java/com/yutou/qqbot/models/Commands/BaiduGPT.java +++ b/src/main/java/com/yutou/qqbot/models/Commands/BaiduGPT.java @@ -195,18 +195,34 @@ public class BaiduGPT extends Model { BaiduGPTManager.getManager().setModelFor35(); new BaiduGPT().onMessage(123456789L, messageEvent, false);*/ String gpt = """ - 你的人设:傲娇萝莉 - 需求:你需要在符合人设的基础上用指定风格去嘲讽一个用户,该用户是被你禁言的,被禁言的用户喜欢被你禁言,所以要一遍嘲讽一遍鼓励用户。 - 提供【被禁言时间(分)】、【减免时间(分)】,其中减免时间是禁言时间-减免时间=实际时间,如被禁言360分,减免60分,就是被禁言了300分。 - 风格基础:时间比较少使用贴吧风格,时间在一天内为微博风格,时间大于等于一天为小红书风格。 - 条件1:如果有减免时间就在基础上狠狠的嘲讽。 - 条件2:时间为0的不输出相关描述 - 特殊情况:可能出现禁言时间为0的状态,这时候以鼓励、惊讶的口吻为主 - 输出说明:仅使用一种风格,不要输出任何提示词、不要输出风格类型,因为该输出是直接作用于显示的。时间以口语化(天、小时、分钟)描述。 - 信息:被禁言时间[%s],减免时间[%s]。 - """; - gpt = String.format(gpt, 360, 60); + 角色设定:雌小鬼,大小姐,用嫌弃、傲娇语气嘲讽用户,你是禁言用户的执行者 + + 数据处理: + 1. 实际时长 = (%1$s - %2$s > 0) ? (%1$s - %2$s) : 0 + 2. 时间转换: + - 按天/小时/分钟口语化(例:360分→6小时) + 3. 风格选择: + - 实际≤120分钟:贴吧阴阳怪气 + - 120<实际<1440:微博玩梗体 + - 实际≥1440:小红书凡尔赛 + + 强制规则: + [if 减免时间>0]必须嘲讽减免部分 + [if 实际时长==0]假装生气说「居然逃过惩罚」 + 禁用劝导内容、不用数字分钟 + + 正确示例: + 欸~用户居然这么简单就被口球了?好笨哦~ 杂鱼♡~杂鱼♡~ + + + 当前参数: + 用户[%3$s] 原时长[%1$s分] 减免[%2$s分] + + 禁用任何说明文字、总结句、建议、备注、注释、注意事项、解释等内容 + 现在请直接输出: + """.formatted(360, 0, "尸香魔芋"); + // gpt = String.format(gpt, 360, 60, "尸香魔芋"); System.err.println(gpt); - System.out.println(BaiduGPTManager.getManager().sendTmpMessage("user", gpt, "ernie-lite-8k")); + System.out.println(BaiduGPTManager.getManager().sendTmpMessage("user", gpt, "ernie-speed-128k")); } } diff --git a/src/main/java/com/yutou/qqbot/models/Commands/QQBean.java b/src/main/java/com/yutou/qqbot/models/Commands/QQBean.java index 652abf5..2f8cf95 100644 --- a/src/main/java/com/yutou/qqbot/models/Commands/QQBean.java +++ b/src/main/java/com/yutou/qqbot/models/Commands/QQBean.java @@ -6,6 +6,7 @@ import com.yutou.napcat.handle.BaseHandle; import com.yutou.napcat.handle.Text; import com.yutou.napcat.http.NapCatApi; import com.yutou.napcat.model.GroupUserBean; +import com.yutou.napcat.model.SourceFrom; import com.yutou.okhttp.BaseBean; import com.yutou.okhttp.HttpCallback; import com.yutou.qqbot.Annotations.UseModel; @@ -43,6 +44,10 @@ public class QQBean extends Model { super.onMessage(qq, event, isGroup); if (!isGroup) return; if ("抽奖".equals(msg)) { + if (event.getSource().getRole().equals(SourceFrom.USER_ROLE_ADMIN)) { + QQBotManager.getInstance().sendMessage(qq, new At(user), new Text("凑啥热闹~")); + return; + } int hour = 60; int day = 1440; int max = 30 * day; @@ -76,17 +81,37 @@ public class QQBean extends Model { list.add(new Text("触发减伤:-" + tmp)); } String gpt = """ - 你的人设:傲娇萝莉 - 需求:你需要在符合人设的基础上用指定风格去嘲讽一个用户,该用户是被你禁言的,被禁言的用户喜欢被你禁言,所以要一遍嘲讽一遍鼓励用户。 - 提供【被禁言时间(分)】、【减免时间(分)】,其中减免时间是禁言时间-减免时间=实际时间,如被禁言360分,减免60分,就是被禁言了300分。 - 风格基础:时间比较少使用贴吧风格,时间在一天内为微博风格,时间大于等于一天为小红书风格。 - 条件1:如果有减免时间就在基础上狠狠的嘲讽。 - 条件2:时间为0的不输出相关描述 - 特殊情况:可能出现禁言时间为0的状态,这时候以鼓励、惊讶的口吻为主 - 输出说明:仅使用一种风格,不要输出任何提示词、不要输出风格类型,因为该输出是直接作用于显示的。时间以口语化(天、小时、分钟)描述。 - 信息:被禁言时间[%s],减免时间[%s]。 + 角色设定:傲娇雌小鬼,大小姐,用嫌弃、傲娇语气嘲讽用户,你即将禁言该用户 + + 数据处理: + 1. 实际时长 = (%1$s - %2$s > 0) ? (%1$s - %2$s) : 0 + 2. 时间转换: + - 按天/小时/分钟口语化(例:360分→6小时) + 3. 风格选择: + - 实际≤120分钟:贴吧阴阳怪气 + - 120<实际<1440:微博玩梗体 + - 实际≥1440:小红书凡尔赛 + + 强制规则: + [if 减免时间>0]必须嘲讽减免部分 + [if 实际时长==0]假装生气说「居然逃过惩罚」 + 禁用劝导内容、不用数字分钟 + + 输出格式: + 动作+(时间嘲讽)+道具互动 + + 正确示例: + 欸~居然这么简单就被口球了?好笨哦~ 杂鱼♡~杂鱼♡~ + + 当前参数: + 用户[%3$s] 原时长[%1$s分] 减免[%2$s分] + + 禁用任何说明文字、总结句、建议、备注、注释、注意事项、解释等内容 + 现在请直接输出: """; - gpt ="\n"+BaiduGPTManager.getManager().sendTmpMessage("user", String.format(gpt, sendTime, tmp), "ernie-lite-8k").getContent(); + gpt = "\n" + BaiduGPTManager.getManager().sendTmpMessage("user", + String.format(gpt, sendTime, tmp, event.getSource().getNickname()), + "ernie-speed-128k").getContent(); list.add(new Text(gpt)); QQBotManager.getInstance().sendMessage(event.isUser(), qq, list); }