aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Kohls <mattkohls13@gmail.com>2018-06-30 18:01:00 -0400
committerMatt Kohls <mattkohls13@gmail.com>2018-06-30 18:01:00 -0400
commit8ef0634fff740d10668c80a0c57a35ff5e9f635c (patch)
treec7d5d15a6dd2cda63d94a1eac6fb33ab3e0c192c
parentc23f6622afe07fff1362494de8ce9890e7767a7e (diff)
downloadSoundChan-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.example3
-rw-r--r--src/main/java/soundchan/BotListener/BotListener.java76
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;
+ }
+
}