diff --git a/pom.xml b/pom.xml
index 8acf37c..53c6f24 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
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..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
@@ -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,20 +62,27 @@ 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));
}
+ /**
+ * 关闭机器人
+ */
public void close() {
+ if(bot == null) {
+ return;
+ }
log.warn("正在关闭机器人...");
bot.close(null);
+ bot = null;
log.warn("机器人已关闭.");
}
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/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;
}
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);
}
}