feat(gpt): 新增临时消息发送功能并优化相关命令

- 在 AbsGPTManager 中添加 sendTmpMessage 方法,用于发送临时消息
- 更新 BaiduGPTManager 实现 sendTmpMessage 方法
- 修改 GetSeTu 和 QQBean模型,集成临时消息发送功能
- 更新 BaiduGPT 示例代码,演示临时消息发送用法
- 将 QQBot 版本号更新到 v1.7.17
This commit is contained in:
2025-02-19 18:26:19 +08:00
parent 925a7af045
commit 204907d738
5 changed files with 69 additions and 23 deletions

View File

@@ -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"));

View File

@@ -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() {

View File

@@ -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);

View File

@@ -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"));
}
}

View File

@@ -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);
}