From a170ff040b2d84244fa1fbe32862f94a1e7ef65c Mon Sep 17 00:00:00 2001 From: LamGC Date: Mon, 11 May 2020 11:34:25 +0800 Subject: [PATCH 1/3] =?UTF-8?q?[Update]=20net.mamoe:mirai-core,=20net.mamo?= =?UTF-8?q?e:mirai-core-qqandroid=20=E6=9B=B4=E6=96=B0=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E9=A1=B9=E7=89=88=E6=9C=AC(0.39.4=20->=201.0-RC2);=20[Update]?= =?UTF-8?q?=20MiraiMain,=20MiraiMessageEvent=20=E9=80=82=E9=85=8Dmirai?= =?UTF-8?q?=E6=96=B0=E7=89=88=E6=9C=AC;=20[Change]=20MiraiMessageSenderFac?= =?UTF-8?q?tory=20=E5=A2=9E=E5=8A=A0=E5=8F=82=E6=95=B0=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E8=BF=87=E7=A8=8B;=20[Change]=20Mir?= =?UTF-8?q?aiMain=20=E6=98=BE=E6=80=A7=E6=8C=87=E5=AE=9AMirai=E6=89=80?= =?UTF-8?q?=E7=94=A8=E5=8D=8F=E8=AE=AE=E4=B8=BA'BotConfiguration.MiraiProt?= =?UTF-8?q?ocol.ANDROID=5FPAD';?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../cgj/bot/framework/mirai/MiraiMain.java | 24 +++++++++---------- .../mirai/message/MiraiMessageEvent.java | 18 +++++++------- .../message/MiraiMessageSenderFactory.java | 16 ++++++------- 4 files changed, 28 insertions(+), 32 deletions(-) diff --git a/pom.xml b/pom.xml index 8acf37c..c3afd24 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ UTF-8 UTF-8 UTF-8 - 0.39.4 + 1.0-RC2 1.1.1 1.3.71 1.3.2 diff --git a/src/main/java/net/lamgc/cgj/bot/framework/mirai/MiraiMain.java b/src/main/java/net/lamgc/cgj/bot/framework/mirai/MiraiMain.java index 97e14fe..d8df389 100644 --- a/src/main/java/net/lamgc/cgj/bot/framework/mirai/MiraiMain.java +++ b/src/main/java/net/lamgc/cgj/bot/framework/mirai/MiraiMain.java @@ -9,9 +9,7 @@ import net.mamoe.mirai.BotFactoryJvm; import net.mamoe.mirai.event.events.BotMuteEvent; import net.mamoe.mirai.event.events.BotUnmuteEvent; import net.mamoe.mirai.japt.Events; -import net.mamoe.mirai.message.ContactMessage; -import net.mamoe.mirai.message.FriendMessage; -import net.mamoe.mirai.message.GroupMessage; +import net.mamoe.mirai.message.*; import net.mamoe.mirai.utils.BotConfiguration; import org.apache.commons.net.util.Base64; import org.slf4j.Logger; @@ -45,9 +43,11 @@ public class MiraiMain implements Closeable { return; } - bot = BotFactoryJvm.newBot(Long.parseLong(botProperties.getProperty("bot.qq", "0")), Base64.decodeBase64(botProperties.getProperty("bot.password", "")), new BotConfiguration()); - Events.subscribeAlways(GroupMessage.class, this::executeMessageEvent); - Events.subscribeAlways(FriendMessage.class, this::executeMessageEvent); + BotConfiguration configuration = new BotConfiguration(); + configuration.setProtocol(BotConfiguration.MiraiProtocol.ANDROID_PAD); + bot = BotFactoryJvm.newBot(Long.parseLong(botProperties.getProperty("bot.qq", "0")), Base64.decodeBase64(botProperties.getProperty("bot.password", "")), configuration); + Events.subscribeAlways(GroupMessageEvent.class, this::executeMessageEvent); + Events.subscribeAlways(FriendMessageEvent.class, this::executeMessageEvent); Events.subscribeAlways(BotMuteEvent.class, event -> BotEventHandler.setMuteState(event.getGroup().getId(), true)); Events.subscribeAlways(BotUnmuteEvent.class, @@ -62,12 +62,12 @@ public class MiraiMain implements Closeable { * 处理消息事件 * @param message 消息事件对象 */ - private void executeMessageEvent(ContactMessage message) { - if(message instanceof GroupMessage) { - GroupMessage groupMessage = (GroupMessage) message; - if(BotEventHandler.isMute(groupMessage.getGroup().getId(), true) == null) { - BotEventHandler.setMuteState(groupMessage.getGroup().getId(), - ((GroupMessage) message).getGroup().getBotMuteRemaining() != 0); + private void executeMessageEvent(MessageEvent message) { + if(message instanceof GroupMessageEvent) { + GroupMessageEvent GroupMessageEvent = (GroupMessageEvent) message; + if(BotEventHandler.isMute(GroupMessageEvent.getGroup().getId(), true) == null) { + BotEventHandler.setMuteState(GroupMessageEvent.getGroup().getId(), + ((GroupMessageEvent) message).getGroup().getBotMuteRemaining() != 0); } } BotEventHandler.executeMessageEvent(new MiraiMessageEvent(message)); diff --git a/src/main/java/net/lamgc/cgj/bot/framework/mirai/message/MiraiMessageEvent.java b/src/main/java/net/lamgc/cgj/bot/framework/mirai/message/MiraiMessageEvent.java index 2177eb5..baa8344 100644 --- a/src/main/java/net/lamgc/cgj/bot/framework/mirai/message/MiraiMessageEvent.java +++ b/src/main/java/net/lamgc/cgj/bot/framework/mirai/message/MiraiMessageEvent.java @@ -1,29 +1,27 @@ package net.lamgc.cgj.bot.framework.mirai.message; -import net.lamgc.cgj.bot.event.MessageEvent; import net.lamgc.cgj.bot.message.MessageSender; import net.lamgc.cgj.bot.message.MessageSource; -import net.mamoe.mirai.message.ContactMessage; -import net.mamoe.mirai.message.GroupMessage; +import net.mamoe.mirai.message.GroupMessageEvent; +import net.mamoe.mirai.message.MessageEvent; import net.mamoe.mirai.message.data.MessageUtils; import java.util.Objects; -public class MiraiMessageEvent extends MessageEvent { +public class MiraiMessageEvent extends net.lamgc.cgj.bot.event.MessageEvent { - private final ContactMessage messageObject; + private final MessageEvent messageObject; private final MessageSender messageSender; - public MiraiMessageEvent(ContactMessage message) { - super(message instanceof GroupMessage ? ((GroupMessage) message).getGroup().getId() : 0, + public MiraiMessageEvent(MessageEvent message) { + super(message instanceof GroupMessageEvent ? ((GroupMessageEvent) message).getGroup().getId() : 0, message.getSender().getId(), getMessageBodyWithoutSource(message.getMessage().toString())); this.messageObject = Objects.requireNonNull(message); - if(message instanceof GroupMessage) { - messageSender = new MiraiMessageSender(((GroupMessage) message).getGroup(), MessageSource.Group); + if(message instanceof GroupMessageEvent) { + messageSender = new MiraiMessageSender(((GroupMessageEvent) message).getGroup(), MessageSource.Group); } else { messageSender = new MiraiMessageSender(message.getSender(), MessageSource.Private); } - } /** diff --git a/src/main/java/net/lamgc/cgj/bot/framework/mirai/message/MiraiMessageSenderFactory.java b/src/main/java/net/lamgc/cgj/bot/framework/mirai/message/MiraiMessageSenderFactory.java index f40616d..9dd8d0f 100644 --- a/src/main/java/net/lamgc/cgj/bot/framework/mirai/message/MiraiMessageSenderFactory.java +++ b/src/main/java/net/lamgc/cgj/bot/framework/mirai/message/MiraiMessageSenderFactory.java @@ -5,6 +5,8 @@ import net.lamgc.cgj.bot.message.MessageSenderFactory; import net.lamgc.cgj.bot.message.MessageSource; import net.mamoe.mirai.Bot; +import java.util.Objects; + public class MiraiMessageSenderFactory implements MessageSenderFactory { private final Bot bot; @@ -14,15 +16,11 @@ public class MiraiMessageSenderFactory implements MessageSenderFactory { } @Override - public MessageSender createMessageSender(MessageSource source, long id) throws Exception { - switch(source) { - case Group: - case Discuss: - return new MiraiMessageSender(bot.getGroup(id), source); - case Private: - return new MiraiMessageSender(bot.getFriend(id), source); - default: - throw new NoSuchFieldException(source.toString()); + public MessageSender createMessageSender(MessageSource source, long id) { + Objects.requireNonNull(source); + if(id <= 0) { + throw new IllegalArgumentException("id cannot be 0 or negative: " + id); } + return new MiraiMessageSender(bot, source, id); } } From 7943357d963e6aa3927a6462d18a02d45e02f586 Mon Sep 17 00:00:00 2001 From: LamGC Date: Mon, 11 May 2020 12:16:35 +0800 Subject: [PATCH 2/3] =?UTF-8?q?[Fix]=20MiraiMain=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=9C=AA=E7=99=BB=E5=BD=95=E6=97=B6=E5=BC=82=E5=B8=B8=E9=80=80?= =?UTF-8?q?=E5=87=BA,=20=E6=8A=9B=E5=87=BANPE=E7=9A=84=E9=97=AE=E9=A2=98;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/net/lamgc/cgj/bot/framework/mirai/MiraiMain.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/net/lamgc/cgj/bot/framework/mirai/MiraiMain.java b/src/main/java/net/lamgc/cgj/bot/framework/mirai/MiraiMain.java index d8df389..b16a694 100644 --- a/src/main/java/net/lamgc/cgj/bot/framework/mirai/MiraiMain.java +++ b/src/main/java/net/lamgc/cgj/bot/framework/mirai/MiraiMain.java @@ -73,9 +73,16 @@ public class MiraiMain implements Closeable { BotEventHandler.executeMessageEvent(new MiraiMessageEvent(message)); } + /** + * 关闭机器人 + */ public void close() { + if(bot == null) { + return; + } log.warn("正在关闭机器人..."); bot.close(null); + bot = null; log.warn("机器人已关闭."); } From 65392fc2fed8678e3006783e7b6953ab4a2b3e09 Mon Sep 17 00:00:00 2001 From: LamGC Date: Tue, 12 May 2020 15:14:28 +0800 Subject: [PATCH 3/3] =?UTF-8?q?[Fix]=20net.mamoe:mirai-core,=20net.mamoe:m?= =?UTF-8?q?irai-core-qqandroid=20=E6=9B=B4=E6=96=B0Mirai-Core=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7=E4=BB=A5=E4=BF=AE=E5=A4=8DVerifyError?= =?UTF-8?q?=E9=97=AE=E9=A2=98(1.0-RC2=20->=201.0-RC2-1);=20[Fix]=20MiraiMe?= =?UTF-8?q?ssageSender=20=E8=B0=83=E6=95=B4=E6=97=A5=E5=BF=97=E8=BE=93?= =?UTF-8?q?=E5=87=BA,=20=E4=BB=A5=E4=BF=AE=E5=A4=8D=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=A4=84=E7=90=86=E5=90=8E=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F=E6=B7=B7=E4=B9=B1=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../cgj/bot/framework/mirai/message/MiraiMessageSender.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index c3afd24..53c6f24 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ UTF-8 UTF-8 UTF-8 - 1.0-RC2 + 1.0-RC2-1 1.1.1 1.3.71 1.3.2 diff --git a/src/main/java/net/lamgc/cgj/bot/framework/mirai/message/MiraiMessageSender.java b/src/main/java/net/lamgc/cgj/bot/framework/mirai/message/MiraiMessageSender.java index 149f306..fe502bb 100644 --- a/src/main/java/net/lamgc/cgj/bot/framework/mirai/message/MiraiMessageSender.java +++ b/src/main/java/net/lamgc/cgj/bot/framework/mirai/message/MiraiMessageSender.java @@ -60,7 +60,7 @@ public class MiraiMessageSender implements MessageSender { public int sendMessage(final String message) { log.debug("处理前的消息内容:\n{}", message); Message msgBody = processMessage(Objects.requireNonNull(message)); - log.debug("处理后的消息内容(可能出现乱序的情况, 但实际上顺序是没问题的):\n{}", msgBody); + log.debug("处理后的消息内容(可能出现乱序的情况, 但实际上顺序是没问题的):\n{}", msgBody.contentToString()); member.sendMessage(msgBody); return 0; }