11package net .discordjug .javabot .listener ;
22
33import java .awt .Color ;
4+ import java .util .List ;
5+ import java .util .stream .Collectors ;
46
57import lombok .RequiredArgsConstructor ;
68import net .discordjug .javabot .data .config .BotConfig ;
9+ import net .discordjug .javabot .data .config .guild .ModerationConfig ;
710import net .discordjug .javabot .util .InteractionUtils ;
811import net .dv8tion .jda .api .EmbedBuilder ;
912import net .dv8tion .jda .api .entities .channel .ChannelType ;
@@ -24,19 +27,41 @@ public void onChannelCreate(ChannelCreateEvent event) {
2427 if (event .getChannel ().getType () != ChannelType .GUILD_PUBLIC_THREAD ) {
2528 return ;
2629 }
30+
2731 ThreadChannel post = event .getChannel ().asThreadChannel ();
28- if (post .getParentChannel ().getIdLong () !=
29- botConfig .get (event .getGuild ()).getModerationConfig ().getJobChannelId ()) {
32+ ModerationConfig moderationConfig = botConfig .get (event .getGuild ()).getModerationConfig ();
33+ long jobChannelId = moderationConfig .getJobChannelId ();
34+ long projectChannelId = moderationConfig .getProjectChannelId ();
35+ long parentChannelId = post .getParentChannel ().getIdLong ();
36+
37+ if (parentChannelId != jobChannelId && parentChannelId != projectChannelId ) {
3038 return ;
3139 }
3240
33-
34- boolean postClosed = false ;
35-
36- for (ThreadChannel otherPost : post .getParentChannel ().getThreadChannels ()) {
37- if (otherPost .getOwnerIdLong () == post .getOwnerIdLong () &&
38- otherPost .getIdLong () != post .getIdLong () &&
39- !otherPost .isPinned ()) {
41+ List <ThreadChannel > threadChannels = post .getParentChannel ()
42+ .getThreadChannels ()
43+ .stream ()
44+ .filter (c -> c .getOwnerIdLong () == post .getOwnerIdLong ())
45+ .filter (otherPost -> otherPost .getIdLong () != post .getIdLong ())
46+ .filter (c -> !c .isPinned ())
47+ .collect (Collectors .toList ());
48+
49+ for (ThreadChannel otherPost : threadChannels ) {
50+ if (otherPost .getTimeCreated ().plusDays (7 ).isAfter (post .getTimeCreated ())) {
51+ post .sendMessageEmbeds (
52+ new EmbedBuilder ()
53+ .setTitle ("Post closed" )
54+ .setDescription ("This post has been blocked because you have created other recent posts.\n Please do not spam posts." )
55+ .build ())
56+ .setContent (post .getOwner ().getAsMention ())
57+ .flatMap (msg -> post .getManager ().setArchived (true ).setLocked (true ))
58+ .queue ();
59+ return ;
60+ }
61+ }
62+
63+ if (parentChannelId == jobChannelId && !threadChannels .isEmpty ()) {
64+ for (ThreadChannel otherPost : threadChannels ) {
4065 otherPost .sendMessageEmbeds (
4166 new EmbedBuilder ()
4267 .setTitle ("Post closed" )
@@ -45,10 +70,7 @@ public void onChannelCreate(ChannelCreateEvent event) {
4570 .build ())
4671 .flatMap (msg -> otherPost .getManager ().setArchived (true ).setLocked (true ))
4772 .queue ();
48- postClosed = true ;
4973 }
50- }
51- if (postClosed ) {
5274 post .sendMessageEmbeds (
5375 new EmbedBuilder ()
5476 .setTitle ("Posts closed" )
0 commit comments