Skip to content

Commit 3af31e0

Browse files
committed
fix checkstyle errors
1 parent f16d278 commit 3af31e0

File tree

5 files changed

+101
-87
lines changed

5 files changed

+101
-87
lines changed

src/main/java/net/discordjug/javabot/data/config/PatternTypeAdapter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
import com.google.gson.stream.JsonToken;
99
import com.google.gson.stream.JsonWriter;
1010

11+
/**
12+
* A gson {@link TypeAdapter} that allows serializing and deserializing regex {@link Pattern}s.
13+
*/
1114
public class PatternTypeAdapter extends TypeAdapter<Pattern> {
1215

1316
@Override

src/main/java/net/discordjug/javabot/data/config/guild/MessageRule.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,13 @@ public class MessageRule {
3434
private Set<String> attachmentSHAs = new HashSet<>();
3535

3636
/**
37-
* The action to execute on the message
37+
* The action to execute on the message.
3838
*/
3939
private MessageAction action = MessageAction.LOG;
4040

41+
/**
42+
* Enum for actions that can be performed on messages based on rules.
43+
*/
4144
public enum MessageAction {
4245
/**
4346
* The message is logged to a channel.

src/main/java/net/discordjug/javabot/data/config/guild/ModerationConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public class ModerationConfig extends GuildConfigItem {
106106
private String banMessageText = "Looks like you've been banned from the Java Discord. If you want to appeal this decision please fill out our form at <https://airtable.com/shrp5V4H1U5TYOXyC>.";
107107

108108
/**
109-
* A list of rules that can result in a message being blocked or similar
109+
* A list of rules that can result in a message being blocked or similar.
110110
*/
111111
private List<MessageRule> messageRules = new ArrayList<>();
112112

src/main/java/net/discordjug/javabot/data/h2db/message_cache/MessageCache.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,16 +188,24 @@ private void requestMessageAttachments(CachedMessage message) {
188188
}
189189
}
190190

191-
public EmbedBuilder buildMessageCacheEmbed(MessageChannel channel, User author, CachedMessage before, String contentFieldName) {
192-
long epoch = IdCalculatorCommand.getTimestampFromId(before.getMessageId()) / 1000;
191+
/**
192+
* Creates an {@link EmbedBuilder} with information about a cached message.
193+
* @param channel The channel the message was sent in.
194+
* @param author The author of the message.
195+
* @param message The message to extract the information from as a {@link CachedMessage}.
196+
* @param contentFieldName the name of the field containing the message content in the embed.
197+
* @return an {@link EmbedBuilder} with information about the message.
198+
*/
199+
public EmbedBuilder buildMessageCacheEmbed(MessageChannel channel, User author, CachedMessage message, String contentFieldName) {
200+
long epoch = IdCalculatorCommand.getTimestampFromId(message.getMessageId()) / 1000;
193201
return new EmbedBuilder()
194202
.setAuthor(UserUtils.getUserTag(author), null, author.getEffectiveAvatarUrl())
195203
.addField("Author", author.getAsMention(), true)
196204
.addField("Channel", channel.getAsMention(), true)
197205
.addField("Created at", String.format("<t:%s:F>", epoch), true)
198-
.setFooter("ID: " + before.getMessageId())
206+
.setFooter("ID: " + message.getMessageId())
199207
.addField(contentFieldName,
200-
before.getMessageContent().substring(0, Math.min(before.getMessageContent().length(), MessageEmbed.VALUE_MAX_LENGTH)),
208+
message.getMessageContent().substring(0, Math.min(message.getMessageContent().length(), MessageEmbed.VALUE_MAX_LENGTH)),
201209
false);
202210
}
203211

src/main/java/net/discordjug/javabot/listener/filter/MessageRuleFilter.java

Lines changed: 81 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -39,96 +39,96 @@
3939
@RequiredArgsConstructor
4040
public class MessageRuleFilter implements MessageFilter {
4141

42-
private final BotConfig botConfig;
43-
private final MessageCache messageCache;
42+
private final BotConfig botConfig;
43+
private final MessageCache messageCache;
4444

45-
@Override
46-
public MessageModificationStatus processMessage(MessageContent content) {
45+
@Override
46+
public MessageModificationStatus processMessage(MessageContent content) {
4747

48-
ModerationConfig moderationConfig = botConfig.get(content.event().getGuild()).getModerationConfig();
49-
List<MessageRule> messageRules = moderationConfig.getMessageRules();
48+
ModerationConfig moderationConfig = botConfig.get(content.event().getGuild()).getModerationConfig();
49+
List<MessageRule> messageRules = moderationConfig.getMessageRules();
5050

51-
MessageRule ruleToExecute = null;
52-
for (MessageRule rule : messageRules) {
53-
if (matches(content, rule)) {
54-
if (ruleToExecute == null || rule.getAction() == MessageAction.BLOCK) {
55-
ruleToExecute = rule;
56-
}
57-
}
58-
}
59-
MessageModificationStatus status = MessageModificationStatus.NOT_MODIFIED;
60-
if (ruleToExecute != null) {
61-
if (ruleToExecute.getAction() == MessageAction.BLOCK && !Checks.hasStaffRole(botConfig, content.event().getMember())) {
62-
content.event().getMessage().delete()
63-
.flatMap(_ -> content.event().getChannel().sendMessage(content.event().getAuthor().getAsMention() + " Your message has been deleted for moderative reasons. If you believe this happened by mistake, please contact the server staff."))
64-
.delay(Duration.ofSeconds(60))
65-
.flatMap(Message::delete)
66-
.queue();
67-
status = MessageModificationStatus.STOP_PROCESSING;
68-
}
69-
log(content, ruleToExecute, moderationConfig);
70-
}
51+
MessageRule ruleToExecute = null;
52+
for (MessageRule rule : messageRules) {
53+
if (matches(content, rule)) {
54+
if (ruleToExecute == null || rule.getAction() == MessageAction.BLOCK) {
55+
ruleToExecute = rule;
56+
}
57+
}
58+
}
59+
MessageModificationStatus status = MessageModificationStatus.NOT_MODIFIED;
60+
if (ruleToExecute != null) {
61+
if (ruleToExecute.getAction() == MessageAction.BLOCK && !Checks.hasStaffRole(botConfig, content.event().getMember())) {
62+
content.event().getMessage().delete()
63+
.flatMap(_ -> content.event().getChannel().sendMessage(content.event().getAuthor().getAsMention() + " Your message has been deleted for moderative reasons. If you believe this happened by mistake, please contact the server staff."))
64+
.delay(Duration.ofSeconds(60))
65+
.flatMap(Message::delete)
66+
.queue();
67+
status = MessageModificationStatus.STOP_PROCESSING;
68+
}
69+
log(content, ruleToExecute, moderationConfig);
70+
}
7171

72-
return status;
73-
}
72+
return status;
73+
}
7474

75-
private void log(MessageContent content, MessageRule ruleToExecute, ModerationConfig moderationConfig) {
76-
Gson gson = new GsonBuilder()
75+
private void log(MessageContent content, MessageRule ruleToExecute, ModerationConfig moderationConfig) {
76+
Gson gson = new GsonBuilder()
7777
.serializeNulls()
7878
.setPrettyPrinting()
7979
.registerTypeAdapter(Pattern.class, new PatternTypeAdapter())
8080
.create();
81-
EmbedBuilder embed = messageCache.buildMessageCacheEmbed(
82-
content.event().getMessage().getChannel(),
83-
content.event().getMessage().getAuthor(),
84-
CachedMessage.of(content.event().getMessage()), "Message content")
85-
.setTitle("Message rule triggered")
86-
.addField("Rule description", "```\n" + gson.toJson(ruleToExecute) + "\n```", false);
87-
if (!content.attachments().isEmpty()) {
88-
embed.addField("Attachment hashes", computeAttachmentDescription(content.attachments()), false);
89-
}
90-
content.event().getChannel().sendMessageEmbeds(embed.build()).queue();
91-
}
81+
EmbedBuilder embed = messageCache.buildMessageCacheEmbed(
82+
content.event().getMessage().getChannel(),
83+
content.event().getMessage().getAuthor(),
84+
CachedMessage.of(content.event().getMessage()), "Message content")
85+
.setTitle("Message rule triggered")
86+
.addField("Rule description", "```\n" + gson.toJson(ruleToExecute) + "\n```", false);
87+
if (!content.attachments().isEmpty()) {
88+
embed.addField("Attachment hashes", computeAttachmentDescription(content.attachments()), false);
89+
}
90+
content.event().getChannel().sendMessageEmbeds(embed.build()).queue();
91+
}
9292

93-
private boolean matches(MessageContent content, MessageRule rule) {
94-
if (rule.getMessageRegex() != null && !rule.getMessageRegex().matcher(content.messageText()).matches()) {
95-
return false;
96-
}
97-
if (content.attachments().size() > rule.getMaxAttachments()) {
98-
return false;
99-
}
100-
if (content.attachments().size() < rule.getMinAttachments()) {
101-
return false;
102-
}
103-
boolean matchesSHA = rule.getAttachmentSHAs().isEmpty();
104-
for (Attachment attachment : content.attachments()) {
105-
if (rule.getAttachmentNameRegex() != null && !rule.getAttachmentNameRegex().matcher(attachment.getFileName()).matches()) {
106-
return false;
107-
}
108-
if (!matchesSHA) {
109-
if (rule.getAttachmentSHAs().contains(computeSHA(attachment))) {
110-
matchesSHA = true;
111-
}
112-
}
113-
}
114-
return matchesSHA;
115-
}
93+
private boolean matches(MessageContent content, MessageRule rule) {
94+
if (rule.getMessageRegex() != null && !rule.getMessageRegex().matcher(content.messageText()).matches()) {
95+
return false;
96+
}
97+
if (content.attachments().size() > rule.getMaxAttachments()) {
98+
return false;
99+
}
100+
if (content.attachments().size() < rule.getMinAttachments()) {
101+
return false;
102+
}
103+
boolean matchesSHA = rule.getAttachmentSHAs().isEmpty();
104+
for (Attachment attachment : content.attachments()) {
105+
if (rule.getAttachmentNameRegex() != null && !rule.getAttachmentNameRegex().matcher(attachment.getFileName()).matches()) {
106+
return false;
107+
}
108+
if (!matchesSHA) {
109+
if (rule.getAttachmentSHAs().contains(computeSHA(attachment))) {
110+
matchesSHA = true;
111+
}
112+
}
113+
}
114+
return matchesSHA;
115+
}
116116

117-
private String computeAttachmentDescription(List<Message.Attachment> attachments) {
118-
return attachments.stream()
119-
.map(attachment -> "- " + attachment.getUrl() + ": `" + computeSHA(attachment) + "`")
120-
.collect(Collectors.joining("\n"));
121-
}
122-
123-
private String computeSHA(Attachment attachment) {
124-
try {
125-
HttpResponse<byte[]> res = HttpClient.newHttpClient().send(HttpRequest.newBuilder(URI.create(attachment.getProxyUrl())).build(), BodyHandlers.ofByteArray());
126-
MessageDigest digest = MessageDigest.getInstance("SHA-256");
127-
byte[] hash = digest.digest(res.body());
128-
return Base64.getEncoder().encodeToString(hash);
129-
} catch (IOException | InterruptedException | NoSuchAlgorithmException e) {
130-
ExceptionLogger.capture(e);
131-
return "";
132-
}
133-
}
117+
private String computeAttachmentDescription(List<Message.Attachment> attachments) {
118+
return attachments.stream()
119+
.map(attachment -> "- " + attachment.getUrl() + ": `" + computeSHA(attachment) + "`")
120+
.collect(Collectors.joining("\n"));
121+
}
122+
123+
private String computeSHA(Attachment attachment) {
124+
try {
125+
HttpResponse<byte[]> res = HttpClient.newHttpClient().send(HttpRequest.newBuilder(URI.create(attachment.getProxyUrl())).build(), BodyHandlers.ofByteArray());
126+
MessageDigest digest = MessageDigest.getInstance("SHA-256");
127+
byte[] hash = digest.digest(res.body());
128+
return Base64.getEncoder().encodeToString(hash);
129+
} catch (IOException | InterruptedException | NoSuchAlgorithmException e) {
130+
ExceptionLogger.capture(e);
131+
return "";
132+
}
133+
}
134134
}

0 commit comments

Comments
 (0)