Mirai闪照破解
-
Mirai实现闪照破解
直接上代码:
public class Event extends SimpleListenerHost { /** * 私聊模板 */ @EventHandler private ListeningStatus FlashImage(FriendMessageEvent event) { String msg = event.getMessage().contentToString(); if (msg.equals("[闪照]")) { //这里切记不要用 contentToString() 转码 String flashid = event.getMessage().toString(); //获取闪照的ImageID,明白意思就行,下面群聊的注释我就不写了 //Tool类代码我自己写的,待会下面贴源码 flashid = Tool.getSubst(flashid, "flash:", "]"); //用ImageID发送一次图片得到Image元素消息 Image image = Image.fromId(flashid); //用 MessageChainBuilder() 构建消息 MessageChain messages = new MessageChainBuilder().append("你发送了一个闪照\n").append(image).build(); //发送消息 event.getSender().sendMessage(messages); } //返回继续监听 return ListeningStatus.LISTENING; } /** * 群聊模板 */ @EventHandler private ListeningStatus FlashImage(GroupMessageEvent event) { String msg = event.getMessage().contentToString(); if (msg.equals("[闪照]")) { long qq = event.getSender().getId(); String flashid = event.getMessage().toString(); flashid = Tool.getSubst(flashid, "flash:", "]"); Image image = Image.fromId(flashid); MessageChain messages = new MessageChainBuilder().append(new At(qq)) .append("(").append(String.valueOf(qq)).append(") ") .append("发送了一个闪照\n").append(image).build(); event.getGroup().sendMessage(messages); } return ListeningStatus.LISTENING; } }
Tool.java
public class Tool { /** * 取右边文本 * @param str 原文本 * @param leftStr 左边文本 * @return 右边文本 */ public static String getRights(String str, String leftStr) { return str.substring(str.indexOf(leftStr) + leftStr.length()); } /** * 取左边文本 * @param str 原文本 * @param rightStr 左边文本 * @return 左边文本 */ public static String getLefts(String str, String rightStr) { return str.substring(0, str.indexOf(rightStr)); } /** * 取中间文本 * @param str 原文本 * @param leftStr 左边文本 * @param rightStr 右边文本 * @return 中间文本 */ public static String getSubst(String str, String leftStr, String rightStr) { String temp = getRights(str,leftStr); return getLefts(temp,rightStr); } }
效果图
-
在 event.getMessage() 里取 FlashImage 实例是比处理 MiraiCode 更好的做法
-
@EventHandler public void onFriendMessage(FriendMessageEvent event){ Optional<FlashImage> flashImage = event.getMessage().stream().filter(it -> it instanceof FlashImage).findFirst() if (flashImage.isPresent()) { Image image = flashImage.get().getImage(); event.getSender().sendMessage(new PlainText("你发送了一张闪照\n").plus(image)); } }
-
@MrXiaoM 谢谢,学习到了
-