mirror of
				https://github.com/JonasunderscoreJones/ZtereoMUSIC.git
				synced 2025-10-26 12:59:19 +01: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