diff --git a/src/main/java/cn/chahuyun/HuYanSession.java b/src/main/java/cn/chahuyun/HuYanSession.java index f56864c..99e4cbb 100644 --- a/src/main/java/cn/chahuyun/HuYanSession.java +++ b/src/main/java/cn/chahuyun/HuYanSession.java @@ -65,7 +65,7 @@ public void onEnable() { this.reloadPluginData(SessionData.INSTANCE); getLogger().info("SessionData 已加载!"); //添加默认信息 - SessionData.INSTANCE.setSessionMap("+",new SessionDataBase("乒", 0, "乓", DataEnum.ACCURATE, new ScopeInfo("全局", false, 0L))); + SessionData.INSTANCE.setSessionMap(false, 0, "乒", "乓", new ScopeInfo("全局", false, 0L), DataEnum.ACCURATE); //注册指令 CommandManager.INSTANCE.registerCommand(new CommandManage(HuYanSession.INSTANCE), true); diff --git a/src/main/java/cn/chahuyun/Session/Criticaldialog/SessionDialogue.java b/src/main/java/cn/chahuyun/Session/Criticaldialog/SessionDialogue.java index 1054340..14f2481 100644 --- a/src/main/java/cn/chahuyun/Session/Criticaldialog/SessionDialogue.java +++ b/src/main/java/cn/chahuyun/Session/Criticaldialog/SessionDialogue.java @@ -64,6 +64,7 @@ public void session(MessageEvent messageEvent,SessionDataBase sessionDataBase) //发送 subject.sendMessage(MiraiCode.deserializeMiraiCode(valueList.get(nextInt))); break; + default:break; } diff --git a/src/main/java/cn/chahuyun/Session/DialogueBasic.java b/src/main/java/cn/chahuyun/Session/DialogueBasic.java index fdfcee4..2a0feb5 100644 --- a/src/main/java/cn/chahuyun/Session/DialogueBasic.java +++ b/src/main/java/cn/chahuyun/Session/DialogueBasic.java @@ -11,6 +11,7 @@ import cn.chahuyun.groupManager.GroupManager; import cn.chahuyun.power.Permissions; import cn.chahuyun.sessionManager.SessionManage; +import cn.chahuyun.utils.MessageUtil; import net.mamoe.mirai.event.events.MessageEvent; import net.mamoe.mirai.utils.MiraiLogger; @@ -33,10 +34,11 @@ public class DialogueBasic { private MiraiLogger l = HuYanSession.INSTANCE.getLogger(); + private final MessageUtil util = MessageUtil.INSTANCE; /** * 指令正则 */ - public String commandPattern = "查询 ?|学习[+|-]?\\s+|删除 |([+-]\\[mirai:at:\\d+\\] [\\w]+)"; + public String commandPattern = "查询 ?|学习(多词条)?\\s+|删除 |([+-]\\[mirai:at:\\d+\\] [\\w]+)"; /** * 群管指令正则 */ @@ -185,13 +187,13 @@ public void isMessageWhereabouts(MessageEvent event) { case COMMAND: l.info(userPower); if (owner == event.getSender().getId() || adminList.get(userPower).isSessionPower()) { - if (messageToString.indexOf("学习") == 0) { + if (util.isStudyCommand(event)) { l.info("学习指令"); SessionManage.INSTANCE.studySession(event); } else if (messageToString.indexOf("查询") == 0) { l.info("查询指令"); SessionManage.INSTANCE.querySession(event); - } else if (messageToString.indexOf("删除") == 0) { + } else if (util.isDeleteCommand(event)) { l.info("删除指令"); SessionManage.INSTANCE.deleteSession(event); } diff --git a/src/main/java/cn/chahuyun/data/SessionData.java b/src/main/java/cn/chahuyun/data/SessionData.java index 9549776..3cbb47c 100644 --- a/src/main/java/cn/chahuyun/data/SessionData.java +++ b/src/main/java/cn/chahuyun/data/SessionData.java @@ -10,6 +10,7 @@ import net.mamoe.mirai.message.data.MessageChainBuilder; import net.mamoe.mirai.utils.MiraiLogger; +import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -77,8 +78,6 @@ public Map getSessionMap() { /** - * @param s + or - - * @param base 基本对话 * @return net.mamoe.mirai.message.data.MessageChain * @description 用于修改本地数据的操作方法 * @author zhangjiaxing @@ -119,6 +118,47 @@ public MessageChain setSessionMap(boolean studyType, int contentType, String key return new MessageChainBuilder().append("修改触发词回复成功!").build(); } + + /** + * @description 删除词 + * @author zhangjiaxing + * @param param + * @date 2022/6/23 22:36 + * @return net.mamoe.mirai.message.data.MessageChain + */ + public MessageChain delSessionData(String param) { + String[] s = param.split(" "); + Map stringStringMap = this.sessionMap.get(); + if (s[0].equals("!")) { + if (stringStringMap.containsKey(s[1])) { + String s1 = stringStringMap.get(s[1]); + SessionDataBase base = JSONObject.parseObject(s1, SessionDataBase.class); + return base.setValues(false, s[2]); + } + } + if (stringStringMap.containsKey(s[1])) { + stringStringMap.remove(s[1]); + return new MessageChainBuilder().append("删除关键词成功!").build(); + } + return new MessageChainBuilder().append("删除关键词失败!").build(); + } + + /** + * @description 轮询次数+1 + * @author zhangjiaxing + * @param key + * @date 2022/6/23 22:43 + * @return void + */ + public void addPollNum(String key) { + Map stringStringMap = this.sessionMap.get(); + String s = stringStringMap.get(key); + SessionDataBase base = JSONObject.parseObject(s, SessionDataBase.class); + base.getPoll(); + String string = JSONObject.toJSONString(base); + stringStringMap.put(key, string); + } + /** * @param s 标签 * @param message 欢迎词 diff --git a/src/main/java/cn/chahuyun/sessionManager/SessionManage.java b/src/main/java/cn/chahuyun/sessionManager/SessionManage.java index 566290e..8a0ab1a 100644 --- a/src/main/java/cn/chahuyun/sessionManager/SessionManage.java +++ b/src/main/java/cn/chahuyun/sessionManager/SessionManage.java @@ -138,8 +138,15 @@ public Boolean deleteSession(MessageEvent event) { String messageString = event.getMessage().serializeToMiraiCode(); Contact subject = event.getSubject(); - - + //验证格式 + boolean deleteCommand = messageUtil.isDeleteCommand(event); + if (deleteCommand) { + subject.sendMessage("删除失败!需要帮助请发送帮助!"); + return false; + } + String param = messageUtil.deleteParam(); + MessageChain messages = SessionData.INSTANCE.delSessionData(param); + subject.sendMessage(messageString); return false; } diff --git a/src/main/java/cn/chahuyun/utils/MessageUtil.java b/src/main/java/cn/chahuyun/utils/MessageUtil.java index 6f1ce1e..2e5f7cd 100644 --- a/src/main/java/cn/chahuyun/utils/MessageUtil.java +++ b/src/main/java/cn/chahuyun/utils/MessageUtil.java @@ -4,6 +4,7 @@ import cn.chahuyun.data.ScopeInfo; import cn.chahuyun.enumerate.DataEnum; import net.mamoe.mirai.event.events.MessageEvent; +import net.mamoe.mirai.message.data.MessageChain; import net.mamoe.mirai.utils.MiraiLogger; import java.util.HashMap; @@ -26,7 +27,7 @@ public class MessageUtil { /** * miraiCode匹配正则 */ - private String miraiCode = "\\[mirai:\\w+:[\\S]+\\]"; + private final String miraiCode = "\\[mirai:\\w+:[\\S]+\\]"; /** * 学习正则 @@ -38,10 +39,12 @@ public class MessageUtil { * 删除正则 * 删除(多词条)?\s+(\S)+ */ - public String deletePattern = "删除(多词条)?\\s+(\\S)+"; + public String deletePattern = "删除(多词条)?\\s+(\\S)+\\s?(\\S)?"; - //匹配器,重复利用 + /** + * 匹配器,重复利用 + */ public Matcher matcher; /** @@ -106,7 +109,11 @@ public Map spotStudyCommandParam(MessageEvent event) { case "全局": scopeInfo = new ScopeInfo("全局", false, null);break; case "随机": - if (studyType) contentType = 3;break; + if (studyType) { + contentType = 3; + } + break; + default:break; } } } @@ -129,9 +136,39 @@ public Map spotStudyCommandParam(MessageEvent event) { return map; } - + /** + * @description 判断是否是删除指令 + * @author zhangjiaxing + * @param event + * @date 2022/6/23 22:15 + * @return boolean + */ public boolean isDeleteCommand(MessageEvent event) { String code = event.getMessage().serializeToMiraiCode(); + //同理 + matcher = Pattern.compile(deletePattern).matcher(code); + return matcher.find(); + } + + /** + * @description 删除 + * @author zhangjiaxing + * @date 2022/6/23 22:15 + * @return java.lang.String + */ + public String deleteParam() { + + //获取匹配数据 + String group = matcher.group(); + //删除换行 + String replace = group.replace("\\n", ""); + //分割参数 + String[] split = replace.split("\\s+"); + if (split[0].equals("删除多词条")) { + return "! " + split[1]+" "+split[2]; + } + return split[1]; + }