mirror of
https://github.com/JonasunderscoreJones/ZtereoMUSIC.git
synced 2025-10-25 13:39:19 +02:00
fix: re-set the infochannel at each command use fixing #6
This commit is contained in:
parent
aee6735e39
commit
b0c00d48ee
7 changed files with 27 additions and 35 deletions
|
|
@ -4,15 +4,18 @@ import com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler;
|
|||
import com.sedmelluq.discord.lavaplayer.tools.FriendlyException;
|
||||
import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist;
|
||||
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.MessageChannel;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
|
||||
public class CustomAudioLoadResultHandler implements AudioLoadResultHandler {
|
||||
private final TrackManager trackManager;
|
||||
private final MessageReceivedEvent messageEvent;
|
||||
private final MessageChannel messageChannel;
|
||||
|
||||
public CustomAudioLoadResultHandler(TrackManager trackManager, MessageReceivedEvent messageEvent) {
|
||||
public CustomAudioLoadResultHandler(TrackManager trackManager, MessageChannel messageChannel) {
|
||||
this.trackManager = trackManager;
|
||||
this.messageEvent = messageEvent;
|
||||
this.messageChannel = messageChannel;
|
||||
trackManager.setInfoChannel(messageChannel);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -29,12 +32,12 @@ public class CustomAudioLoadResultHandler implements AudioLoadResultHandler {
|
|||
|
||||
@Override
|
||||
public void noMatches() {
|
||||
this.messageEvent.getMessage().reply("I found no matches for that song!").queue();
|
||||
this.messageChannel.sendMessage("I found no matches for that song!").queue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadFailed(FriendlyException throwable) {
|
||||
this.messageEvent.getMessage().reply("everything blew up and died. i'm sorry.").queue();
|
||||
this.messageChannel.sendMessage("everything blew up and died. i'm sorry.").queue();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,11 +6,12 @@ import net.dv8tion.jda.api.entities.Guild;
|
|||
import net.dv8tion.jda.api.entities.MessageChannel;
|
||||
import net.dv8tion.jda.api.entities.VoiceChannel;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Objects;
|
||||
|
||||
public class TrackManagers {
|
||||
//todo: change to a statement that only returns a trackmanager if it exists and overload it to accept various things eg guild but also vc or infoMessage channel
|
||||
public static TrackManager getGuildTrackManager(Guild guild) {
|
||||
@Nullable
|
||||
public static TrackManager getGuildTrackManager(Guild guild, MessageChannel infoChannel) {
|
||||
long guildId = guild.getIdLong();
|
||||
|
||||
TrackManager trackManager = ZtereoMUSIC.getInstance().getGuildTrackManagerMap().get(guildId);
|
||||
|
|
@ -19,21 +20,15 @@ public class TrackManagers {
|
|||
return null;
|
||||
}
|
||||
|
||||
trackManager.setInfoChannel(infoChannel);
|
||||
|
||||
guild.getAudioManager().setSendingHandler(trackManager.getAudioSendHandler());
|
||||
|
||||
return trackManager;
|
||||
}
|
||||
|
||||
//todo: rename to getOrCreateGuildTrackManager
|
||||
public static TrackManager getGuildTrackManager(Guild guild, MessageChannel infoChannel, VoiceChannel connectedChannel, VoiceChannel requestedChannel) {
|
||||
public static TrackManager getOrCreateGuildTrackManager(Guild guild, MessageChannel infoChannel, VoiceChannel requestedChannel) {
|
||||
long guildId = guild.getIdLong();
|
||||
boolean isInSameVC = Objects.equals(connectedChannel, requestedChannel);
|
||||
|
||||
// If I get called in a different vc I delete the old manager
|
||||
//todo: move this check to the audio micropermissions and handle it there
|
||||
if (!isInSameVC) {
|
||||
ZtereoMUSIC.getInstance().getGuildTrackManagerMap().remove(guildId);
|
||||
}
|
||||
|
||||
TrackManager trackManager = ZtereoMUSIC.getInstance().getGuildTrackManagerMap().get(guildId);
|
||||
|
||||
|
|
@ -43,6 +38,8 @@ public class TrackManagers {
|
|||
guild.getAudioManager().openAudioConnection(requestedChannel);
|
||||
}
|
||||
|
||||
trackManager.setInfoChannel(infoChannel);
|
||||
|
||||
guild.getAudioManager().setSendingHandler(trackManager.getAudioSendHandler());
|
||||
|
||||
return trackManager;
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import codes.ztereohype.ztereomusic.command.Command;
|
|||
import codes.ztereohype.ztereomusic.command.CommandMeta;
|
||||
import codes.ztereohype.ztereomusic.command.permissions.VoiceChecks;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.MessageChannel;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
|
||||
public class Pause implements Command {
|
||||
|
|
@ -33,7 +34,8 @@ public class Pause implements Command {
|
|||
@Override
|
||||
public void execute(MessageReceivedEvent messageEvent, String[] args) {
|
||||
Guild guild = messageEvent.getGuild();
|
||||
TrackManager trackManager = TrackManagers.getGuildTrackManager(guild);
|
||||
MessageChannel messageChannel = messageEvent.getChannel();
|
||||
TrackManager trackManager = TrackManagers.getGuildTrackManager(guild, messageChannel);
|
||||
|
||||
assert trackManager != null; // the command will not execute if it is anyway because of our VoiceChecks
|
||||
if (trackManager.getPlayer().isPaused()) {
|
||||
|
|
|
|||
|
|
@ -8,17 +8,11 @@ import codes.ztereohype.ztereomusic.command.Command;
|
|||
import codes.ztereohype.ztereomusic.command.CommandMeta;
|
||||
import codes.ztereohype.ztereomusic.command.permissions.VoiceChecks;
|
||||
import codes.ztereohype.ztereomusic.networking.YoutubeSearch;
|
||||
import com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler;
|
||||
import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager;
|
||||
import com.sedmelluq.discord.lavaplayer.tools.FriendlyException;
|
||||
import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist;
|
||||
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
|
||||
import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager;
|
||||
import net.dv8tion.jda.api.entities.*;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.managers.AudioManager;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.regex.Matcher;
|
||||
|
|
@ -74,8 +68,8 @@ public class Play implements Command {
|
|||
identifier = mergedArgs;
|
||||
}
|
||||
|
||||
TrackManager trackManager = TrackManagers.getGuildTrackManager(guild, messageChannel, manager.getConnectedChannel(), voiceChannel);
|
||||
TrackManager trackManager = TrackManagers.getOrCreateGuildTrackManager(guild, messageChannel, voiceChannel);
|
||||
|
||||
playerManager.loadItem(identifier, new CustomAudioLoadResultHandler(trackManager, messageEvent));
|
||||
playerManager.loadItem(identifier, new CustomAudioLoadResultHandler(trackManager, messageChannel));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package codes.ztereohype.ztereomusic.command.commands;
|
||||
|
||||
import codes.ztereohype.ztereomusic.ZtereoMUSIC;
|
||||
import codes.ztereohype.ztereomusic.audio.TrackManager;
|
||||
import codes.ztereohype.ztereomusic.audio.TrackManagers;
|
||||
import codes.ztereohype.ztereomusic.command.Command;
|
||||
|
|
@ -40,14 +39,13 @@ public class Queue implements Command {
|
|||
Guild guild = messageEvent.getGuild();
|
||||
VoiceChannel voiceChannel = Objects.requireNonNull(Objects.requireNonNull(messageEvent.getMember()).getVoiceState()).getChannel();
|
||||
MessageChannel messageChannel = messageEvent.getChannel();
|
||||
VoiceChannel connectedChannel = guild.getAudioManager().getConnectedChannel();
|
||||
|
||||
TrackManager trackManager = TrackManagers.getGuildTrackManager(guild, messageChannel, connectedChannel, voiceChannel);
|
||||
TrackManager trackManager = TrackManagers.getOrCreateGuildTrackManager(guild, messageChannel, voiceChannel);
|
||||
|
||||
StringBuilder messageBuilder = new StringBuilder();
|
||||
List<AudioTrack> trackList = trackManager.trackQueue;
|
||||
for (AudioTrack track: trackList) {
|
||||
messageBuilder.append(trackList.indexOf(track)).append(". ");
|
||||
messageBuilder.append(trackList.indexOf(track) + 1).append(". ");
|
||||
messageBuilder.append(track.getInfo().title);
|
||||
messageBuilder.append(System.getProperty("line.separator"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public class Skip implements Command {
|
|||
public void execute(MessageReceivedEvent messageEvent, String[] args) {
|
||||
Guild guild = messageEvent.getGuild();
|
||||
MessageChannel messageChannel = messageEvent.getChannel();
|
||||
TrackManager trackManager = TrackManagers.getGuildTrackManager(guild);
|
||||
TrackManager trackManager = TrackManagers.getGuildTrackManager(guild, messageChannel);
|
||||
|
||||
assert trackManager != null; // the command will not execute if it is anyway because of our VoiceChecks (BOT_PLAYING)
|
||||
if (trackManager.getPlayer().getPlayingTrack() == null) {
|
||||
|
|
|
|||
|
|
@ -6,10 +6,7 @@ import codes.ztereohype.ztereomusic.audio.TrackManagers;
|
|||
import codes.ztereohype.ztereomusic.command.Command;
|
||||
import codes.ztereohype.ztereomusic.command.permissions.Check;
|
||||
import codes.ztereohype.ztereomusic.command.permissions.VoiceChecks;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.VoiceChannel;
|
||||
import net.dv8tion.jda.api.entities.*;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
import net.dv8tion.jda.api.managers.AudioManager;
|
||||
|
|
@ -27,6 +24,7 @@ public class CommandListener extends ListenerAdapter {
|
|||
@Override
|
||||
public void onMessageReceived(@Nonnull MessageReceivedEvent event) {
|
||||
Message message = event.getMessage();
|
||||
MessageChannel messageChannel = event.getChannel();
|
||||
String content = message.getContentRaw();
|
||||
Guild guild = message.getGuild();
|
||||
|
||||
|
|
@ -52,7 +50,7 @@ public class CommandListener extends ListenerAdapter {
|
|||
|
||||
// check if the command is allowed and stop at first failure (order is important)
|
||||
for (VoiceChecks checkEnum : command.getMeta().getChecks()) {
|
||||
if (!checkEnum.getCheck().getResult(message.getMember(), guild.getAudioManager().getConnectedChannel(), TrackManagers.getGuildTrackManager(guild))) {
|
||||
if (!checkEnum.getCheck().getResult(message.getMember(), guild.getAudioManager().getConnectedChannel(), TrackManagers.getGuildTrackManager(guild, messageChannel))) {
|
||||
message.reply(checkEnum.getCheck().getErrorCode()).queue();
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue