Skip to content

Commit 3def321

Browse files
committed
Made some changes as requested also brought back config.json.template
1 parent 9681b28 commit 3def321

2 files changed

Lines changed: 274 additions & 22 deletions

File tree

application/config.json.template

Lines changed: 255 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,255 @@
1+
{
2+
"token": "<put_your_token_here>",
3+
"githubApiKey": "<your_github_personal_access_token>",
4+
"databasePath": "local-database.db",
5+
"projectWebsite": "https://github.com/Together-Java/TJ-Bot",
6+
"discordGuildInvite": "https://discord.com/invite/XXFUXzK",
7+
"modAuditLogChannelPattern": "mod-audit-log",
8+
"modMailChannelPattern": "modmail",
9+
"projectsChannelPattern": "projects",
10+
"mutedRolePattern": "Muted",
11+
"heavyModerationRolePattern": "Moderator",
12+
"softModerationRolePattern": "Moderator|Community Ambassador",
13+
"tagManageRolePattern": "Moderator|Community Ambassador|Top Helper.*",
14+
"excludeCodeAutoDetectionRolePattern": "Top Helper.*|Moderator|Community Ambassador|Expert",
15+
"suggestions": {
16+
"channelPattern": "tj-suggestions",
17+
"upVoteEmoteName": "peepo_yes",
18+
"downVoteEmoteName": "peepo_no"
19+
},
20+
"quarantinedRolePattern": "Quarantined",
21+
"scamBlocker": {
22+
"mode": "AUTO_DELETE_BUT_APPROVE_QUARANTINE",
23+
"reportChannelPattern": "commands",
24+
"botTrapChannelPattern": "bot-trap",
25+
"trustedUserRolePattern": "Top Helper.*|Moderator|Community Ambassador|Expert",
26+
"suspiciousKeywords": [
27+
"nitro",
28+
"boob",
29+
"sexy",
30+
"sexi",
31+
"esex",
32+
"steam",
33+
"gift",
34+
"onlyfans",
35+
"bitcoin",
36+
"btc",
37+
"promo",
38+
"trader",
39+
"trading",
40+
"whatsapp",
41+
"crypto",
42+
"^claim",
43+
"^teen$",
44+
"adobe",
45+
"^hack$",
46+
"hacks",
47+
"steamcommunity",
48+
"freenitro",
49+
"^earn$",
50+
"^earning",
51+
".exe$",
52+
"mrbeast"
53+
],
54+
"hostWhitelist": [
55+
"discord.com",
56+
"discord.media",
57+
"discordapp.com",
58+
"discordapp.net",
59+
"discordstatus.com",
60+
"thehackernews.com",
61+
"gradle.org",
62+
"help.gradle.org",
63+
"youtube.com",
64+
"www.youtube.com",
65+
"cdn.discordapp.com",
66+
"media.discordapp.net",
67+
"store.steampowered.com",
68+
"help.steampowered.com",
69+
"learn.microsoft.com"
70+
],
71+
"hostBlacklist": [
72+
"bit.ly",
73+
"discord.gg",
74+
"teletype.in",
75+
"t.me",
76+
"corematrix.us",
77+
"u.to",
78+
"steamcommunity.com",
79+
"goo.su",
80+
"telegra.ph",
81+
"shorturl.at",
82+
"cheatings.xyz",
83+
"transfer.sh",
84+
"tobimoller.space"
85+
],
86+
"suspiciousHostKeywords": [
87+
"discord",
88+
"nitro",
89+
"premium",
90+
"free",
91+
"cheat",
92+
"crypto",
93+
"telegra",
94+
"telety"
95+
],
96+
"isHostSimilarToKeywordDistanceThreshold": 2,
97+
"suspiciousAttachmentsThreshold": 3,
98+
"suspiciousAttachmentNamePattern": "(image|\\d{1,2})\\.[^.]{0,5}"
99+
},
100+
"wolframAlphaAppId": "79J52T-6239TVXHR7",
101+
"helpSystem": {
102+
"helpForumPattern": "questions",
103+
"categories": [
104+
"Java",
105+
"Frameworks",
106+
"JavaFX|Swing",
107+
"IDE",
108+
"Build Tools",
109+
"Database",
110+
"Android",
111+
"C|C++",
112+
"Algorithms",
113+
"Math",
114+
"Architecture",
115+
"Code Review",
116+
"Together Java Bot",
117+
"Other"
118+
],
119+
"categoryRoleSuffix": " - Helper"
120+
},
121+
"mediaOnlyChannelPattern": "memes",
122+
"blacklistedFileExtension": [
123+
"application",
124+
"bat",
125+
"cmd",
126+
"com",
127+
"cpl",
128+
"exe",
129+
"gadget",
130+
"hta",
131+
"inf",
132+
"jse",
133+
"lnk",
134+
"msc",
135+
"msh",
136+
"msh1",
137+
"msh1xml",
138+
"msh2",
139+
"msh2xml",
140+
"mshxml",
141+
"msi",
142+
"msp",
143+
"pif",
144+
"ps1",
145+
"ps1xml",
146+
"ps2",
147+
"ps2xml",
148+
"psc1",
149+
"psc2",
150+
"scf",
151+
"scr",
152+
"vb",
153+
"vbe",
154+
"vbs",
155+
"ws",
156+
"wsc",
157+
"wsf",
158+
"wsh"
159+
],
160+
"githubReferencingEnabledChannelPattern": "server-suggestions|tjbot-discussion|modernjava-discussion",
161+
"githubRepositories": [403389278,587644974,601602394],
162+
"logInfoChannelWebhook": "<put_your_webhook_here>",
163+
"logErrorChannelWebhook": "<put_your_webhook_here>",
164+
"openaiApiKey": "<check pins in #tjbot_discussion for the key>",
165+
"tavilyApiKey": "<create an account on https://www.tavily.com/ to get an API key for free>",
166+
"sourceCodeBaseUrl": "https://github.com/Together-Java/TJ-Bot/blob/master/application/src/main/java/",
167+
"jshell": {
168+
"baseUrl": "<put_jshell_rest_api_url_here>",
169+
"rateLimitWindowSeconds": 10,
170+
"rateLimitRequestsInWindow": 3
171+
},
172+
"helperPruneConfig": {
173+
"roleFullLimit": 250,
174+
"roleFullThreshold": 245,
175+
"pruneMemberAmount": 7,
176+
"inactivateAfterDays": 90,
177+
"recentlyJoinedDays": 4
178+
},
179+
"featureBlacklist": {
180+
"normal": [
181+
],
182+
"special": [
183+
]
184+
},
185+
"selectRolesChannelPattern": "select-your-roles",
186+
"rssConfig": {
187+
"feeds": [
188+
{
189+
"url": "https://blogs.oracle.com/java/rss",
190+
"targetChannelPattern": "java-news-and-changes",
191+
"dateFormatterPattern": "EEE, d MMM yyyy HH:mm:ss z"
192+
}
193+
],
194+
"fallbackChannelPattern": "java-news-and-changes",
195+
"videoLinkPattern": "http(s)?://www\\.youtube.com.*",
196+
"pollIntervalInMinutes": 10
197+
},
198+
"quoteBoardConfig": {
199+
"minimumScoreToTrigger": 5.0,
200+
"channel": "quotes",
201+
"botEmoji": "⭐",
202+
"defaultEmojiScore": 0.5,
203+
"emojiScores": {
204+
"😬": -0.5,
205+
"💔": -0.5,
206+
"😐": -0.5,
207+
"😊": -0.5,
208+
"🖕": -0.5,
209+
"👎": -0.5,
210+
"💩": -0.5,
211+
"🤢": -0.5,
212+
"🤮": -0.5,
213+
"🤬": -0.5,
214+
"😡": -0.5,
215+
"😒": -0.5,
216+
"🤨": -0.5,
217+
218+
"🇷🇺": 0.0,
219+
"🇵🇸": 0.0,
220+
"🇮🇱": 0.0,
221+
"🏳️‍🌈": 0.0,
222+
223+
"⭐": 1.0,
224+
225+
"youtube:1464573182206804010": 0.0
226+
},
227+
"allowChannels": [
228+
"chit-chat",
229+
"career-talk",
230+
"geek-speek",
231+
"expert-java-talk",
232+
"ai-talk"
233+
]
234+
},
235+
"roleApplicationSystem": {
236+
"submissionsChannelPattern": "staff-applications",
237+
"defaultQuestion": "What makes you a good addition to the team?"
238+
},
239+
"memberCountCategoryPattern": "Info",
240+
"topHelpers": {
241+
"rolePattern": "Top Helper.*",
242+
"assignmentChannelPattern": "community-commands",
243+
"announcementChannelPattern": "hall-of-fame"
244+
},
245+
"dynamicVoiceChatConfig": {
246+
"dynamicChannelPatterns": [
247+
"Gaming",
248+
"Support/Studying Room",
249+
"Chit Chat"
250+
],
251+
"archiveCategoryPattern": "Voice Channel Archives",
252+
"cleanChannelsAmount": 20,
253+
"minimumChannelsAmount": 40
254+
}
255+
}

application/src/main/java/org/togetherjava/tjbot/features/moderation/ReportCommand.java

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@
33
import com.github.benmanes.caffeine.cache.Cache;
44
import com.github.benmanes.caffeine.cache.Caffeine;
55
import net.dv8tion.jda.api.EmbedBuilder;
6-
import net.dv8tion.jda.api.entities.Guild;
7-
import net.dv8tion.jda.api.entities.Message;
8-
import net.dv8tion.jda.api.entities.MessageEmbed;
9-
import net.dv8tion.jda.api.entities.Role;
6+
import net.dv8tion.jda.api.entities.*;
107
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
118
import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent;
129
import net.dv8tion.jda.api.events.interaction.command.MessageContextInteractionEvent;
@@ -17,6 +14,7 @@
1714
import net.dv8tion.jda.api.interactions.components.text.TextInput;
1815
import net.dv8tion.jda.api.interactions.components.text.TextInputStyle;
1916
import net.dv8tion.jda.api.interactions.modals.Modal;
17+
import net.dv8tion.jda.api.requests.RestAction;
2018
import net.dv8tion.jda.api.requests.restaction.MessageCreateAction;
2119
import net.dv8tion.jda.api.utils.Result;
2220
import org.slf4j.Logger;
@@ -268,15 +266,15 @@ public void onButtonClick(ButtonInteractionEvent event, List<String> args) {
268266
event.getJDA()
269267
.retrieveUserById(reportedUserId)
270268
.flatMap(user -> prepareAuditEmbedTasks(event, user, actions, pages, targetPage))
271-
.queue(fields -> {
272-
}, _ -> event.getHook()
269+
.onErrorFlatMap(_ -> event.getHook()
273270
.sendMessage("Could not load audit data for this user.")
274-
.queue());
271+
.map(msg -> null))
272+
.queue();
275273
}
276274

277-
private net.dv8tion.jda.api.requests.RestAction<List<MessageEmbed.Field>> prepareAuditEmbedTasks(
278-
ButtonInteractionEvent event, net.dv8tion.jda.api.entities.User user,
279-
List<ActionRecord> actions, List<List<ActionRecord>> pages, int targetPage) {
275+
private RestAction<List<MessageEmbed.Field>> prepareAuditEmbedTasks(
276+
ButtonInteractionEvent event, User user, List<ActionRecord> actions,
277+
List<List<ActionRecord>> pages, int targetPage) {
280278

281279
EmbedBuilder auditEmbed =
282280
new EmbedBuilder().setTitle("Audit log of **%s**".formatted(user.getName()))
@@ -287,30 +285,29 @@ private net.dv8tion.jda.api.requests.RestAction<List<MessageEmbed.Field>> prepar
287285
if (pages.isEmpty()) {
288286
return event.getHook()
289287
.editOriginalEmbeds(auditEmbed.build())
290-
.setComponents(Collections.emptyList())
291-
.map(_ -> Collections.emptyList());
288+
.setComponents(List.of())
289+
.map(_ -> List.of());
292290
}
293291

294292
int currentPageIndex = Math.clamp(targetPage, 0, pages.size() - 1);
295293

296-
List<net.dv8tion.jda.api.requests.RestAction<MessageEmbed.Field>> fieldTasks =
297-
pages.get(currentPageIndex)
298-
.stream()
299-
.map(action -> ModerationUtils.actionToField(action, event.getJDA()))
300-
.toList();
294+
List<RestAction<MessageEmbed.Field>> fetchFieldActions = pages.get(currentPageIndex)
295+
.stream()
296+
.map(action -> ModerationUtils.actionToField(action, event.getJDA()))
297+
.toList();
301298

302-
return net.dv8tion.jda.api.requests.RestAction.allOf(fieldTasks).map(fields -> {
303-
finalizeAndSendEmbed(event, auditEmbed, fields, user.getIdLong(), currentPageIndex,
299+
return RestAction.allOf(fetchFieldActions).map(embedFields -> {
300+
finalizeAndSendEmbed(event, auditEmbed, embedFields, user.getIdLong(), currentPageIndex,
304301
pages.size());
305-
return fields;
302+
return embedFields;
306303
});
307304
}
308305

309306
private void finalizeAndSendEmbed(ButtonInteractionEvent event, EmbedBuilder auditEmbed,
310-
List<MessageEmbed.Field> fields, long reportedUserId, int currentPageIndex,
307+
List<MessageEmbed.Field> embedFields, long reportedUserId, int currentPageIndex,
311308
int totalPages) {
312309
auditEmbed.clearFields();
313-
fields.forEach(auditEmbed::addField);
310+
embedFields.forEach(auditEmbed::addField);
314311

315312
auditEmbed.setFooter(
316313
"Page %d/%d (Most recent first)".formatted(currentPageIndex + 1, totalPages));

0 commit comments

Comments
 (0)