diff options
author | Matt Kohls <mattkohls13@gmail.com> | 2018-06-30 18:01:00 -0400 |
---|---|---|
committer | Matt Kohls <mattkohls13@gmail.com> | 2018-06-30 18:01:00 -0400 |
commit | 8ef0634fff740d10668c80a0c57a35ff5e9f635c (patch) | |
tree | c7d5d15a6dd2cda63d94a1eac6fb33ab3e0c192c | |
parent | c23f6622afe07fff1362494de8ce9890e7767a7e (diff) | |
download | SoundChan-8ef0634fff740d10668c80a0c57a35ff5e9f635c.tar.gz SoundChan-8ef0634fff740d10668c80a0c57a35ff5e9f635c.tar.bz2 SoundChan-8ef0634fff740d10668c80a0c57a35ff5e9f635c.zip |
Adding the ability to play an audio clip when a user joins the voice
channel
Not the prettiest thing in the world
-rw-r--r-- | soundchan.properties.example | 3 | ||||
-rw-r--r-- | src/main/java/soundchan/BotListener/BotListener.java | 76 |
2 files changed, 77 insertions, 2 deletions
diff --git a/soundchan.properties.example b/soundchan.properties.example index f862cc5..6848d18 100644 --- a/soundchan.properties.example +++ b/soundchan.properties.example @@ -6,3 +6,6 @@ localFilePath=C:\\PATH\\TO\\SOUNDS\\DIRECTORY //The user for the followingUser=USERNAME + +//If you want SoundChan to play an audio file whit their name when a user joins the channel +audioOnUserJoin=on/off diff --git a/src/main/java/soundchan/BotListener/BotListener.java b/src/main/java/soundchan/BotListener/BotListener.java index b09fffc..8c144c6 100644 --- a/src/main/java/soundchan/BotListener/BotListener.java +++ b/src/main/java/soundchan/BotListener/BotListener.java @@ -11,6 +11,7 @@ import net.dv8tion.jda.client.events.call.voice.CallVoiceJoinEvent; import net.dv8tion.jda.core.entities.Guild; import net.dv8tion.jda.core.entities.MessageChannel; import net.dv8tion.jda.core.entities.VoiceChannel; +import net.dv8tion.jda.core.events.guild.voice.GuildVoiceJoinEvent; import net.dv8tion.jda.core.events.guild.voice.GuildVoiceMoveEvent; import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import net.dv8tion.jda.core.hooks.ListenerAdapter; @@ -26,13 +27,16 @@ public class BotListener extends ListenerAdapter{ private long monitoredGuildId = -1; private Guild monitoredGuild; - private static String followingUser; - private static String localFilePath; private static LocalAudioManager localManager; private final AudioPlayerManager playerManager; private final Map<Long, GuildMusicManager> musicManagers; private BotListenerHelpers helper = new BotListenerHelpers(); + // From configuration file + private static String followingUser; + private static String localFilePath; + private static boolean audioOnUserJoin; + public BotListener(Properties properties) { this.musicManagers = new HashMap<>(); @@ -42,6 +46,8 @@ public class BotListener extends ListenerAdapter{ localFilePath = properties.getProperty("localFilePath"); followingUser = properties.getProperty("followingUser"); + String temp = properties.getProperty("audioOnUserJoin"); + audioOnUserJoin = settingEnableCheck(temp); localManager = new LocalAudioManager(localFilePath); } @@ -61,7 +67,59 @@ public class BotListener extends ListenerAdapter{ @Override public void onCallVoiceJoin(CallVoiceJoinEvent event){ + super.onCallVoiceJoin(event); + } + + /** + * Plays an audio clip when a user connects to the voice channel if enabled in the config file. For the sound to play, + * there needs to be a sound file with the same name as the user, otherwise it won't play anything. + * @param event + */ + @Override + public void onGuildVoiceJoin(GuildVoiceJoinEvent event) { + if(audioOnUserJoin) { + String filepath = localManager.GetFilePath(event.getMember().getEffectiveName()); + if (!filepath.contentEquals("")) { + GuildMusicManager musicManager = getGuildAudioPlayer(); + + playerManager.loadItemOrdered(musicManager, filepath, new AudioLoadResultHandler() { + @Override + public void trackLoaded(AudioTrack track) { + int timeStart = filepath.lastIndexOf('='); + if (timeStart != -1) { + String timeString = filepath.substring(timeStart); + + //The format will be 1h2m53s, need to parse that into seconds and then call + //track.setPosition(long position) + + } + + play(monitoredGuild, musicManager, track, true); + } + @Override + public void playlistLoaded(AudioPlaylist playlist) { + AudioTrack firstTrack = playlist.getSelectedTrack(); + + if (firstTrack == null) { + firstTrack = playlist.getTracks().get(0); + } + play(monitoredGuild, musicManager, firstTrack, false); + } + + @Override + public void noMatches() { + //channel.sendMessage("Nothing found by " + trackUrl).queue(); + } + + @Override + public void loadFailed(FriendlyException exception) { + //channel.sendMessage("Could not play: " + exception.getMessage()).queue(); + } + }); + } + } + super.onGuildVoiceJoin(event); } @@ -287,4 +345,18 @@ public class BotListener extends ListenerAdapter{ } } + /** + * Checks the string for some reason to enable/disable a setting. + * @param value A string (probably read in from config file) + * @return True if it matches a value to enable, False otherwise + */ + private static boolean settingEnableCheck(String value) { + if(value.contentEquals("true") || value.contentEquals("1") || + value.contentEquals("yes") || value.contentEquals("on") || + value.contentEquals("enable")) + return true; + else + return false; + } + } |