diff --git a/build.gradle.kts b/build.gradle.kts index eba1c04..83a810c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,7 @@ @file:Suppress("SpellCheckingInspection") group = "com.mikuac" -version = "2.2.9" +version = "2.3.0" plugins { signing @@ -97,4 +97,4 @@ signing { val signingPassword = System.getenv("GPG_PASSPHRASE") useInMemoryPgpKeys(signingKey, signingPassword) sign(publishing.publications["maven"]) -} \ No newline at end of file +} diff --git a/src/main/java/com/mikuac/shiro/action/GoCQHTTPExtend.java b/src/main/java/com/mikuac/shiro/action/GoCQHTTPExtend.java index 0100efc..d36057f 100644 --- a/src/main/java/com/mikuac/shiro/action/GoCQHTTPExtend.java +++ b/src/main/java/com/mikuac/shiro/action/GoCQHTTPExtend.java @@ -364,4 +364,10 @@ public interface GoCQHTTPExtend { * @return result {@link ActionList} of {@link GroupMemberInfoResp} */ ActionList getGroupMemberList(long groupId, boolean noCache); + + /** + * 获取版本信息 + * @return result {@link ActionList} of {@link VersionInfoResp} + */ + public ActionData getVersionInfo(); } diff --git a/src/main/java/com/mikuac/shiro/common/utils/ShiroUtils.java b/src/main/java/com/mikuac/shiro/common/utils/ShiroUtils.java index 6b66ffd..b1987a3 100644 --- a/src/main/java/com/mikuac/shiro/common/utils/ShiroUtils.java +++ b/src/main/java/com/mikuac/shiro/common/utils/ShiroUtils.java @@ -1,6 +1,7 @@ package com.mikuac.shiro.common.utils; import com.alibaba.fastjson2.JSON; +import com.mikuac.shiro.core.Bot; import com.mikuac.shiro.dto.event.message.MessageEvent; import com.mikuac.shiro.enums.MsgTypeEnum; import com.mikuac.shiro.model.ArrayMsg; @@ -330,6 +331,35 @@ public static List> generateForwardMsg(String uin, String na return nodes; } + /** + * 兼容 Lagrange + * 生成自定义合并转发消息 + * + * @param contents 消息列表,每个元素视为一个消息节点 Object 可为 List 或 CQCode + * @return 消息结构 + */ + @SuppressWarnings("Duplicates") + public static List> generateForwardMsg(Bot bot, List contents) { + List> nodes = new ArrayList(); + contents.forEach((msg) -> { + Map node = new HashMap(); + node.put("type", "node"); + Map data = new HashMap(); + data.put("name", bot.getLoginInfo().getData().getNickname()); + String appName = bot.getVersionInfo().getData().getAppName(); + //兼容Lagrange + if (appName.equals("Lagrange.OneBot")){ + data.put("uin", String.valueOf(bot.getSelfId())); + }else { + data.put("uin", bot.getSelfId()); + } + data.put("content", msg); + node.put("data", data); + nodes.add(node); + }); + return nodes; + } + /** * 兼容 Shamrock * 生成引用消息和自定义消息混合合并转发 diff --git a/src/main/java/com/mikuac/shiro/core/Bot.java b/src/main/java/com/mikuac/shiro/core/Bot.java index fefbf76..4abe01e 100644 --- a/src/main/java/com/mikuac/shiro/core/Bot.java +++ b/src/main/java/com/mikuac/shiro/core/Bot.java @@ -756,6 +756,19 @@ public ActionList getGroupMemberList(long groupId, boolean }.getType()) : null; } + /** + * https://docs.go-cqhttp.org/api/#%E8%8E%B7%E5%8F%96%E7%89%88%E6%9C%AC%E4%BF%A1%E6%81%AF + * 获取版本信息 + * @return result {@link ActionData} of {@link VersionInfoResp} + */ + @Override + public ActionData getVersionInfo() { + + JSONObject result = actionHandler.action(session, ActionPathEnum.GET_VERSION_INFO, null); + return result != null ? result.to(new TypeReference>() { + }.getType()) : null; + } + /** * 获取群荣誉信息 * diff --git a/src/main/java/com/mikuac/shiro/dto/action/response/VersionInfoResp.java b/src/main/java/com/mikuac/shiro/dto/action/response/VersionInfoResp.java new file mode 100644 index 0000000..39a703b --- /dev/null +++ b/src/main/java/com/mikuac/shiro/dto/action/response/VersionInfoResp.java @@ -0,0 +1,20 @@ +package com.mikuac.shiro.dto.action.response; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.Data; + +@Data +public class VersionInfoResp { + + @JSONField(name = "app_name") + private String appName; + + @JSONField(name = "app_version") + private String appVersion; + + @JSONField(name = "protocol_version") + private String protocolVersion; + + @JSONField(name = "version") + private String version; +} diff --git a/src/main/java/com/mikuac/shiro/enums/ActionPathEnum.java b/src/main/java/com/mikuac/shiro/enums/ActionPathEnum.java index dd8b66c..edf4ca6 100644 --- a/src/main/java/com/mikuac/shiro/enums/ActionPathEnum.java +++ b/src/main/java/com/mikuac/shiro/enums/ActionPathEnum.java @@ -273,7 +273,11 @@ public enum ActionPathEnum implements ActionPath { /** * 获取收藏表情 */ - FETCH_CUSTOM_FACE("fetch_custom_face"); + FETCH_CUSTOM_FACE("fetch_custom_face"), + /** + * 获取版本信息 + */ + GET_VERSION_INFO("get_version_info"); /** * 请求路径