Skip to content

Commit

Permalink
完成多词条
Browse files Browse the repository at this point in the history
  • Loading branch information
Moyuyanli committed Jun 23, 2022
1 parent 47a94f3 commit e797647
Show file tree
Hide file tree
Showing 6 changed files with 100 additions and 13 deletions.
2 changes: 1 addition & 1 deletion src/main/java/cn/chahuyun/HuYanSession.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ public void session(MessageEvent messageEvent,SessionDataBase sessionDataBase)
//发送
subject.sendMessage(MiraiCode.deserializeMiraiCode(valueList.get(nextInt)));
break;
default:break;
}


Expand Down
8 changes: 5 additions & 3 deletions src/main/java/cn/chahuyun/Session/DialogueBasic.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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]+)";
/**
* 群管指令正则
*/
Expand Down Expand Up @@ -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);
}
Expand Down
44 changes: 42 additions & 2 deletions src/main/java/cn/chahuyun/data/SessionData.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -77,8 +78,6 @@ public Map<String, SessionDataBase> getSessionMap() {


/**
* @param s + or -
* @param base 基本对话
* @return net.mamoe.mirai.message.data.MessageChain
* @description 用于修改本地数据的操作方法
* @author zhangjiaxing
Expand Down Expand Up @@ -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<String, String> 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<String, String> 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 欢迎词
Expand Down
11 changes: 9 additions & 2 deletions src/main/java/cn/chahuyun/sessionManager/SessionManage.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down
47 changes: 42 additions & 5 deletions src/main/java/cn/chahuyun/utils/MessageUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -26,7 +27,7 @@ public class MessageUtil {
/**
* miraiCode匹配正则
*/
private String miraiCode = "\\[mirai:\\w+:[\\S]+\\]";
private final String miraiCode = "\\[mirai:\\w+:[\\S]+\\]";

/**
* 学习正则
Expand All @@ -38,10 +39,12 @@ public class MessageUtil {
* 删除正则
* 删除(多词条)?\s+(\S)+
*/
public String deletePattern = "删除(多词条)?\\s+(\\S)+";
public String deletePattern = "删除(多词条)?\\s+(\\S)+\\s?(\\S)?";


//匹配器,重复利用
/**
* 匹配器,重复利用
*/
public Matcher matcher;

/**
Expand Down Expand Up @@ -106,7 +109,11 @@ public Map<String, Object> spotStudyCommandParam(MessageEvent event) {
case "全局":
scopeInfo = new ScopeInfo("全局", false, null);break;
case "随机":
if (studyType) contentType = 3;break;
if (studyType) {
contentType = 3;
}
break;
default:break;
}
}
}
Expand All @@ -129,9 +136,39 @@ public Map<String, Object> 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];

}


Expand Down

0 comments on commit e797647

Please sign in to comment.