11package net .javadiscord .javabot .listener ;
22
3+ import lombok .extern .slf4j .Slf4j ;
34import net .dv8tion .jda .api .entities .Guild ;
45import net .dv8tion .jda .api .entities .User ;
6+ import net .dv8tion .jda .api .entities .UserSnowflake ;
7+ import net .dv8tion .jda .api .entities .channel .concrete .ForumChannel ;
8+ import net .dv8tion .jda .api .entities .channel .concrete .ThreadChannel ;
59import net .dv8tion .jda .api .events .guild .member .GuildMemberRemoveEvent ;
610import net .dv8tion .jda .api .hooks .ListenerAdapter ;
711import net .javadiscord .javabot .data .config .BotConfig ;
812
913import lombok .RequiredArgsConstructor ;
14+ import net .javadiscord .javabot .data .config .guild .HelpConfig ;
15+ import net .javadiscord .javabot .data .h2db .DbActions ;
16+ import net .javadiscord .javabot .systems .help .HelpManager ;
17+ import net .javadiscord .javabot .systems .help .dao .HelpAccountRepository ;
18+ import net .javadiscord .javabot .systems .help .dao .HelpTransactionRepository ;
1019import org .jetbrains .annotations .NotNull ;
1120
1221/**
1322 * Listens for the {@link GuildMemberRemoveEvent}.
1423 */
24+ @ Slf4j
1525@ RequiredArgsConstructor
1626public class UserLeaveListener extends ListenerAdapter {
27+ private final DbActions dbActions ;
1728 private final BotConfig botConfig ;
29+ private final HelpAccountRepository helpAccountRepository ;
30+ private final HelpTransactionRepository helpTransactionRepository ;
1831
1932 @ Override
2033 public void onGuildMemberRemove (@ NotNull GuildMemberRemoveEvent event ) {
@@ -31,6 +44,18 @@ public void onGuildMemberRemove(@NotNull GuildMemberRemoveEvent event) {
3144 * @param guild The guild they're leaving.
3245 */
3346 private void unreserveAllChannels (User user , Guild guild ) {
34- // TODO: Implement Forum
47+ HelpConfig config = botConfig .get (guild ).getHelpConfig ();
48+ ForumChannel forum = config .getHelpForumChannel ();
49+ if (forum != null ) {
50+ for (ThreadChannel post : forum .getThreadChannels ()) {
51+ if (post .isArchived () || post .isLocked ()) continue ;
52+ if (post .getOwnerIdLong () == user .getIdLong ()) {
53+ HelpManager manager = new HelpManager (post , dbActions , botConfig , helpAccountRepository , helpTransactionRepository );
54+ manager .close (UserSnowflake .fromId (guild .getSelfMember ().getIdLong ()), "User left the server" );
55+ }
56+ }
57+ } else {
58+ log .warn ("Could not find forum channel for guild {}" , guild .getName ());
59+ }
3560 }
3661}
0 commit comments