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

- 在 AbsGPTManager 中添加 sendTmpMessage 方法,用于发送临时消息
- 更新 BaiduGPTManager 实现 sendTmpMessage 方法
- 修改 GetSeTu 和 QQBean模型,集成临时消息发送功能
- 更新 BaiduGPT 示例代码,演示临时消息发送用法
- 将 QQBot 版本号更新到 v1.7.17
This commit is contained in:
Yutou 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);
}