From 81e15a53940fa767399d2eeac8df464620b0a987 Mon Sep 17 00:00:00 2001 From: anthorob Date: Sat, 16 Nov 2024 03:14:23 -0500 Subject: [PATCH] Improve cleanup for music player, fix resume logic, check if player is connected before checking url, refactor context --- .../context/MessageCommandContext.java | 12 +-- .../context/SlashCommandContext.java | 43 +------- .../netneutrality/core/AsyncMessage.java | 102 ------------------ .../tasks/music/AddAllTracksTask.java | 4 +- .../thread/MusicManagerCleanupThread.java | 39 +++++++ 5 files changed, 48 insertions(+), 152 deletions(-) delete mode 100644 src/main/java/me/bobert/netneutrality/core/AsyncMessage.java create mode 100644 src/main/java/me/bobert/netneutrality/thread/MusicManagerCleanupThread.java diff --git a/src/main/java/me/bobert/netneutrality/context/MessageCommandContext.java b/src/main/java/me/bobert/netneutrality/context/MessageCommandContext.java index a2a7a7f..bf8d75a 100644 --- a/src/main/java/me/bobert/netneutrality/context/MessageCommandContext.java +++ b/src/main/java/me/bobert/netneutrality/context/MessageCommandContext.java @@ -5,7 +5,6 @@ package me.bobert.netneutrality.context; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.AsyncMessage; import me.bobert.netneutrality.core.context.CommandContext; import me.bobert.netneutrality.utils.Settings; import net.dv8tion.jda.api.entities.Message; @@ -15,6 +14,7 @@ import net.dv8tion.jda.api.interactions.components.LayoutComponent; import net.dv8tion.jda.api.interactions.modals.Modal; import net.dv8tion.jda.api.utils.messages.MessageCreateData; +import java.util.List; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; @@ -77,14 +77,14 @@ public class MessageCommandContext extends CommandContext { } @Override - public void defer(Consumer consumer) { + public void defer(boolean ephemeral, Consumer consumer) { reply("Bot is thinking...", consumer); } @Override - public void reply(MessageCreateData messageCreateData, boolean ephemeral, Consumer consumer, LayoutComponent... components) { + public void reply(MessageCreateData messageCreateData, boolean ephemeral, List components, Consumer consumer) { if (getChannel() != null && getChannel().canTalk()) { - message.reply(messageCreateData).setComponents(components).queue(message1 -> consumer.accept(new AsyncMessage(message1))); + message.reply(messageCreateData).setComponents(components).queue(message -> consumer.accept(new AsyncContext(message))); } } @@ -94,8 +94,8 @@ public class MessageCommandContext extends CommandContext { } @Override - public void replyEphemeral(MessageCreateData message) { - sendMessageInPrivate(message); + public void replyEphemeral(MessageCreateData messageCreateData) { + sendMessageInPrivate(messageCreateData); } @Override diff --git a/src/main/java/me/bobert/netneutrality/context/SlashCommandContext.java b/src/main/java/me/bobert/netneutrality/context/SlashCommandContext.java index 3206379..16e8baa 100644 --- a/src/main/java/me/bobert/netneutrality/context/SlashCommandContext.java +++ b/src/main/java/me/bobert/netneutrality/context/SlashCommandContext.java @@ -5,17 +5,13 @@ package me.bobert.netneutrality.context; * https://discord.gg/qUa6zNFZsd */ -import me.bobert.netneutrality.core.AsyncMessage; import me.bobert.netneutrality.core.context.CommandContext; +import me.bobert.netneutrality.core.context.InteractionContext; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; import net.dv8tion.jda.api.interactions.InteractionHook; -import net.dv8tion.jda.api.interactions.components.LayoutComponent; import net.dv8tion.jda.api.interactions.modals.Modal; -import net.dv8tion.jda.api.utils.messages.MessageCreateData; -import java.util.function.Consumer; - -public class SlashCommandContext extends CommandContext { +public class SlashCommandContext extends CommandContext implements InteractionContext { private final SlashCommandInteractionEvent event; public SlashCommandContext(SlashCommandInteractionEvent event) { @@ -28,16 +24,6 @@ public class SlashCommandContext extends CommandContext { return event; } - @Override - public boolean isAcknowledged() { - return event.isAcknowledged(); - } - - @Override - public boolean isFromGuild() { - return event.isFromGuild(); - } - @Override public InteractionHook getInteractionHook() { if (!event.isAcknowledged()) @@ -51,36 +37,11 @@ public class SlashCommandContext extends CommandContext { // not implemented } - @Override - public void defer(Consumer consumer) { - event.deferReply().queue(hook -> consumer.accept(new AsyncMessage(hook))); - } - - @Override - public void reply(MessageCreateData message, boolean ephemeral, Consumer consumer, LayoutComponent... components) { - if (isAcknowledged()) { - getInteractionHook().sendMessage(message).setEphemeral(ephemeral).setComponents(components) - .queue(message1 -> consumer.accept(new AsyncMessage(message1))); - return; - } - - event.reply(message).setEphemeral(ephemeral).setComponents(components) - .queue(message1 -> consumer.accept(new AsyncMessage(message1))); - } - @Override public void reply(Modal modal) { event.replyModal(modal).queue(); } - @Override - public void ack(boolean ephemeral) { - if (event.isAcknowledged()) - throw new RuntimeException("Interaction is already acknowledged, please use getInteractionHook() instead."); - - event.deferReply(ephemeral).queue(); - } - @Override public String parseCommandName() { return event.getName(); diff --git a/src/main/java/me/bobert/netneutrality/core/AsyncMessage.java b/src/main/java/me/bobert/netneutrality/core/AsyncMessage.java deleted file mode 100644 index eddcf81..0000000 --- a/src/main/java/me/bobert/netneutrality/core/AsyncMessage.java +++ /dev/null @@ -1,102 +0,0 @@ -package me.bobert.netneutrality.core; -/* - * Copyright (c) anthorob - * - * https://discord.gg/qUa6zNFZsd - */ - -import me.bobert.netneutrality.core.context.AbstractContext; -import net.dv8tion.jda.api.entities.Message; -import net.dv8tion.jda.api.events.Event; -import net.dv8tion.jda.api.interactions.InteractionHook; -import net.dv8tion.jda.api.interactions.components.LayoutComponent; -import net.dv8tion.jda.api.interactions.modals.Modal; -import net.dv8tion.jda.api.utils.messages.MessageCreateData; -import net.dv8tion.jda.api.utils.messages.MessageEditData; - -import java.util.function.Consumer; - -public class AsyncMessage extends AbstractContext { - private final InteractionHook hook; - private final Message message; - - public AsyncMessage(InteractionHook hook) { - super(hook.getJDA(), hook.getInteraction().getGuild(), hook.getInteraction().getMessageChannel(), hook.getInteraction().getMember(), hook.getInteraction().getUser()); - this.hook = hook; - this.message = null; - } - - public AsyncMessage(Message message) { - super(message.getJDA(), message.getGuild(), message.getChannel(), message.getMember(), message.getAuthor()); - this.hook = null; - this.message = message; - } - - @Override - public Event getEvent() { - return null; - } - - @Override - public InteractionHook getInteractionHook() { - return hook; - } - - @Override - public boolean isAcknowledged() { - return true; - } - - @Override - public boolean isFromGuild() { - return false; - } - - @Override - public void deleteMessage() { - if (hook != null) { - hook.deleteOriginal().queue(); - } - - if (message != null) { - message.delete().queue(); - } - } - - @Override - public void reply(Modal modal) { - - } - - @Override - public void reply(MessageCreateData messageCreateData, boolean ephemeral, Consumer consumer, LayoutComponent... components) { - if (hook != null) { - hook.sendMessage(messageCreateData).queue(); - } - - if (message != null) { - message.reply(messageCreateData).queue(); - } - } - - @Override - public void defer(Consumer consumer) { - - } - - @Override - public void ack(boolean ephemeral) { - - } - - @Override - public void edit(MessageEditData messageEditData, boolean ephemeral, Consumer consumer, LayoutComponent... components) { - if (hook != null) { - hook.editOriginal(messageEditData).queue(); - } - - if (message != null) { - message.editMessage(messageEditData).queue(); - } - } -} diff --git a/src/main/java/me/bobert/netneutrality/tasks/music/AddAllTracksTask.java b/src/main/java/me/bobert/netneutrality/tasks/music/AddAllTracksTask.java index 6793f98..b225e3f 100644 --- a/src/main/java/me/bobert/netneutrality/tasks/music/AddAllTracksTask.java +++ b/src/main/java/me/bobert/netneutrality/tasks/music/AddAllTracksTask.java @@ -44,9 +44,7 @@ public class AddAllTracksTask extends ButtonTask implements WithParent