设置该项可防止因机器人在禁言期间反馈请求导致被封号.
- * @param mute 如果被禁言, 传入true - */ - public static void setMuteState(long groupId, boolean mute) { - if(!muteStateMap.containsKey(groupId)) { - muteStateMap.put(groupId, new AtomicBoolean(mute)); - } else { - muteStateMap.get(groupId).set(mute); - } - log.warn("群组 {} 机器人禁言状态已变更: {}", groupId, mute ? "已禁言" : "已解除"); - } - } diff --git a/src/main/java/net/lamgc/cgj/bot/event/MessageEvent.java b/src/main/java/net/lamgc/cgj/bot/event/MessageEvent.java index f27cdac..0abb79b 100644 --- a/src/main/java/net/lamgc/cgj/bot/event/MessageEvent.java +++ b/src/main/java/net/lamgc/cgj/bot/event/MessageEvent.java @@ -57,7 +57,7 @@ public abstract class MessageEvent implements EventObject, MessageSender { @Override public String toString() { - return this.getClass().getSimpleName() + "@" + this.hashCode() + "{" + + return this.getClass().getSimpleName() + "@" + Integer.toHexString(this.hashCode()) + "{" + "fromGroup=" + getFromGroup() + ", fromQQ=" + getFromQQ() + ", message='" + getMessage() + '\'' + diff --git a/src/main/java/net/lamgc/cgj/bot/framework/coolq/CQPluginMain.java b/src/main/java/net/lamgc/cgj/bot/framework/coolq/CQPluginMain.java index d9122cd..28c43b1 100644 --- a/src/main/java/net/lamgc/cgj/bot/framework/coolq/CQPluginMain.java +++ b/src/main/java/net/lamgc/cgj/bot/framework/coolq/CQPluginMain.java @@ -17,12 +17,12 @@ import org.springframework.stereotype.Component; import java.util.concurrent.atomic.AtomicBoolean; @Component +@SuppressWarnings("unused") public class CQPluginMain extends CQPlugin implements EventHandler { private final static AtomicBoolean initialState = new AtomicBoolean(); public CQPluginMain() { - LoggerFactory.getLogger(CQPluginMain.class) .info("BotEventHandler.COMMAND_PREFIX = {}", BotEventHandler.COMMAND_PREFIX); } 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 8cb8bd1..a5f1833 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 @@ -8,6 +8,7 @@ import net.lamgc.cgj.bot.framework.FrameworkResources; import net.lamgc.cgj.bot.framework.mirai.message.MiraiMessageEvent; import net.lamgc.cgj.bot.framework.mirai.message.MiraiMessageSenderFactory; import net.lamgc.cgj.bot.message.MessageSenderBuilder; +import net.lamgc.cgj.bot.util.GroupMuteManager; import net.mamoe.mirai.Bot; import net.mamoe.mirai.BotFactoryJvm; import net.mamoe.mirai.event.events.BotMuteEvent; @@ -32,7 +33,9 @@ public class MiraiMain implements Framework { private Bot bot; - private final static Properties botProperties = new Properties(); + private final Properties botProperties = new Properties(); + + private final GroupMuteManager muteManager = new GroupMuteManager(); @Override public void init(FrameworkResources resources) { @@ -77,9 +80,9 @@ public class MiraiMain implements Framework { Events.subscribeAlways(FriendMessageEvent.class, this::executeMessageEvent); Events.subscribeAlways(TempMessageEvent.class, this::executeMessageEvent); Events.subscribeAlways(BotMuteEvent.class, - event -> BotEventHandler.setMuteState(event.getGroup().getId(), true)); + event -> muteManager.setMuteState(event.getGroup().getId(), true)); Events.subscribeAlways(BotUnmuteEvent.class, - event -> BotEventHandler.setMuteState(event.getGroup().getId(), false)); + event -> muteManager.setMuteState(event.getGroup().getId(), false)); bot.login(); MessageSenderBuilder.setCurrentMessageSenderFactory(new MiraiMessageSenderFactory(bot)); ApplicationBoot.initialBot(); @@ -100,9 +103,12 @@ public class MiraiMain implements Framework { log.debug("Mirai Message: {}", message); if(message instanceof GroupMessageEvent) { GroupMessageEvent GroupMessageEvent = (GroupMessageEvent) message; - if(BotEventHandler.isMute(GroupMessageEvent.getGroup().getId(), true) == null) { - BotEventHandler.setMuteState(GroupMessageEvent.getGroup().getId(), + Boolean muteState = muteManager.isMute(GroupMessageEvent.getGroup().getId(), true); + if(muteState == null) { + muteManager.setMuteState(GroupMessageEvent.getGroup().getId(), ((GroupMessageEvent) message).getGroup().getBotMuteRemaining() != 0); + } else if(muteState) { + return; } } BotEventHandler.executeMessageEvent(MiraiMessageEvent.covertEventObject(message)); diff --git a/src/main/java/net/lamgc/cgj/bot/util/GroupMuteManager.java b/src/main/java/net/lamgc/cgj/bot/util/GroupMuteManager.java new file mode 100644 index 0000000..6193839 --- /dev/null +++ b/src/main/java/net/lamgc/cgj/bot/util/GroupMuteManager.java @@ -0,0 +1,48 @@ +package net.lamgc.cgj.bot.util; + +import java.util.Hashtable; +import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * 群禁言管理器. + *该管理器用于存取群组禁言状态.
+ */ +public class GroupMuteManager { + + private final Map设置该项可防止因机器人在禁言期间反馈请求导致被封号.
+ * @param mute 如果被禁言, 传入true + */ + public void setMuteState(long groupId, boolean mute) { + if(groupId <= 0) { + return; + } + if(!muteStateMap.containsKey(groupId)) { + muteStateMap.put(groupId, new AtomicBoolean(mute)); + } else { + muteStateMap.get(groupId).set(mute); + } + } + +} diff --git a/src/main/java/net/lamgc/cgj/pixiv/PixivDownload.java b/src/main/java/net/lamgc/cgj/pixiv/PixivDownload.java index 7c0f6df..a113c87 100644 --- a/src/main/java/net/lamgc/cgj/pixiv/PixivDownload.java +++ b/src/main/java/net/lamgc/cgj/pixiv/PixivDownload.java @@ -402,7 +402,7 @@ public class PixivDownload { if(resultObject.get("error").getAsBoolean()) { String message = resultObject.get("message").getAsString(); log.warn("作品页面接口请求错误, 错误信息: {}", message); - throw new HttpRequestException(response); + throw new HttpRequestException(response.getStatusLine(), resultObject.toString()); } JsonArray linkArray = resultObject.getAsJsonArray("body"); diff --git a/src/main/java/net/lamgc/cgj/pixiv/PixivUgoiraBuilder.java b/src/main/java/net/lamgc/cgj/pixiv/PixivUgoiraBuilder.java index 5bc321e..73efdb7 100644 --- a/src/main/java/net/lamgc/cgj/pixiv/PixivUgoiraBuilder.java +++ b/src/main/java/net/lamgc/cgj/pixiv/PixivUgoiraBuilder.java @@ -1,5 +1,6 @@ package net.lamgc.cgj.pixiv; +import com.google.common.io.ByteStreams; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -12,7 +13,6 @@ import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.util.EntityUtils; -import org.apache.tomcat.util.http.fileupload.util.Streams; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -127,14 +127,13 @@ public final class PixivUgoiraBuilder { HashMap