From 16522155e1566a542e050d6a09faedf9ad860806 Mon Sep 17 00:00:00 2001 From: LamGC Date: Fri, 24 Apr 2020 23:52:05 +0800 Subject: [PATCH] =?UTF-8?q?[Add]=20=E9=80=9A=E8=BF=87=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E4=BF=A1=E6=81=AF=E6=9D=A5=E4=B8=BA=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E6=96=B9=E6=B3=95=E6=8F=90=E4=BE=9B=E6=9D=A5=E6=BA=90?= =?UTF-8?q?=E7=BE=A4=E5=92=8C=E6=9D=A5=E6=BA=90QQ;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lamgc/cgj/bot/BotAdminCommandProcess.java | 45 +++++++++++-------- .../net/lamgc/cgj/bot/BotCommandProcess.java | 4 +- .../lamgc/cgj/bot/event/BotEventHandler.java | 13 +++--- 3 files changed, 37 insertions(+), 25 deletions(-) diff --git a/src/main/java/net/lamgc/cgj/bot/BotAdminCommandProcess.java b/src/main/java/net/lamgc/cgj/bot/BotAdminCommandProcess.java index 568b44f..331f513 100644 --- a/src/main/java/net/lamgc/cgj/bot/BotAdminCommandProcess.java +++ b/src/main/java/net/lamgc/cgj/bot/BotAdminCommandProcess.java @@ -105,28 +105,31 @@ public class BotAdminCommandProcess { } @Command - public static String addPushGroup(@Argument(name = "group") long groupId, - @Argument(name = "minTime", force = false, defaultValue = "21600000") long minTime, - @Argument(name = "floatTime", force = false, defaultValue = "10800000") int floatTime, - @Argument(name = "rankingStart", force = false, defaultValue = "1") int rankingStart, - @Argument(name = "rankingStop", force = false, defaultValue = "150") int rankingStop, - @Argument(name = "original", force = false, defaultValue = "false") boolean original + public static String addPushGroup( + @Argument(name = "$fromGroup") long fromGroup, + @Argument(name = "group", force = false, defaultValue = "0") long groupId, + @Argument(name = "minTime", force = false, defaultValue = "21600000") long minTime, + @Argument(name = "floatTime", force = false, defaultValue = "10800000") int floatTime, + @Argument(name = "rankingStart", force = false, defaultValue = "1") int rankingStart, + @Argument(name = "rankingStop", force = false, defaultValue = "150") int rankingStop, + @Argument(name = "original", force = false, defaultValue = "false") boolean original ) { + long group = groupId <= 0 ? fromGroup : groupId; JsonObject setting = new JsonObject(); setting.addProperty("time.min", minTime); setting.addProperty("time.float", floatTime); setting.addProperty("ranking.start", rankingStart); setting.addProperty("ranking.end", rankingStop); setting.addProperty("pageQuality.original", original); - if(pushInfoMap.containsKey(groupId)) { - log.info("群 {} 已存在Timer, 删除Timer...", groupId); - removePushGroup(groupId); + if(pushInfoMap.containsKey(group)) { + log.info("群 {} 已存在Timer, 删除Timer...", group); + removePushGroup(fromGroup, groupId); } log.info("正在增加Timer...(Setting: {})", setting); - pushInfoMap.put(groupId, setting); - addPushTimer(groupId, setting); - return "已在 " + groupId + " 开启定时推送功能。"; + pushInfoMap.put(group, setting); + addPushTimer(group, setting); + return "已在 " + group + " 开启定时推送功能。"; } /** @@ -206,10 +209,11 @@ public class BotAdminCommandProcess { * @throws NoSuchElementException 当这个群号没有定时器的时候抛出异常 */ @Command - public static String removePushGroup(@Argument(name = "group") long id) { - RandomIntervalSendTimer.getTimerById(id).destroy(); - pushInfoMap.remove(id); - return "已关闭群 " + id + " 的美图推送功能。"; + public static String removePushGroup(@Argument(name = "$fromGroup") long fromGroup, @Argument(name = "group", force = false) long id) { + long group = id <= 0 ? fromGroup : id; + RandomIntervalSendTimer.getTimerById(group).destroy(); + pushInfoMap.remove(group); + return "已关闭群 " + group + " 的美图推送功能。"; } /** @@ -229,14 +233,17 @@ public class BotAdminCommandProcess { Set keys = BotCommandProcess.reportStore.keys(); StringBuilder msgBuilder = new StringBuilder(); msgBuilder.append("当前被报告的作品列表:\n"); + int count = 1; for(String key : keys) { String illustIdStr = key.substring(key.indexOf(".") + 1); JsonObject report = BotCommandProcess.reportStore.getCache(illustIdStr).getAsJsonObject(); log.debug("{} - Report: {}", illustIdStr, report); String reason = report.get("reason").isJsonNull() ? "" : report.get("reason").getAsString(); - msgBuilder.append(illustIdStr) - .append("(").append(dateFormat.format(new Date(report.get("reportTime").getAsLong()))).append("):") - .append(reason).append("\n"); + msgBuilder.append(count).append(". 作品Id: ").append(illustIdStr) + .append("(").append(dateFormat.format(new Date(report.get("reportTime").getAsLong()))).append("):\n") + .append("报告者QQ:").append(report.get("fromQQ").getAsLong()).append("\n") + .append("报告所在群:").append(report.get("fromGroup").getAsLong()).append("\n") + .append("报告原因:\n").append(reason).append("\n"); } return msgBuilder.toString(); } diff --git a/src/main/java/net/lamgc/cgj/bot/BotCommandProcess.java b/src/main/java/net/lamgc/cgj/bot/BotCommandProcess.java index 60fd16e..3c0a26b 100644 --- a/src/main/java/net/lamgc/cgj/bot/BotCommandProcess.java +++ b/src/main/java/net/lamgc/cgj/bot/BotCommandProcess.java @@ -604,11 +604,13 @@ public class BotCommandProcess { * @return 返回提示信息 */ @Command - public static String report(@Argument(name = "id") int illustId, @Argument(name = "msg", force = false) String reason) { + public static String report(@Argument(name = "$fromGroup") long fromGroup, @Argument(name = "$fromQQ") long fromQQ, @Argument(name = "id") int illustId, @Argument(name = "msg", force = false) String reason) { log.warn("收到作品反馈(IllustId: {}, 原因: {})", illustId, reason); JsonObject reportJson = new JsonObject(); reportJson.addProperty("illustId", illustId); reportJson.addProperty("reportTime", new Date().getTime()); + reportJson.addProperty("fromGroup", fromGroup); + reportJson.addProperty("fromQQ", fromQQ); reportJson.addProperty("reason", reason); reportStore.update(String.valueOf(illustId), reportJson, 0); return "色图姬收到了你的报告,将屏蔽该作品并对作品违规情况进行核实,感谢你的反馈!"; diff --git a/src/main/java/net/lamgc/cgj/bot/event/BotEventHandler.java b/src/main/java/net/lamgc/cgj/bot/event/BotEventHandler.java index 68f8ed9..cf9459b 100644 --- a/src/main/java/net/lamgc/cgj/bot/event/BotEventHandler.java +++ b/src/main/java/net/lamgc/cgj/bot/event/BotEventHandler.java @@ -23,10 +23,7 @@ import redis.clients.jedis.JedisPool; import java.lang.reflect.Method; import java.net.URI; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.Objects; +import java.util.*; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -141,7 +138,7 @@ public class BotEventHandler implements EventHandler { Pattern pattern = Pattern.compile("/\\s*(\".+?\"|[^:\\s])+((\\s*:\\s*(\".+?\"|[^\\s])+)|)|(\".+?\"|[^\"\\s])+"); Matcher matcher = pattern.matcher(Strings.nullToEmpty(msg)); - ArrayList argsList = new ArrayList<>(); + List argsList = new ArrayList<>(); while (matcher.find()) { String arg = matcher.group(); int startIndex = 0; @@ -163,6 +160,12 @@ public class BotEventHandler implements EventHandler { String[] args = new String[argsList.size()]; argsList.toArray(args); log.debug("传入参数: {}", Arrays.toString(args)); + argsList.add("-$fromGroup"); + argsList.add(String.valueOf(event.getFromGroup())); + argsList.add("-$fromQQ"); + argsList.add(String.valueOf(event.getFromQQ())); + args = Arrays.copyOf(args, args.length + 4); + argsList.toArray(args); log.info("正在处理命令..."); long time = System.currentTimeMillis();