From f8cbc50a6a38ed83c20c9e4a19d92043459ae07b Mon Sep 17 00:00:00 2001 From: wzp Date: Thu, 10 Oct 2024 08:53:42 +0800 Subject: [PATCH] feat: adding essence event fix: Fixed the BUG of automatically agreeing to add group applications --- .idea/modules.xml | 9 ---- .idea/modules/MyBot.main.iml | 8 ---- .../mybot-api/MyBot.mybot-api.main.iml | 8 ---- build.gradle.kts | 6 +-- .../cn/wzpmc/events/notice/NoticeType.java | 9 +++- .../notice/essence/EssenceAddEvent.java | 45 +++++++++++++++++++ .../events/notice/essence/EssenceEvent.java | 25 +++++++++++ .../events/notice/essence/EssenceSubType.java | 22 +++++++++ .../builtin/event/AddGroupEventHandler.java | 10 +++-- src/main/java/cn/wzpmc/utils/JsonUtils.java | 2 + .../utils/json/event/EssenceEventReader.java | 27 +++++++++++ 11 files changed, 139 insertions(+), 32 deletions(-) delete mode 100644 .idea/modules.xml delete mode 100644 .idea/modules/MyBot.main.iml delete mode 100644 .idea/modules/mybot-api/MyBot.mybot-api.main.iml create mode 100644 mybot-api/src/main/java/cn/wzpmc/events/notice/essence/EssenceAddEvent.java create mode 100644 mybot-api/src/main/java/cn/wzpmc/events/notice/essence/EssenceEvent.java create mode 100644 mybot-api/src/main/java/cn/wzpmc/events/notice/essence/EssenceSubType.java create mode 100644 src/main/java/cn/wzpmc/utils/json/event/EssenceEventReader.java diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 9260d95..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules/MyBot.main.iml b/.idea/modules/MyBot.main.iml deleted file mode 100644 index afc1871..0000000 --- a/.idea/modules/MyBot.main.iml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/modules/mybot-api/MyBot.mybot-api.main.iml b/.idea/modules/mybot-api/MyBot.mybot-api.main.iml deleted file mode 100644 index 4acdb19..0000000 --- a/.idea/modules/mybot-api/MyBot.mybot-api.main.iml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 2737bb5..5b3580b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,7 +14,7 @@ allprojects { apply(plugin = "java-library") val groupName by extra("cn.wzpmc") val projectArtifactId by extra("my-bot") - val projectVersion by extra("1.0.3") + val projectVersion by extra("1.0.4") repositories { mavenCentral() maven("https://libraries.minecraft.net") @@ -30,6 +30,8 @@ allprojects { api("org.apache.logging.log4j:log4j-api:2.23.1") testImplementation(platform("org.junit:junit-bom:5.10.0")) testImplementation("org.junit.jupiter:junit-jupiter") + // https://mvnrepository.com/artifact/org.yaml/snakeyaml + implementation("org.yaml:snakeyaml:2.2") } tasks.compileJava { options.encoding = "UTF-8" @@ -53,8 +55,6 @@ dependencies { implementation("org.apache.logging.log4j:log4j-jul:2.23.1") // https://mvnrepository.com/artifact/io.netty/netty-all implementation("io.netty:netty-all:4.1.112.Final") - // https://mvnrepository.com/artifact/org.yaml/snakeyaml - implementation("org.yaml:snakeyaml:2.2") // https://mvnrepository.com/artifact/org.jline/jline implementation("org.jline:jline-terminal:3.26.3") implementation("org.jline:jline-reader:3.26.3") diff --git a/mybot-api/src/main/java/cn/wzpmc/events/notice/NoticeType.java b/mybot-api/src/main/java/cn/wzpmc/events/notice/NoticeType.java index f5a4e5c..bb8ce63 100644 --- a/mybot-api/src/main/java/cn/wzpmc/events/notice/NoticeType.java +++ b/mybot-api/src/main/java/cn/wzpmc/events/notice/NoticeType.java @@ -1,6 +1,7 @@ package cn.wzpmc.events.notice; import cn.wzpmc.events.notice.admin.GroupAdminChangeEvent; +import cn.wzpmc.events.notice.essence.EssenceEvent; import cn.wzpmc.events.notice.file.GroupFileUploadedEvent; import cn.wzpmc.events.notice.notify.NotifyEvent; import cn.wzpmc.events.notice.recall.GroupMessageRecallEvent; @@ -70,7 +71,13 @@ public enum NoticeType { * @see NotifyEvent * @since 2024/8/1 下午10:22 v0.0.2-dev */ - NOTIFY(NotifyEvent.class); + NOTIFY(NotifyEvent.class), + /** + * 精华消息事件 + * + * @since 2024/9/16 21:25 v1.0.3 + */ + ESSENCE(EssenceEvent.class); public final Class clazz; NoticeType(Class clazz) { diff --git a/mybot-api/src/main/java/cn/wzpmc/events/notice/essence/EssenceAddEvent.java b/mybot-api/src/main/java/cn/wzpmc/events/notice/essence/EssenceAddEvent.java new file mode 100644 index 0000000..3c9b608 --- /dev/null +++ b/mybot-api/src/main/java/cn/wzpmc/events/notice/essence/EssenceAddEvent.java @@ -0,0 +1,45 @@ +package cn.wzpmc.events.notice.essence; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 添加精华消息事件 + * + * @author wzp + * @version 1.0.3 + * @since 2024/9/16 21:32 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class EssenceAddEvent extends EssenceEvent { + /** + * 群ID + * + * @since 2024/9/16 21:33 v1.0.3 + */ + @JSONField(name = "group_id") + private Long groupId; + /** + * 设置人ID + * + * @since 2024/9/16 21:33 v1.0.3 + */ + @JSONField(name = "user_id") + private Long userId; + /** + * 消息ID + * + * @since 2024/9/16 21:33 v1.0.3 + */ + @JSONField(name = "message_id") + private Long messageId; + /** + * 消息发送者ID + * + * @since 2024/9/16 21:33 v1.0.3 + */ + @JSONField(name = "sender_id") + private Long senderId; +} diff --git a/mybot-api/src/main/java/cn/wzpmc/events/notice/essence/EssenceEvent.java b/mybot-api/src/main/java/cn/wzpmc/events/notice/essence/EssenceEvent.java new file mode 100644 index 0000000..3b8656d --- /dev/null +++ b/mybot-api/src/main/java/cn/wzpmc/events/notice/essence/EssenceEvent.java @@ -0,0 +1,25 @@ +package cn.wzpmc.events.notice.essence; + +import cn.wzpmc.events.notice.NoticeEvent; +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 精华消息事件 + * + * @author wzp + * @version 1.0.3 + * @since 2024/9/16 21:24 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class EssenceEvent extends NoticeEvent { + /** + * 群精华消息子类型 + * + * @since 2024/8/1 下午11:26 v0.0.2-dev + */ + @JSONField(name = "sub_type") + private EssenceSubType subType; +} diff --git a/mybot-api/src/main/java/cn/wzpmc/events/notice/essence/EssenceSubType.java b/mybot-api/src/main/java/cn/wzpmc/events/notice/essence/EssenceSubType.java new file mode 100644 index 0000000..21fc1c9 --- /dev/null +++ b/mybot-api/src/main/java/cn/wzpmc/events/notice/essence/EssenceSubType.java @@ -0,0 +1,22 @@ +package cn.wzpmc.events.notice.essence; + +/** + * 精华消息子事件 + * + * @author wzp + * @version 1.0.3 + * @since 2024/9/16 21:31 + */ +public enum EssenceSubType { + /** + * 添加精华消息事件 + * + * @since 2024/9/16 21:35 v1.0.3 + */ + ADD(EssenceAddEvent.class); + public final Class clazz; + + EssenceSubType(Class clazz) { + this.clazz = clazz; + } +} diff --git a/src/main/java/cn/wzpmc/builtin/event/AddGroupEventHandler.java b/src/main/java/cn/wzpmc/builtin/event/AddGroupEventHandler.java index d3af4f2..278d04e 100644 --- a/src/main/java/cn/wzpmc/builtin/event/AddGroupEventHandler.java +++ b/src/main/java/cn/wzpmc/builtin/event/AddGroupEventHandler.java @@ -3,6 +3,7 @@ import cn.wzpmc.api.IMainApi; import cn.wzpmc.api.actions.message.set.SetGroupAddRequestAction; import cn.wzpmc.events.request.group.GroupJoinRequestEvent; +import cn.wzpmc.events.request.group.GroupJoinRequestEventSubType; import cn.wzpmc.plugins.event.EventHandler; import cn.wzpmc.user.IBot; import lombok.extern.log4j.Log4j2; @@ -20,7 +21,10 @@ public class AddGroupEventHandler { public void onUserInvite(GroupJoinRequestEvent event) { IBot instance = IBot.getInstance(); IMainApi mainApi = instance.getMainApi(); - mainApi.doApiCallSafe(new SetGroupAddRequestAction(event.getFlag(), event.getSubType())); - log.info("用户{}邀请你加入群{},已同意", event.getUserId(), event.getGroupId()); + GroupJoinRequestEventSubType subType = event.getSubType(); + if (subType.equals(GroupJoinRequestEventSubType.INVITE)) { + mainApi.doApiCallSafe(new SetGroupAddRequestAction(event.getFlag(), GroupJoinRequestEventSubType.INVITE)); + log.info("用户{}邀请你加入群{},已同意", event.getUserId(), event.getGroupId()); + } } -} +} \ No newline at end of file diff --git a/src/main/java/cn/wzpmc/utils/JsonUtils.java b/src/main/java/cn/wzpmc/utils/JsonUtils.java index 40ac5a6..12ac8b1 100644 --- a/src/main/java/cn/wzpmc/utils/JsonUtils.java +++ b/src/main/java/cn/wzpmc/utils/JsonUtils.java @@ -7,6 +7,7 @@ import cn.wzpmc.events.message.MessageEvent; import cn.wzpmc.events.meta.MetaEvent; import cn.wzpmc.events.notice.NoticeEvent; +import cn.wzpmc.events.notice.essence.EssenceEvent; import cn.wzpmc.events.notice.notify.NotifyEvent; import cn.wzpmc.events.request.RequestEvent; import cn.wzpmc.message.StringMessage; @@ -70,6 +71,7 @@ public static void initReader() { JSON.register(IBot.class, new IBotReader()); JSON.register(Friend.class, new FriendUserReader()); JSON.register(GroupUser.class, new GroupUserReader()); + JSON.register(EssenceEvent.class, new EssenceEventReader()); } } diff --git a/src/main/java/cn/wzpmc/utils/json/event/EssenceEventReader.java b/src/main/java/cn/wzpmc/utils/json/event/EssenceEventReader.java new file mode 100644 index 0000000..8469739 --- /dev/null +++ b/src/main/java/cn/wzpmc/utils/json/event/EssenceEventReader.java @@ -0,0 +1,27 @@ +package cn.wzpmc.utils.json.event; + +import cn.wzpmc.events.notice.essence.EssenceEvent; +import cn.wzpmc.events.notice.essence.EssenceSubType; +import com.alibaba.fastjson2.JSONObject; +import com.alibaba.fastjson2.JSONReader; +import com.alibaba.fastjson2.reader.ObjectReader; + +import java.lang.reflect.Type; + +/** + * @author wzp + * @version 1.0.3 + * @since 2024/9/16 21:36 + */ +public class EssenceEventReader implements ObjectReader { + @Override + public EssenceEvent readObject(JSONReader jsonReader, Type type, Object o, long l) { + JSONReader.SavePoint mark = jsonReader.mark(); + JSONObject jsonObject = jsonReader.readJSONObject(); + EssenceSubType postType = EssenceSubType.valueOf(jsonObject.getString("sub_type").toUpperCase()); + jsonReader.reset(mark); + EssenceEvent event = jsonReader.read(postType.clazz); + jsonReader.close(); + return event; + } +}