diff --git a/src/main/java/cn/wzpmc/api/entities/BotStatus.java b/src/main/java/cn/wzpmc/api/entities/BotStatus.java new file mode 100644 index 0000000..015a10a --- /dev/null +++ b/src/main/java/cn/wzpmc/api/entities/BotStatus.java @@ -0,0 +1,15 @@ +package cn.wzpmc.api.entities; + +import lombok.Data; + +/** + * bot运行状态 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午10:30 + */ +@Data +public class BotStatus { + private boolean online; + private boolean good; +} diff --git a/src/main/java/cn/wzpmc/api/events/Event.java b/src/main/java/cn/wzpmc/api/events/Event.java new file mode 100644 index 0000000..59b1a89 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/Event.java @@ -0,0 +1,35 @@ +package cn.wzpmc.api.events; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 事件基类 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午5:46 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class Event { + /** + * 事件发生的时间戳 + * @since 2024/8/1 下午5:52 v0.0.2-dev + */ + private Long time; + /** + * 收到事件的机器人的QQ号 + * @since 2024/8/1 下午5:52 v0.0.2-dev + */ + @JSONField(name = "self_id") + private Long selfId; + /** + * 事件类型 + * @since 2024/8/1 下午5:52 v0.0.2-dev + */ + @JSONField(name = "post_type") + private EventPostType postType; +} diff --git a/src/main/java/cn/wzpmc/api/events/EventPostType.java b/src/main/java/cn/wzpmc/api/events/EventPostType.java new file mode 100644 index 0000000..3a49072 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/EventPostType.java @@ -0,0 +1,30 @@ +package cn.wzpmc.api.events; + +/** + * 事件类型 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午5:47 + */ +public enum EventPostType { + /** + * 消息事件 + * @since 2024/8/1 下午5:48 v0.0.2-dev + */ + MESSAGE, + /** + * 通知事件 + * @since 2024/8/1 下午5:47 v0.0.2-dev + */ + NOTICE, + /** + * 请求事件 + * @since 2024/8/1 下午5:47 v0.0.2-dev + */ + REQUEST, + /** + * 元事件 + * @since 2024/8/1 下午5:47 v0.0.2-dev + */ + META_EVENT, +} diff --git a/src/main/java/cn/wzpmc/api/events/message/MessageEvent.java b/src/main/java/cn/wzpmc/api/events/message/MessageEvent.java new file mode 100644 index 0000000..14b8231 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/message/MessageEvent.java @@ -0,0 +1,67 @@ +package cn.wzpmc.api.events.message; + +import cn.wzpmc.api.events.Event; +import cn.wzpmc.api.message.MessageComponent; +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 消息事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午5:49 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@NoArgsConstructor +@AllArgsConstructor +public class MessageEvent extends Event { + /** + * 消息子类型 + * @since 2024/8/1 下午11:11 v0.0.2-dev + */ + @JSONField(name = "sub_type") + private E subType; + /** + * 消息类型 + * @since 2024/8/1 下午11:24 v0.0.2-dev + */ + @JSONField(name = "message_type") + private MessageType messageType; + /** + * 消息ID + * @since 2024/8/1 下午11:11 v0.0.2-dev + */ + @JSONField(name = "message_id") + private Integer messageId; + /** + * 发送者ID + * @since 2024/8/1 下午11:11 v0.0.2-dev + */ + @JSONField(name = "user_id") + private Integer userId; + /** + * 消息详细内容 + * @since 2024/8/1 下午11:11 v0.0.2-dev + */ + private MessageComponent message; + /** + * 文本格式消息 + * @since 2024/8/1 下午11:11 v0.0.2-dev + */ + @JSONField(name = "raw_message") + private String rawMessage; + /** + * 消息使用字体 + * @since 2024/8/1 下午11:11 v0.0.2-dev + */ + private Integer font; + /** + * 发送者详细信息 + * @since 2024/8/1 下午11:12 v0.0.2-dev + */ + private U sender; +} diff --git a/src/main/java/cn/wzpmc/api/events/message/MessageType.java b/src/main/java/cn/wzpmc/api/events/message/MessageType.java new file mode 100644 index 0000000..90f22ef --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/message/MessageType.java @@ -0,0 +1,27 @@ +package cn.wzpmc.api.events.message; + +import cn.wzpmc.api.events.message.group.GroupMessageEvent; +import cn.wzpmc.api.events.message.priv.PrivateMessageEvent; + +/** + * 消息类型 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午5:54 + */ +public enum MessageType { + /** + * 私聊 + * @since 2024/8/1 下午5:55 v0.0.2-dev + */ + PRIVATE(PrivateMessageEvent.class), + /** + * 群 + * @since 2024/8/1 下午5:55 v0.0.2-dev + */ + GROUP(GroupMessageEvent.class); + public final Class> clazz; + MessageType(Class> clazz){ + this.clazz = clazz; + } +} diff --git a/src/main/java/cn/wzpmc/api/events/message/group/GroupMessageEvent.java b/src/main/java/cn/wzpmc/api/events/message/group/GroupMessageEvent.java new file mode 100644 index 0000000..434d7fe --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/message/group/GroupMessageEvent.java @@ -0,0 +1,30 @@ +package cn.wzpmc.api.events.message.group; + +import cn.wzpmc.api.events.message.MessageEvent; +import cn.wzpmc.api.user.group.GroupUser; +import cn.wzpmc.api.user.group.GroupUserAnonymousInfo; +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 群消息事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午8:59 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class GroupMessageEvent extends MessageEvent { + /** + * 群号 + * @since 2024/8/1 下午11:11 v0.0.2-dev + */ + @JSONField(name = "group_id") + private Long groupId; + /** + * 匿名消息消息(当非匿名消息时为null) + * @since 2024/8/1 下午11:10 v0.0.2-dev + */ + private GroupUserAnonymousInfo anonymous; +} diff --git a/src/main/java/cn/wzpmc/api/events/message/group/GroupMessageSubType.java b/src/main/java/cn/wzpmc/api/events/message/group/GroupMessageSubType.java new file mode 100644 index 0000000..a904992 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/message/group/GroupMessageSubType.java @@ -0,0 +1,25 @@ +package cn.wzpmc.api.events.message.group; + +/** + * 群消息子类型 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午6:02 + */ +public enum GroupMessageSubType { + /** + * 好友 + * @since 2024/8/1 下午6:03 v0.0.2-dev + */ + FRIEND, + /** + * 群临时会话 + * @since 2024/8/1 下午6:03 v0.0.2-dev + */ + GROUP, + /** + * 其他 + * @since 2024/8/1 下午6:03 v0.0.2-dev + */ + OTHER +} diff --git a/src/main/java/cn/wzpmc/api/events/message/priv/PrivateMessageEvent.java b/src/main/java/cn/wzpmc/api/events/message/priv/PrivateMessageEvent.java new file mode 100644 index 0000000..84d5a6a --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/message/priv/PrivateMessageEvent.java @@ -0,0 +1,14 @@ +package cn.wzpmc.api.events.message.priv; + +import cn.wzpmc.api.events.message.MessageEvent; +import cn.wzpmc.api.user.Friend; + +/** + * 饲料消息事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:02 + */ +public class PrivateMessageEvent extends MessageEvent { + +} diff --git a/src/main/java/cn/wzpmc/api/events/message/priv/PrivateMessageSubType.java b/src/main/java/cn/wzpmc/api/events/message/priv/PrivateMessageSubType.java new file mode 100644 index 0000000..ecf93bb --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/message/priv/PrivateMessageSubType.java @@ -0,0 +1,25 @@ +package cn.wzpmc.api.events.message.priv; + +/** + * 私聊消息子类型 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午6:04 + */ +public enum PrivateMessageSubType { + /** + * 正常消息 + * @since 2024/8/1 下午6:07 v0.0.2-dev + */ + NORMAL, + /** + * 匿名消息 + * @since 2024/8/1 下午6:06 v0.0.2-dev + */ + ANONYMOUS, + /** + * 系统提示 + * @since 2024/8/1 下午6:06 v0.0.2-dev + */ + NOTICE +} diff --git a/src/main/java/cn/wzpmc/api/events/meta/HeartBeatEvent.java b/src/main/java/cn/wzpmc/api/events/meta/HeartBeatEvent.java new file mode 100644 index 0000000..6ff805d --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/meta/HeartBeatEvent.java @@ -0,0 +1,25 @@ +package cn.wzpmc.api.events.meta; + +import cn.wzpmc.api.entities.BotStatus; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午10:30 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class HeartBeatEvent extends MetaEvent{ + /** + * 状态信息 + * @since 2024/8/1 下午10:32 v0.0.2-dev + */ + private BotStatus status; + /** + * 到下次心跳的间隔(ms) + * @since 2024/8/1 下午10:32 v0.0.2-dev + */ + private Long interval; +} diff --git a/src/main/java/cn/wzpmc/api/events/meta/MetaEvent.java b/src/main/java/cn/wzpmc/api/events/meta/MetaEvent.java new file mode 100644 index 0000000..8039a4b --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/meta/MetaEvent.java @@ -0,0 +1,23 @@ +package cn.wzpmc.api.events.meta; + +import cn.wzpmc.api.events.Event; +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 元事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午10:26 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class MetaEvent extends Event { + /** + * 元事件子类型 + * @since 2024/8/1 下午11:12 v0.0.2-dev + */ + @JSONField(name = "meta_event_type") + private MetaEventType metaEventType; +} diff --git a/src/main/java/cn/wzpmc/api/events/meta/MetaEventType.java b/src/main/java/cn/wzpmc/api/events/meta/MetaEventType.java new file mode 100644 index 0000000..247f054 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/meta/MetaEventType.java @@ -0,0 +1,17 @@ +package cn.wzpmc.api.events.meta; + +import cn.wzpmc.api.events.meta.lifecycle.LifecycleEvent; + +/** + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午10:26 + */ +public enum MetaEventType { + LIFECYCLE(LifecycleEvent.class), + HEARTBEAT(HeartBeatEvent.class); + public final Class clazz; + MetaEventType(Class clazz){ + this.clazz = clazz; + } +} diff --git a/src/main/java/cn/wzpmc/api/events/meta/lifecycle/LifecycleEvent.java b/src/main/java/cn/wzpmc/api/events/meta/lifecycle/LifecycleEvent.java new file mode 100644 index 0000000..f8c74d4 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/meta/lifecycle/LifecycleEvent.java @@ -0,0 +1,23 @@ +package cn.wzpmc.api.events.meta.lifecycle; + +import cn.wzpmc.api.events.meta.MetaEvent; +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 生命周期事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午10:28 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class LifecycleEvent extends MetaEvent { + /** + * 生命周期事件子类型 + * @since 2024/8/1 下午10:29 v0.0.2-dev + */ + @JSONField(name = "sub_type") + private LifecycleEventSubType subType; +} diff --git a/src/main/java/cn/wzpmc/api/events/meta/lifecycle/LifecycleEventSubType.java b/src/main/java/cn/wzpmc/api/events/meta/lifecycle/LifecycleEventSubType.java new file mode 100644 index 0000000..a2c6dc2 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/meta/lifecycle/LifecycleEventSubType.java @@ -0,0 +1,25 @@ +package cn.wzpmc.api.events.meta.lifecycle; + +/** + * 生命周期事件子类型 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午10:28 + */ +public enum LifecycleEventSubType { + /** + * OneBot被启用 + * @since 2024/8/1 下午10:29 v0.0.2-dev + */ + ENABLE, + /** + * OneBot被禁用 + * @since 2024/8/1 下午10:29 v0.0.2-dev + */ + DISABLE, + /** + * WebSocket连接成功 + * @since 2024/8/1 下午10:29 v0.0.2-dev + */ + CONNECT +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/FriendAddEvent.java b/src/main/java/cn/wzpmc/api/events/notice/FriendAddEvent.java new file mode 100644 index 0000000..ebc43c7 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/FriendAddEvent.java @@ -0,0 +1,22 @@ +package cn.wzpmc.api.events.notice; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 好友添加事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:42 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class FriendAddEvent extends NoticeEvent { + /** + * 用户ID + * @since 2024/8/1 下午11:13 v0.0.2-dev + */ + @JSONField(name = "user_id") + private Long userId; +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/GroupBanEvent.java b/src/main/java/cn/wzpmc/api/events/notice/GroupBanEvent.java new file mode 100644 index 0000000..a12fff7 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/GroupBanEvent.java @@ -0,0 +1,39 @@ +package cn.wzpmc.api.events.notice; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 群成员禁言事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午10:19 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class GroupBanEvent extends NoticeEvent{ + /** + * 群号 + * @since 2024/8/1 下午10:21 v0.0.2-dev + */ + @JSONField(name = "group_id") + private Long groupId; + /** + * 操作者用户ID + * @since 2024/8/1 下午10:20 v0.0.2-dev + */ + @JSONField(name = "operator_id") + private Long operatorId; + /** + * 被禁言的用户ID + * @since 2024/8/1 下午10:20 v0.0.2-dev + */ + @JSONField(name = "user_id") + private Long userId; + /** + * 被禁言的时长(秒) + * @since 2024/8/1 下午10:20 v0.0.2-dev + */ + private Long duration; +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/NoticeEvent.java b/src/main/java/cn/wzpmc/api/events/notice/NoticeEvent.java new file mode 100644 index 0000000..07d0a20 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/NoticeEvent.java @@ -0,0 +1,23 @@ +package cn.wzpmc.api.events.notice; + +import cn.wzpmc.api.events.Event; +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 通知基事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:21 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class NoticeEvent extends Event { + /** + * 通知类型 + * @since 2024/8/1 下午11:12 v0.0.2-dev + */ + @JSONField(name = "notice_type") + private NoticeType noticeType; +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/NoticeType.java b/src/main/java/cn/wzpmc/api/events/notice/NoticeType.java new file mode 100644 index 0000000..fca32c9 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/NoticeType.java @@ -0,0 +1,68 @@ +package cn.wzpmc.api.events.notice; + +import cn.wzpmc.api.events.notice.admin.GroupAdminChangeEvent; +import cn.wzpmc.api.events.notice.file.GroupFileUploadedEvent; +import cn.wzpmc.api.events.notice.notify.NotifyEvent; +import cn.wzpmc.api.events.notice.recall.GroupMessageRecallEvent; +import cn.wzpmc.api.events.notice.recall.MessageRecallEvent; +import cn.wzpmc.api.events.notice.user.decrease.GroupUserDecreaseEvent; +import cn.wzpmc.api.events.notice.user.increase.GroupUserIncreaseEvent; + +/** + * 通知类型 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:12 + */ +public enum NoticeType { + /** + * 群文件上传事件 + * @since 2024/8/1 下午10:24 v0.0.2-dev + */ + GROUP_UPLOAD(GroupFileUploadedEvent.class), + /** + * 群管理变更事件 + * @since 2024/8/1 下午10:24 v0.0.2-dev + */ + GROUP_ADMIN(GroupAdminChangeEvent.class), + /** + * 用户退群事件 + * @since 2024/8/1 下午10:24 v0.0.2-dev + */ + GROUP_DECREASE(GroupUserDecreaseEvent.class), + /** + * 用户加群事件 + * @since 2024/8/1 下午10:23 v0.0.2-dev + */ + GROUP_INCREASE(GroupUserIncreaseEvent.class), + /** + * 群组禁言事件 + * @since 2024/8/1 下午10:23 v0.0.2-dev + */ + GROUP_BAN(GroupBanEvent.class), + /** + * 好友添加事件 + * @since 2024/8/1 下午10:23 v0.0.2-dev + */ + FRIEND_ADD(FriendAddEvent.class), + /** + * 群消息撤回事件 + * @since 2024/8/1 下午10:23 v0.0.2-dev + */ + GROUP_RECALL(GroupMessageRecallEvent.class), + /** + * 好友消息撤回事件 + * @since 2024/8/1 下午10:23 v0.0.2-dev + */ + FRIEND_RECALL(MessageRecallEvent.class), + /** + * 群提醒事件 + * @since 2024/8/1 下午10:22 v0.0.2-dev + * @see cn.wzpmc.api.events.notice.notify.NotifyEvent + */ + NOTIFY(NotifyEvent.class); + public final Class clazz; + NoticeType(Class clazz){ + this.clazz = clazz; + } +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/admin/GroupAdminChangeEvent.java b/src/main/java/cn/wzpmc/api/events/notice/admin/GroupAdminChangeEvent.java new file mode 100644 index 0000000..9a1ac5b --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/admin/GroupAdminChangeEvent.java @@ -0,0 +1,35 @@ +package cn.wzpmc.api.events.notice.admin; + +import cn.wzpmc.api.events.notice.NoticeEvent; +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 群管理员更改事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:26 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class GroupAdminChangeEvent extends NoticeEvent { + /** + * 事件子类型 + * @since 2024/8/1 下午9:28 v0.0.2-dev + */ + @JSONField(name = "sub_type") + private GroupAdminChangeSubType subType; + /** + * 群号 + * @since 2024/8/1 下午9:29 v0.0.2-dev + */ + @JSONField(name = "group_id") + private Long groupId; + /** + * 被操作者QQ号 + * @since 2024/8/1 下午9:29 v0.0.2-dev + */ + @JSONField(name = "user_id") + private Long userId; +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/admin/GroupAdminChangeSubType.java b/src/main/java/cn/wzpmc/api/events/notice/admin/GroupAdminChangeSubType.java new file mode 100644 index 0000000..ed5d596 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/admin/GroupAdminChangeSubType.java @@ -0,0 +1,20 @@ +package cn.wzpmc.api.events.notice.admin; + +/** + * 管理员更改子类型 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:27 + */ +public enum GroupAdminChangeSubType { + /** + * 设置管理员 + * @since 2024/8/1 下午9:27 v0.0.2-dev + */ + SET, + /** + * 取消管理员 + * @since 2024/8/1 下午9:28 v0.0.2-dev + */ + UNSET +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/file/GroupFile.java b/src/main/java/cn/wzpmc/api/events/notice/file/GroupFile.java new file mode 100644 index 0000000..99247f4 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/file/GroupFile.java @@ -0,0 +1,32 @@ +package cn.wzpmc.api.events.notice.file; + +import lombok.Data; + +/** + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:23 + */ +@Data +public class GroupFile { + /** + * 文件ID + * @since 2024/8/1 下午9:24 v0.0.2-dev + */ + private String id; + /** + * 文件名 + * @since 2024/8/1 下午9:24 v0.0.2-dev + */ + private String name; + /** + * 文件大小 + * @since 2024/8/1 下午9:24 v0.0.2-dev + */ + private Long size; + /** + * BUSID(具体见OneBot文档) + * @since 2024/8/1 下午9:24 v0.0.2-dev + */ + private Long busid; +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/file/GroupFileUploadedEvent.java b/src/main/java/cn/wzpmc/api/events/notice/file/GroupFileUploadedEvent.java new file mode 100644 index 0000000..1920597 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/file/GroupFileUploadedEvent.java @@ -0,0 +1,35 @@ +package cn.wzpmc.api.events.notice.file; + +import cn.wzpmc.api.events.notice.NoticeEvent; +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 群文件上传事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:21 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class GroupFileUploadedEvent extends NoticeEvent { + /** + * 群组ID + * @since 2024/8/1 下午9:25 v0.0.2-dev + */ + @JSONField(name = "group_id") + private Long groupId; + /** + * 用户ID + * @since 2024/8/1 下午9:25 v0.0.2-dev + */ + @JSONField(name = "user_id") + private Long userId; + /** + * 文件详细消息 + * @since 2024/8/1 下午9:25 v0.0.2-dev + */ + @JSONField(name = "group_file") + private GroupFile groupFile; +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/notify/LuckyKingNotifyEvent.java b/src/main/java/cn/wzpmc/api/events/notice/notify/LuckyKingNotifyEvent.java new file mode 100644 index 0000000..913051a --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/notify/LuckyKingNotifyEvent.java @@ -0,0 +1,22 @@ +package cn.wzpmc.api.events.notice.notify; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 红包幸运王事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午10:03 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class LuckyKingNotifyEvent extends NotifyEvent { + /** + * 运气王ID + * @since 2024/8/1 下午10:04 v0.0.2-dev + */ + @JSONField(name = "target_id") + private Long targetId; +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/notify/NotifyEvent.java b/src/main/java/cn/wzpmc/api/events/notice/notify/NotifyEvent.java new file mode 100644 index 0000000..ea9c1a2 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/notify/NotifyEvent.java @@ -0,0 +1,35 @@ +package cn.wzpmc.api.events.notice.notify; + +import cn.wzpmc.api.events.notice.NoticeEvent; +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 群提醒事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:59 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class NotifyEvent extends NoticeEvent { + /** + * 群号 + * @since 2024/8/1 下午10:01 v0.0.2-dev + */ + @JSONField(name = "group_id") + private Long groupId; + /** + * 相关用户ID + * @since 2024/8/1 下午10:00 v0.0.2-dev + */ + @JSONField(name = "user_id") + private Long userId; + /** + * 群提醒事件子类型 + * @since 2024/8/1 下午11:26 v0.0.2-dev + */ + @JSONField(name = "sub_type") + private NotifySubType subType; +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/notify/NotifySubType.java b/src/main/java/cn/wzpmc/api/events/notice/notify/NotifySubType.java new file mode 100644 index 0000000..bc3c622 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/notify/NotifySubType.java @@ -0,0 +1,31 @@ +package cn.wzpmc.api.events.notice.notify; + +import cn.wzpmc.api.events.notice.notify.honor.HonorNotifyEvent; + +/** + * 群提醒事件子类型 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:58 + */ +public enum NotifySubType { + /** + * 群内戳一戳事件 + * @since 2024/8/1 下午10:16 v0.0.2-dev + */ + POKE(PokeNotifyEvent.class), + /** + * 红包运气王事件 + * @since 2024/8/1 下午10:16 v0.0.2-dev + */ + LUCKY_KING(LuckyKingNotifyEvent.class), + /** + * 群内荣耀变更事件 + * @since 2024/8/1 下午10:16 v0.0.2-dev + */ + HONOR(HonorNotifyEvent.class); + public final Class clazz; + NotifySubType(Class clazz){ + this.clazz = clazz; + } +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/notify/PokeNotifyEvent.java b/src/main/java/cn/wzpmc/api/events/notice/notify/PokeNotifyEvent.java new file mode 100644 index 0000000..38369bf --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/notify/PokeNotifyEvent.java @@ -0,0 +1,22 @@ +package cn.wzpmc.api.events.notice.notify; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 群内戳一戳事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午10:02 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class PokeNotifyEvent extends NotifyEvent { + /** + * 被戳者ID + * @since 2024/8/1 下午10:02 v0.0.2-dev + */ + @JSONField(name = "target_id") + private Long targetId; +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/notify/honor/HonorNotifyEvent.java b/src/main/java/cn/wzpmc/api/events/notice/notify/honor/HonorNotifyEvent.java new file mode 100644 index 0000000..2a0192f --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/notify/honor/HonorNotifyEvent.java @@ -0,0 +1,24 @@ +package cn.wzpmc.api.events.notice.notify.honor; + +import cn.wzpmc.api.events.notice.notify.NotifyEvent; +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 群荣耀变更事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午10:04 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class HonorNotifyEvent extends NotifyEvent { + /** + * 荣耀类型 + * @since 2024/8/1 下午10:06 v0.0.2-dev + */ + @JSONField(name = "honor_type") + private HonorType honorType; + +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/notify/honor/HonorType.java b/src/main/java/cn/wzpmc/api/events/notice/notify/honor/HonorType.java new file mode 100644 index 0000000..c805dac --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/notify/honor/HonorType.java @@ -0,0 +1,25 @@ +package cn.wzpmc.api.events.notice.notify.honor; + +/** + * 荣耀类型 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午10:05 + */ +public enum HonorType { + /** + * 龙王 + * @since 2024/8/1 下午10:05 v0.0.2-dev + */ + TALKACTIVE, + /** + * 群聊之火 + * @since 2024/8/1 下午10:05 v0.0.2-dev + */ + PERFORMER, + /** + * 快乐源泉 + * @since 2024/8/1 下午10:05 v0.0.2-dev + */ + EMOTION +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/recall/GroupMessageRecallEvent.java b/src/main/java/cn/wzpmc/api/events/notice/recall/GroupMessageRecallEvent.java new file mode 100644 index 0000000..b7440c7 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/recall/GroupMessageRecallEvent.java @@ -0,0 +1,28 @@ +package cn.wzpmc.api.events.notice.recall; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 群消息撤回事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:43 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class GroupMessageRecallEvent extends MessageRecallEvent { + /** + * 群号 + * @since 2024/8/1 下午9:46 v0.0.2-dev + */ + @JSONField(name = "group_id") + private Long groupId; + /** + * 操作者ID + * @since 2024/8/1 下午9:45 v0.0.2-dev + */ + @JSONField(name = "operator_id") + private Long operatorId; +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/recall/MessageRecallEvent.java b/src/main/java/cn/wzpmc/api/events/notice/recall/MessageRecallEvent.java new file mode 100644 index 0000000..bca59fc --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/recall/MessageRecallEvent.java @@ -0,0 +1,29 @@ +package cn.wzpmc.api.events.notice.recall; + +import cn.wzpmc.api.events.notice.NoticeEvent; +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 消息撤回事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:48 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class MessageRecallEvent extends NoticeEvent { + /** + * 被撤回的用户ID + * @since 2024/8/1 下午9:49 v0.0.2-dev + */ + @JSONField(name = "user_id") + private Long userId; + /** + * 被撤回的消息ID + * @since 2024/8/1 下午9:49 v0.0.2-dev + */ + @JSONField(name = "message_id") + private Long messageId; +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/user/GroupUserModifyEvent.java b/src/main/java/cn/wzpmc/api/events/notice/user/GroupUserModifyEvent.java new file mode 100644 index 0000000..ae93423 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/user/GroupUserModifyEvent.java @@ -0,0 +1,41 @@ +package cn.wzpmc.api.events.notice.user; + +import cn.wzpmc.api.events.notice.NoticeEvent; +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 群成员更改事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:30 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class GroupUserModifyEvent extends NoticeEvent { + /** + * 消息子类型 + * @since 2024/8/1 下午9:31 v0.0.2-dev + */ + @JSONField(name = "sub_type") + private S subType; + /*** + * 群ID + * @since 2024/8/1 下午9:31 v0.0.2-dev + */ + @JSONField(name = "group_id") + private Long groupId; + /** + * 操作者 + * @since 2024/8/1 下午9:32 v0.0.2-dev + */ + @JSONField(name = "operator_id") + private Long operatorId; + /** + * 加入/退出用户ID + * @since 2024/8/1 下午9:35 v0.0.2-dev + */ + @JSONField(name = "user_id") + private Long userId; +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/user/decrease/GroupUserDecreaseEvent.java b/src/main/java/cn/wzpmc/api/events/notice/user/decrease/GroupUserDecreaseEvent.java new file mode 100644 index 0000000..015ba0a --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/user/decrease/GroupUserDecreaseEvent.java @@ -0,0 +1,16 @@ +package cn.wzpmc.api.events.notice.user.decrease; + +import cn.wzpmc.api.events.notice.user.GroupUserModifyEvent; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 群成员减少事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:29 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class GroupUserDecreaseEvent extends GroupUserModifyEvent { +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/user/decrease/GroupUserDecreaseSubType.java b/src/main/java/cn/wzpmc/api/events/notice/user/decrease/GroupUserDecreaseSubType.java new file mode 100644 index 0000000..3c81adc --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/user/decrease/GroupUserDecreaseSubType.java @@ -0,0 +1,24 @@ +package cn.wzpmc.api.events.notice.user.decrease; + +/** + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:36 + */ +public enum GroupUserDecreaseSubType { + /** + * 主动退群 + * @since 2024/8/1 下午9:37 v0.0.2-dev + */ + LEAVE, + /** + * 成员被踢出 + * @since 2024/8/1 下午9:37 v0.0.2-dev + */ + KICK, + /** + * 机器人被踢 + * @since 2024/8/1 下午9:37 v0.0.2-dev + */ + KICK_ME +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/user/increase/GroupUserIncreaseEvent.java b/src/main/java/cn/wzpmc/api/events/notice/user/increase/GroupUserIncreaseEvent.java new file mode 100644 index 0000000..b2142e8 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/user/increase/GroupUserIncreaseEvent.java @@ -0,0 +1,16 @@ +package cn.wzpmc.api.events.notice.user.increase; + +import cn.wzpmc.api.events.notice.user.GroupUserModifyEvent; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 群成员增加事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:38 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class GroupUserIncreaseEvent extends GroupUserModifyEvent { +} diff --git a/src/main/java/cn/wzpmc/api/events/notice/user/increase/GroupUserIncreaseSubType.java b/src/main/java/cn/wzpmc/api/events/notice/user/increase/GroupUserIncreaseSubType.java new file mode 100644 index 0000000..cb685b7 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/notice/user/increase/GroupUserIncreaseSubType.java @@ -0,0 +1,21 @@ +package cn.wzpmc.api.events.notice.user.increase; + +/** + * 用户增加事件子类型 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午9:39 + */ +public enum GroupUserIncreaseSubType { + + /** + * 群管理同意 + * @since 2024/8/1 下午9:40 v0.0.2-dev + */ + APPROVE, + /** + * 被群管理邀请加群 + * @since 2024/8/1 下午9:40 v0.0.2-dev + */ + INVITE +} diff --git a/src/main/java/cn/wzpmc/api/events/request/FriendAddRequestEvent.java b/src/main/java/cn/wzpmc/api/events/request/FriendAddRequestEvent.java new file mode 100644 index 0000000..6854851 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/request/FriendAddRequestEvent.java @@ -0,0 +1,15 @@ +package cn.wzpmc.api.events.request; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 加好友事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午10:13 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class FriendAddRequestEvent extends RequestEvent { +} diff --git a/src/main/java/cn/wzpmc/api/events/request/RequestEvent.java b/src/main/java/cn/wzpmc/api/events/request/RequestEvent.java new file mode 100644 index 0000000..3ab3052 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/request/RequestEvent.java @@ -0,0 +1,39 @@ +package cn.wzpmc.api.events.request; + +import cn.wzpmc.api.events.Event; +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 请求基事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午10:08 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class RequestEvent extends Event { + /** + * 请求类型 + * @since 2024/8/1 下午10:10 v0.0.2-dev + */ + @JSONField(name = "request_type") + private RequestEventType requestType; + /** + * 发送请求的用户ID + * @since 2024/8/1 下午10:10 v0.0.2-dev + */ + @JSONField(name = "user_id") + private Long userId; + /** + * 验证消息 + * @since 2024/8/1 下午10:10 v0.0.2-dev + */ + private String comment; + /** + * 请求Flag + * @since 2024/8/1 下午10:10 v0.0.2-dev + */ + private String flag; +} diff --git a/src/main/java/cn/wzpmc/api/events/request/RequestEventType.java b/src/main/java/cn/wzpmc/api/events/request/RequestEventType.java new file mode 100644 index 0000000..ccdd7bf --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/request/RequestEventType.java @@ -0,0 +1,26 @@ +package cn.wzpmc.api.events.request; + +import cn.wzpmc.api.events.request.group.GroupJoinRequestEvent; + +/** + * 请求事件子类型 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午10:09 + */ +public enum RequestEventType { + /** + * 加好友事件 + * @since 2024/8/1 下午10:15 v0.0.2-dev + */ + FRIEND(FriendAddRequestEvent.class), + /** + * 申请加群事件 + * @since 2024/8/1 下午10:15 v0.0.2-dev + */ + GROUP(GroupJoinRequestEvent.class); + public final Class clazz; + RequestEventType(Class clazz) { + this.clazz = clazz; + } +} diff --git a/src/main/java/cn/wzpmc/api/events/request/group/GroupJoinRequestEvent.java b/src/main/java/cn/wzpmc/api/events/request/group/GroupJoinRequestEvent.java new file mode 100644 index 0000000..c00125d --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/request/group/GroupJoinRequestEvent.java @@ -0,0 +1,29 @@ +package cn.wzpmc.api.events.request.group; + +import cn.wzpmc.api.events.request.RequestEvent; +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 加群请求事件 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午10:11 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class GroupJoinRequestEvent extends RequestEvent { + /** + * 加群子类型 + * @since 2024/8/1 下午11:17 v0.0.2-dev + */ + @JSONField(name = "sub_type") + private GroupJoinRequestEventSubType subType; + /** + * 群ID + * @since 2024/8/1 下午11:17 v0.0.2-dev + */ + @JSONField(name = "group_id") + private Long groupId; +} diff --git a/src/main/java/cn/wzpmc/api/events/request/group/GroupJoinRequestEventSubType.java b/src/main/java/cn/wzpmc/api/events/request/group/GroupJoinRequestEventSubType.java new file mode 100644 index 0000000..4245e66 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/events/request/group/GroupJoinRequestEventSubType.java @@ -0,0 +1,20 @@ +package cn.wzpmc.api.events.request.group; + +/** + * 请求加群事件请求子类型 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午10:12 + */ +public enum GroupJoinRequestEventSubType { + /** + * 加群请求 + * @since 2024/8/1 下午10:12 v0.0.2-dev + */ + ADD, + /** + * 邀请Bot加群 + * @since 2024/8/1 下午10:12 v0.0.2-dev + */ + INVITE +} diff --git a/src/main/java/cn/wzpmc/api/user/CommandSender.java b/src/main/java/cn/wzpmc/api/user/CommandSender.java index e0fb377..ba7887f 100644 --- a/src/main/java/cn/wzpmc/api/user/CommandSender.java +++ b/src/main/java/cn/wzpmc/api/user/CommandSender.java @@ -2,6 +2,9 @@ package cn.wzpmc.api.user; import cn.wzpmc.api.message.MessageComponent; import cn.wzpmc.api.user.permission.Permissions; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; /** * 消息发送者 @@ -9,37 +12,32 @@ import cn.wzpmc.api.user.permission.Permissions; * @version 0.0.1-dev * @since 2024/7/31 上午2:32 */ -public interface CommandSender { +@AllArgsConstructor +@NoArgsConstructor +@Data +public abstract class CommandSender { /** - * 获取用户ID - * @author wzp + * 用户ID * @since 2024/7/30 下午11:48 v0.0.1-dev - * @return 用户ID */ - Long getId(); - + protected Long id; /** - * 获取用户名 - * @author wzp + * 用户名 * @since 2024/7/30 下午11:48 v0.0.1-dev - * @return 用户名 */ - Long getName(); + protected String name; + /** + * 权限 + * @since 2024/8/1 下午8:24 v0.0.2-dev + */ + protected Permissions permissions; /** * 发送消息 * @author wzp * @since 2024/7/31 上午2:42 v0.0.1-dev * @param messageComponent 消息组件 */ - void sendMessage(MessageComponent messageComponent); - - /** - * 获取指令发送者的权限 - * @author wzp - * @since 2024/8/1 下午4:50 v0.0.2-dev - * @return 权限 - */ - Permissions getPermission(); + public abstract void sendMessage(MessageComponent messageComponent); /** * 指令发送者是否为管理员 @@ -47,7 +45,7 @@ public interface CommandSender { * @since 2024/8/1 下午4:50 v0.0.2-dev * @return 是否为管理员 */ - default boolean isAdmin(){ - return Permissions.ADMIN.equals(this.getPermission()); + public boolean isAdmin(){ + return Permissions.ADMIN.equals(this.permissions); } } diff --git a/src/main/java/cn/wzpmc/api/user/Friend.java b/src/main/java/cn/wzpmc/api/user/Friend.java new file mode 100644 index 0000000..172a05e --- /dev/null +++ b/src/main/java/cn/wzpmc/api/user/Friend.java @@ -0,0 +1,26 @@ +package cn.wzpmc.api.user; + +import cn.wzpmc.api.message.MessageComponent; +import cn.wzpmc.api.user.permission.Permissions; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 好友 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午8:41 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +public class Friend extends IUser{ + public Friend(Long id, String name, Permissions permissions, String nickname, Sex sex, Integer age) { + super(id, name, permissions, nickname, sex, age); + } + @Override + public void sendMessage(MessageComponent messageComponent) { + + } +} diff --git a/src/main/java/cn/wzpmc/api/user/IBot.java b/src/main/java/cn/wzpmc/api/user/IBot.java index 8406e3e..a94ab31 100644 --- a/src/main/java/cn/wzpmc/api/user/IBot.java +++ b/src/main/java/cn/wzpmc/api/user/IBot.java @@ -9,14 +9,14 @@ import cn.wzpmc.api.plugins.configuration.IConfiguration; * @version 0.0.1-dev * @since 2024/7/31 上午2:31 */ -public interface IBot extends CommandSender { +public abstract class IBot extends CommandSender { /** * 获取配置文件 * @author wzp * @since 2024/7/31 上午2:55 v0.0.1-dev * @return 配置文件 */ - IConfiguration getConfiguration(); + public abstract IConfiguration getConfiguration(); /** * 获取指令管理器 @@ -24,12 +24,12 @@ public interface IBot extends CommandSender { * @since 2024/7/31 上午3:42 v0.0.1-dev * @return 指令管理器 */ - ICommandManager getCommandManager(); + public abstract ICommandManager getCommandManager(); /** * 停止Bot运行 * @author wzp * @since 2024/8/1 下午4:57 v0.0.2-dev */ - void stop(); + public abstract void stop(); } diff --git a/src/main/java/cn/wzpmc/api/user/IUser.java b/src/main/java/cn/wzpmc/api/user/IUser.java index 9ab65fb..2587374 100644 --- a/src/main/java/cn/wzpmc/api/user/IUser.java +++ b/src/main/java/cn/wzpmc/api/user/IUser.java @@ -1,11 +1,50 @@ package cn.wzpmc.api.user; +import cn.wzpmc.api.user.permission.Permissions; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + /** * 用户接口 * @author wzp * @version 0.0.1-dev * @since 2024/7/30 下午11:42 */ -public interface IUser extends CommandSender { - +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +public abstract class IUser extends CommandSender { + /** + * 玩家昵称 + * @since 2024/8/1 下午8:34 v0.0.2-dev + */ + protected String nickname; + /** + * 用户性别 + * @since 2024/8/1 下午8:25 v0.0.2-dev + */ + protected Sex sex; + /** + * 用户年龄 + * @since 2024/8/1 下午8:25 v0.0.2-dev + */ + protected Integer age; + protected IUser(Long id, String name, Permissions permissions, String nickname, Sex sex, Integer age) { + super(id, name, permissions); + this.nickname = nickname; + this.sex = sex; + this.age = age; + } + @Override + public String getName(){ + return this.nickname; + } + @Override + public void setName(String name){ + this.nickname = name; + this.name = name; + } } diff --git a/src/main/java/cn/wzpmc/api/user/Sex.java b/src/main/java/cn/wzpmc/api/user/Sex.java new file mode 100644 index 0000000..8f65d73 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/user/Sex.java @@ -0,0 +1,25 @@ +package cn.wzpmc.api.user; + +/** + * 用户性别 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午8:17 + */ +public enum Sex { + /** + * 男性 + * @since 2024/8/1 下午8:17 v0.0.2-dev + */ + MALE, + /** + * 女性 + * @since 2024/8/1 下午8:18 v0.0.2-dev + */ + FEMALE, + /** + * 未知 + * @since 2024/8/1 下午8:18 v0.0.2-dev + */ + UNKNOWN +} diff --git a/src/main/java/cn/wzpmc/api/user/group/GroupUser.java b/src/main/java/cn/wzpmc/api/user/group/GroupUser.java new file mode 100644 index 0000000..438ecc0 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/user/group/GroupUser.java @@ -0,0 +1,50 @@ +package cn.wzpmc.api.user.group; + +import cn.wzpmc.api.message.MessageComponent; +import cn.wzpmc.api.user.IUser; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 群内用户 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午8:19 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +public class GroupUser extends IUser { + /** + * 群名片/备注 + * @since 2024/8/1 下午8:54 v0.0.2-dev + */ + private String card; + /** + * 地区 + * @since 2024/8/1 下午8:54 v0.0.2-dev + */ + private String area; + /** + * 成员等级 + * @since 2024/8/1 下午8:53 v0.0.2-dev + */ + private String level; + /** + * 群角色 + * @since 2024/8/1 下午8:53 v0.0.2-dev + */ + private GroupUserRole role; + /** + * 专属头衔 + * @since 2024/8/1 下午8:53 v0.0.2-dev + */ + private String title; + @Override + public void sendMessage(MessageComponent messageComponent) { + + } +} diff --git a/src/main/java/cn/wzpmc/api/user/group/GroupUserAnonymousInfo.java b/src/main/java/cn/wzpmc/api/user/group/GroupUserAnonymousInfo.java new file mode 100644 index 0000000..d363d06 --- /dev/null +++ b/src/main/java/cn/wzpmc/api/user/group/GroupUserAnonymousInfo.java @@ -0,0 +1,28 @@ +package cn.wzpmc.api.user.group; + +import lombok.Data; + +/** + * 匿名成员消息 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午8:57 + */ +@Data +public class GroupUserAnonymousInfo { + /** + * 匿名ID + * @since 2024/8/1 下午8:58 v0.0.2-dev + */ + private Long id; + /** + * 匿名名称 + * @since 2024/8/1 下午8:58 v0.0.2-dev + */ + private String name; + /** + * 匿名成员flag + * @since 2024/8/1 下午8:58 v0.0.2-dev + */ + private String flag; +} diff --git a/src/main/java/cn/wzpmc/api/user/group/GroupUserRole.java b/src/main/java/cn/wzpmc/api/user/group/GroupUserRole.java new file mode 100644 index 0000000..d111cce --- /dev/null +++ b/src/main/java/cn/wzpmc/api/user/group/GroupUserRole.java @@ -0,0 +1,25 @@ +package cn.wzpmc.api.user.group; + +/** + * 成员角色 + * @author wzp + * @version 0.0.2-dev + * @since 2024/8/1 下午8:52 + */ +public enum GroupUserRole { + /** + * 群主 + * @since 2024/8/1 下午8:52 v0.0.2-dev + */ + OWNER, + /** + * 群管理 + * @since 2024/8/1 下午8:52 v0.0.2-dev + */ + ADMIN, + /** + * 群成员 + * @since 2024/8/1 下午8:52 v0.0.2-dev + */ + MEMBER +} diff --git a/src/main/java/cn/wzpmc/entities/user/bot/MyBot.java b/src/main/java/cn/wzpmc/entities/user/bot/MyBot.java index fb6610b..93a8681 100644 --- a/src/main/java/cn/wzpmc/entities/user/bot/MyBot.java +++ b/src/main/java/cn/wzpmc/entities/user/bot/MyBot.java @@ -9,7 +9,6 @@ import cn.wzpmc.configuration.Configuration; import cn.wzpmc.console.MyBotConsole; import cn.wzpmc.plugins.CommandManager; import lombok.Getter; -import lombok.RequiredArgsConstructor; import lombok.Setter; import lombok.extern.log4j.Log4j2; @@ -20,17 +19,20 @@ import lombok.extern.log4j.Log4j2; * @version 0.0.1-dev */ @Log4j2 -@RequiredArgsConstructor @Getter -public class MyBot implements IBot { +public class MyBot extends IBot { private final Configuration configuration; @Setter private Long id; @Setter - private Long name; + private String name; private final CommandManager commandManager = new CommandManager(this); @Setter private MyBotConsole console = null; + public MyBot(Configuration configuration){ + this.configuration = configuration; + this.permissions = Permissions.ADMIN; + } @Override public void sendMessage(MessageComponent messageComponent) { @@ -42,11 +44,6 @@ public class MyBot implements IBot { } } - @Override - public Permissions getPermission() { - return Permissions.ADMIN; - } - @Override public void stop() { if (this.console != null) { diff --git a/src/main/java/cn/wzpmc/network/PacketHandler.java b/src/main/java/cn/wzpmc/network/PacketHandler.java index c2be5c0..ed5869a 100644 --- a/src/main/java/cn/wzpmc/network/PacketHandler.java +++ b/src/main/java/cn/wzpmc/network/PacketHandler.java @@ -1,5 +1,14 @@ package cn.wzpmc.network; +import cn.wzpmc.api.events.Event; +import cn.wzpmc.api.events.message.MessageEvent; +import cn.wzpmc.api.events.meta.MetaEvent; +import cn.wzpmc.api.events.notice.NoticeEvent; +import cn.wzpmc.api.events.notice.NoticeType; +import cn.wzpmc.api.events.notice.notify.NotifyEvent; +import cn.wzpmc.api.events.request.RequestEvent; +import cn.wzpmc.api.events.request.RequestEventType; +import com.alibaba.fastjson2.JSON; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; @@ -16,6 +25,38 @@ public class PacketHandler extends SimpleChannelInboundHandler eventClass = switch (event.getPostType()) { + case NOTICE -> { + NoticeEvent noticeEvent = JSON.parseObject(text, NoticeEvent.class); + NoticeType noticeType = noticeEvent.getNoticeType(); + if (NoticeType.NOTIFY.equals(noticeType)) { + NotifyEvent notifyEvent = JSON.parseObject(text, NotifyEvent.class); + yield notifyEvent.getSubType().clazz; + } + yield noticeType.clazz; + } + case MESSAGE -> { + MessageEvent messageEvent = JSON.parseObject(text, MessageEvent.class); + yield messageEvent.getMessageType().clazz; + } + case REQUEST -> { + RequestEvent requestEvent = JSON.parseObject(text, RequestEvent.class); + RequestEventType requestType = requestEvent.getRequestType(); + yield requestType.clazz; + } + case META_EVENT -> { + MetaEvent metaEvent = JSON.parseObject(text, MetaEvent.class); + yield metaEvent.getMetaEventType().clazz; + } + }; + Event event1 = JSON.parseObject(text, eventClass); + System.out.println(event1); } }