Skip to content

Commit

Permalink
```refactor(mcbot): rename UserBind to UserInfo and update related APIs
Browse files Browse the repository at this point in the history
Rename UserBind to UserInfo to better reflect its purpose. Synchronize updates across
related APIs and data handling classes. Improve data folder path consistency by
using Constants.DATA_FOLDER. Enhance Cmd class with Lombok annotations for better
boilerplate code reduction. Ensure CmdUtils returns null for empty commands.

BREAKING CHANGE: The class UserBind has been renamed to UserInfo. Any code utilizingUserBindApi, UserBind, or related data handling methods must now refer to UserInfoApi
and UserInfo respectively. Additionally, constructor and method calls on Cmd class
have been modified to be more concise with Lombok annotations.
```
  • Loading branch information
cnlimiter committed Aug 17, 2024
1 parent e6d8ebe commit 4e0fd28
Show file tree
Hide file tree
Showing 10 changed files with 107 additions and 77 deletions.
2 changes: 1 addition & 1 deletion common/src/main/java/cn/evole/mods/mcbot/Constants.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class Constants {
public static final ExecutorService commonExecutor = Executors.newSingleThreadExecutor();
public static final Gson GSON = GsonUtils.getNullGson();
public static final Path CONFIG_FOLDER = Services.PLATFORM.getGamePath().resolve("mcbot");
public static Path dataFolder = FileUtils.checkFolder(CONFIG_FOLDER.resolve("data"));
public static Path DATA_FOLDER = FileUtils.checkFolder(CONFIG_FOLDER.resolve("data"));

public static boolean isShutdown = false;
public static boolean connected = false;
Expand Down
4 changes: 4 additions & 0 deletions common/src/main/java/cn/evole/mods/mcbot/api/cmd/Cmd.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package cn.evole.mods.mcbot.api.cmd;

import com.google.gson.annotations.Expose;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

import java.util.List;

Expand All @@ -12,6 +14,8 @@
* @Description:
*/
@Getter
@Setter
@AllArgsConstructor
public class Cmd {
@Expose private String id;
@Expose private String cmd;
Expand Down
8 changes: 7 additions & 1 deletion common/src/main/java/cn/evole/mods/mcbot/api/cmd/CmdApi.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package cn.evole.mods.mcbot.api.cmd;

import cn.evole.mods.mcbot.api.data.UserInfoApi;
import cn.evole.mods.mcbot.util.CmdUtils;
import cn.evole.onebot.sdk.event.message.GroupMessageEvent;
import lombok.val;
Expand All @@ -16,11 +17,16 @@ public class CmdApi {
public static void invokeCommandGroup(GroupMessageEvent event, String msg) {
String originCmd = msg.substring(1);//去除前缀

val user_id = event.getUserId();
val user_id = String.valueOf(event.getUserId());
val group_id = String.valueOf(event.getGroupId());

val cmd = CmdUtils.varParse(event, originCmd);


if (UserInfoApi.groupHas(group_id, user_id)){

}




Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/
public class ChatRecordApi {
public static Map<String, ChatRecord> chatRecords;
public static Path chatRecordFile = FileUtils.checkFile(Constants.dataFolder.resolve("chatRecord.csv"));
public static Path chatRecordFile = FileUtils.checkFile(Constants.DATA_FOLDER.resolve("chatRecord.csv"));

public static boolean has(String message_id){
return chatRecords.containsKey(message_id);
Expand Down
47 changes: 0 additions & 47 deletions common/src/main/java/cn/evole/mods/mcbot/api/data/UserBindApi.java

This file was deleted.

55 changes: 55 additions & 0 deletions common/src/main/java/cn/evole/mods/mcbot/api/data/UserInfoApi.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package cn.evole.mods.mcbot.api.data;

import cn.evole.mods.mcbot.Constants;
import cn.evole.mods.mcbot.plugins.data.UserInfo;
import cn.evole.mods.mcbot.util.FileUtils;

import java.nio.file.Path;
import java.util.List;

/**
* @Project: McBot
* @Author: cnlimiter
* @CreateTime: 2024/8/17 14:02
* @Description:
*/
public class UserInfoApi {
public static List<UserInfo> userInfos;
public static Path userBindFile = FileUtils.checkFile(Constants.DATA_FOLDER.resolve("userBind.csv"));

public static boolean groupHas(String group_id, String user_id){
for (UserInfo userInfo : userInfos){
if (userInfo.getGroupId().equals(group_id)){
return userInfo.getQqId().equals(user_id);
}
}
return false;
}

public static boolean isInGame(String group_id, String user_id){
for (UserInfo userInfo : userInfos){
if (userInfo.getGroupId().equals(group_id)){
return userInfo.getGameName().equals(user_id);
}
}
return false;
}

public static void add(String group_id, String qq_id, String game_name){
if (!groupHas(group_id, qq_id)) {
UserInfo userInfo = new UserInfo();
userInfo.setCreateTime(System.currentTimeMillis());
userInfo.setQqId(qq_id);
userInfo.setGroupId(group_id);
userInfo.setGameName(game_name);
userInfo.setCoin(5);
userInfos.add(userInfo);
}
}

public static void del(String group_id, String qq_id){
if (groupHas(group_id, qq_id)) {
userInfos.removeIf(userInfo -> userInfo.getGroupId().equals(group_id) && userInfo.getQqId().equals(qq_id));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@ public class CommonConfig {
@Comment("开启q群功能")
private boolean groupOn = true;
@Comment("支持多个q群")
private List<Long> groupIdList = new ArrayList<Long>() {
};//支持多个q群
private List<Long> groupIdList = new ArrayList<>();//支持多个q群
@Comment("是否启用")
private boolean enable = true;//是否启用
@Comment("是否开发模式,将显示事件信息操作")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import cn.evole.mods.mcbot.Constants;
import cn.evole.mods.mcbot.api.data.ChatRecordApi;
import cn.evole.mods.mcbot.api.data.UserBindApi;
import cn.evole.mods.mcbot.api.data.UserInfoApi;
import com.github.houbb.csv.util.CsvHelper;
import com.google.common.collect.Maps;

Expand All @@ -18,27 +18,27 @@
public class DataHandler {
public static void load(){
ChatRecordApi.chatRecords = Maps.newConcurrentMap();
UserBindApi.userBinds = new ArrayList<>();
UserInfoApi.userInfos = new ArrayList<>();

if (ChatRecordApi.chatRecordFile.toFile().exists()) {
CsvHelper.read(Constants.dataFolder.toFile(), ChatRecord.class).forEach(chatRecord -> ChatRecordApi.chatRecords.putIfAbsent(chatRecord.getMessageId(), chatRecord));
CsvHelper.read(Constants.DATA_FOLDER.toFile(), ChatRecord.class).forEach(chatRecord -> ChatRecordApi.chatRecords.putIfAbsent(chatRecord.getMessageId(), chatRecord));
}

if (UserBindApi.userBindFile.toFile().exists()){
UserBindApi.userBinds.addAll(CsvHelper.read(Constants.dataFolder.toFile(), UserBind.class));
if (UserInfoApi.userBindFile.toFile().exists()){
UserInfoApi.userInfos.addAll(CsvHelper.read(Constants.DATA_FOLDER.toFile(), UserInfo.class));
}
}


public static void save(){
CsvHelper.write(ChatRecordApi.chatRecords.values().stream().toList(), ChatRecordApi.chatRecordFile.toString());
CsvHelper.write(UserBindApi.userBinds, UserBindApi.userBindFile.toString());
CsvHelper.write(UserInfoApi.userInfos, UserInfoApi.userBindFile.toString());
clear();
}

public static void clear(){
ChatRecordApi.chatRecords.clear();
UserBindApi.userBinds.clear();
UserInfoApi.userInfos.clear();
}

public static void reload(){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.Arrays;
import java.util.List;

/**
* @Project: McBot-fabric
* @Author: cnlimiter
Expand All @@ -17,7 +20,7 @@
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class UserBind {
public class UserInfo {
@Csv(label = "添加日期")
private long createTime = 0L;
@Csv(label = "qq")
Expand All @@ -26,4 +29,12 @@ public class UserBind {
private String groupId = "";
@Csv(label = "游戏名")
private String gameName = "";
@Csv(label = "金币")
private long coin = 0L;
@Csv(label = "权限")
private List<String> permissions = Arrays
.asList(
"mcbot.cmd.tps",
"mcbot.cmd.list"
);
}
36 changes: 19 additions & 17 deletions common/src/main/java/cn/evole/mods/mcbot/util/CmdUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,14 @@ public static String cmdParse(String command) {
* @param cmd q群中指令
* @return 处理完的指令
*/
public static String varParse(GroupMessageEvent event, String cmd) {
public static Cmd varParse(GroupMessageEvent event, String cmd) {
VARS.putIfAbsent("user_id", event.getSender().getUserId());//初始化变量列表

val cmdStart = cmd.split(" ")[0];//部分指令头
String cmdStart = cmd.split(" ")[0];//部分指令头
Cmd selectCmd = null;
String parseCmd = "";//定义最终命令用以返回
boolean useCmd = false;
StringBuilder endCmd = new StringBuilder();

for (Cmd cmd2 : CmdHandler.cmds.values()){//将含有昵称的指令替换为源命令
if (cmd2.getCmd().contains(cmdStart)) useCmd = true;//如果源命令包含部分指令头,则可以视为使用该源命令
Expand All @@ -55,6 +57,7 @@ public static String varParse(GroupMessageEvent event, String cmd) {
}
}
if (useCmd) {
selectCmd = cmd2;
parseCmd = cmd2.getCmd();
break;//跳出循环
}
Expand All @@ -72,23 +75,22 @@ public static String varParse(GroupMessageEvent event, String cmd) {
}
}

val cmdEndSplits = parseCmd.split(" ");//拆分命令
val cmdSplits = cmd.split(" ");
if (!parseCmd.isEmpty() && selectCmd != null){
val cmdEndSplits = parseCmd.split(" ");//拆分命令
val cmdSplits = cmd.split(" ");

for (int i = 0; i < cmdEndSplits.length; i++){
if (cmdEndSplits[i].equals("%")){//如果存在变量标志
cmdEndSplits[i] = cmdSplits[i];//则将指令中的变量对应内容传递到最终命令
for (int i = 0; i < cmdEndSplits.length; i++){
if (cmdEndSplits[i].equals("%")){//如果存在变量标志
cmdEndSplits[i] = cmdSplits[i];//则将指令中的变量对应内容传递到最终命令
}
}
}

val endCmd = new StringBuilder();
for (String key : cmdEndSplits) {
endCmd.append(key).append(" ");
}//拼接回命令

return endCmd.toString();



for (String key : cmdEndSplits) {
endCmd.append(key).append(" ");
}//拼接回命令
return new Cmd(selectCmd.getId(), endCmd.toString(), selectCmd.getAlies(), selectCmd.getAllow_members(), selectCmd.getPermission(), selectCmd.getAfter_cmds(), selectCmd.getAnswer(), selectCmd.isEnable());
} else {
return null;//如果最终命令为空则返回null
}
}
}

0 comments on commit 4e0fd28

Please sign in to comment.