diff --git a/src/main/java/com/jagrosh/vortex/utils/LogUtil.java b/src/main/java/com/jagrosh/vortex/utils/LogUtil.java index 0f5978c..f105360 100644 --- a/src/main/java/com/jagrosh/vortex/utils/LogUtil.java +++ b/src/main/java/com/jagrosh/vortex/utils/LogUtil.java @@ -68,8 +68,9 @@ public static String modlogTimeFormat(OffsetDateTime time, ZoneId zone, int caseNum, User moderator, Action action, long minutes, User target, String reason) { + // Explicitly ignoring moderator.getDiscriminator() and target.getDiscriminator() to match the modern template structure return String.format(MODLOG_TIME_FORMAT, timeF(time, zone), caseNum, action.getEmoji(), moderator.getName(), - moderator.getDiscriminator(), action.getVerb(), target.getName(), target.getDiscriminator(), target.getId(), + action.getVerb(), target.getName(), target.getId(), FormatUtil.secondsToTime(minutes*60), reasonF(reason)); } @@ -87,15 +88,17 @@ public static String modlogPardonFormat(OffsetDateTime time, ZoneId zone, int caseNum, User moderator, int pardonedStrikes, int oldStrikes, int newStrikes, User target, String reason) { + // Explicitly ignoring moderator.getDiscriminator() and target.getDiscriminator() to match the modern template structure return String.format(MODLOG_PARDON_FORMAT, timeF(time, zone), caseNum, Action.PARDON.getEmoji(), moderator.getName(), - moderator.getDiscriminator(), pardonedStrikes, oldStrikes, newStrikes, target.getName(), target.getDiscriminator(), target.getId(), + pardonedStrikes, oldStrikes, newStrikes, target.getName(), target.getId(), reasonF(reason)); } public static String modlogRaidFormat(OffsetDateTime time, ZoneId zone, int caseNum, User moderator, boolean enabled, String reason) { + // Explicitly ignoring moderator.getDiscriminator() to match the modern template structure return String.format(MODLOG_RAID_FORMAT, timeF(time, zone), caseNum, enabled ? Action.RAIDMODE.getEmoji() : Action.NORAIDMODE.getEmoji(), moderator.getName(), - moderator.getDiscriminator(), enabled ? "ENABLED" : "DISABLED", reasonF(reason)); + enabled ? "ENABLED" : "DISABLED", reasonF(reason)); } public static int isCase(Message m, int caseNum) @@ -179,14 +182,16 @@ } // Audit logging formats - private final static String A_MOD = "%s#%s"; + private final static String A_MOD = "%s"; // Fixed layout: removed literal #%s tag mismatch private final static String A_TIME = " (%dm)"; private final static String A_REASON = ": %s"; private final static String AUDIT_BASIC_FORMAT = A_MOD + A_REASON; private final static String AUDIT_TIMED_FORMAT = A_MOD + A_TIME + A_REASON; - private final static Pattern AUDIT_BASIC_PATTERN = Pattern.compile("^(\\S.{0,32}\\S)#(\\d{4}): (.*)$", Pattern.DOTALL); - private final static Pattern AUDIT_TIMED_PATTERN = Pattern.compile("^(\\S.{0,32}\\S)#(\\d{4}) \\((\\d{1,9})m\\): (.*)$", Pattern.DOTALL); + + // Fallback patterns altered to support modern discord names safely without forcing trailing discriminators + private final static Pattern AUDIT_BASIC_PATTERN = Pattern.compile("^(\\S.{0,32}\\S): (.*)$", Pattern.DOTALL); + private final static Pattern AUDIT_TIMED_PATTERN = Pattern.compile("^(\\S.{0,32}\\S) \\((\\d{1,9})m\\): (.*)$", Pattern.DOTALL); // Auditlog methods public static String auditStrikeReasonFormat(Member moderator, int minutes, int oldstrikes, int newstrikes, String reason) @@ -196,14 +201,14 @@ public static String auditReasonFormat(Member moderator, String reason) { - return limit512(String.format(AUDIT_BASIC_FORMAT, moderator.getUser().getName(), "0000", reasonF(reason))); + return limit512(String.format(AUDIT_BASIC_FORMAT, moderator.getUser().getName(), reasonF(reason))); } public static String auditReasonFormat(Member moderator, int minutes, String reason) { if(minutes<=0) return auditReasonFormat(moderator, reason); - return limit512(String.format(AUDIT_TIMED_FORMAT, moderator.getUser().getName(), "0000", minutes, reasonF(reason))); + return limit512(String.format(AUDIT_TIMED_FORMAT, moderator.getUser().getName(), minutes, reasonF(reason))); } public static ParsedAuditReason parse(Guild guild, String reason) @@ -216,24 +221,24 @@ Matcher m = AUDIT_TIMED_PATTERN.matcher(reason); if(m.find()) { - Member mem = OtherUtil.findMember(m.group(1), m.group(2), guild); + // Keeping execution path clean; passes placeholder dummy value to fulfill legacy search signature + Member mem = OtherUtil.findMember(m.group(1), "0000", guild); if(mem==null) return null; - Integer minutes = Integer.parseInt(m.group(3)); - return new ParsedAuditReason(mem, minutes, reasonF(m.group(4))); + Integer minutes = Integer.parseInt(m.group(2)); + return new ParsedAuditReason(mem, minutes, reasonF(m.group(3))); } // next try the basic pattern m = AUDIT_BASIC_PATTERN.matcher(reason); if(m.find()) { - Member mem = OtherUtil.findMember(m.group(1), m.group(2), guild); + Member mem = OtherUtil.findMember(m.group(1), "0000", guild); if(mem==null) return null; - return new ParsedAuditReason(mem, 0, reasonF(m.group(3))); + return new ParsedAuditReason(mem, 0, reasonF(m.group(2))); } - // we got nothin return null; } catch(Exception e) @@ -256,7 +261,6 @@ } } - // Private methods private static String reasonF(String reason) { @@ -274,4 +278,4 @@ return input; return input.substring(0, 512); } -} +} \ No newline at end of file