Added playnow command to play a song immediately.
This commit is contained in:
parent
b33762f80d
commit
62988e9a40
|
@ -0,0 +1,79 @@
|
||||||
|
package handiebot.command.commands.music;
|
||||||
|
|
||||||
|
import com.google.api.services.youtube.model.Video;
|
||||||
|
import handiebot.HandieBot;
|
||||||
|
import handiebot.command.CommandContext;
|
||||||
|
import handiebot.command.ReactionHandler;
|
||||||
|
import handiebot.command.reactionListeners.YoutubeChoiceListener;
|
||||||
|
import handiebot.command.types.ContextCommand;
|
||||||
|
import handiebot.lavaplayer.TrackScheduler;
|
||||||
|
import handiebot.lavaplayer.playlist.UnloadedTrack;
|
||||||
|
import handiebot.utils.MessageUtils;
|
||||||
|
import handiebot.utils.YoutubeSearch;
|
||||||
|
import sx.blah.discord.handle.obj.IMessage;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static handiebot.HandieBot.resourceBundle;
|
||||||
|
import static handiebot.utils.MessageUtils.sendMessage;
|
||||||
|
import static handiebot.utils.YoutubeSearch.WATCH_URL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Andrew Lalis
|
||||||
|
* Command to make a song play immediately.
|
||||||
|
*/
|
||||||
|
public class PlayNowCommand extends ContextCommand {
|
||||||
|
//TODO: Externalize strings.
|
||||||
|
public PlayNowCommand() {
|
||||||
|
super("playnow",
|
||||||
|
"<URL,QUERY>",
|
||||||
|
resourceBundle.getString("commands.command.playnow.description"),
|
||||||
|
8);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute(CommandContext context) {
|
||||||
|
if (context.getArgs().length < 1){
|
||||||
|
sendMessage("You must provide a URL or series of words to search.", context.getChannel());
|
||||||
|
}
|
||||||
|
if (context.getArgs()[0].startsWith("http")) {
|
||||||
|
//The user has given only a URL.
|
||||||
|
try {
|
||||||
|
playTrackNow(new UnloadedTrack(context.getArgs()[0]), context);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
sendMessage("Unable to load the song.", context.getChannel());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//The user has given a search query.
|
||||||
|
List<Video> videos = YoutubeSearch.query(MessageUtils.getTextFromArgs(context.getArgs(), 0));
|
||||||
|
if (videos != null) {
|
||||||
|
List<String> urls = new ArrayList<>(videos.size());
|
||||||
|
videos.forEach((video) -> urls.add(WATCH_URL+video.getId()));
|
||||||
|
IMessage message = YoutubeSearch.displayChoicesDialog(videos, context.getChannel());
|
||||||
|
ReactionHandler.addListener(new YoutubeChoiceListener(message, context.getUser(), urls) {
|
||||||
|
@Override
|
||||||
|
protected void onChoice(int choice) {
|
||||||
|
try {
|
||||||
|
playTrackNow(new UnloadedTrack(urls.get(choice)), context);
|
||||||
|
} catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Plays an unloaded track immediately.
|
||||||
|
* @param track The unloaded track.
|
||||||
|
* @param context The context of the action.
|
||||||
|
*/
|
||||||
|
private void playTrackNow(UnloadedTrack track, CommandContext context){
|
||||||
|
TrackScheduler scheduler = HandieBot.musicPlayer.getMusicManager(context.getGuild()).scheduler;
|
||||||
|
scheduler.getActivePlaylist().getTracks().add(0, track);
|
||||||
|
scheduler.nextTrack();
|
||||||
|
}
|
||||||
|
}
|
|
@ -49,6 +49,7 @@ commands.command.setPrefix.changed=Changed command prefix to "{0}"
|
||||||
commands.command.setPrefix.noPrefixError=You must provide a new prefix.
|
commands.command.setPrefix.noPrefixError=You must provide a new prefix.
|
||||||
commands.command.play.description=Plays a song, or adds it to the queue.
|
commands.command.play.description=Plays a song, or adds it to the queue.
|
||||||
commands.command.play.songAddError=Unable to add song to queue: {0}.
|
commands.command.play.songAddError=Unable to add song to queue: {0}.
|
||||||
|
commands.command.playnow.description=Plays a song immediately, and skips any currently playing song.
|
||||||
#Playlist strings.
|
#Playlist strings.
|
||||||
commands.command.playlist.description.main=Do actions to a playlist.
|
commands.command.playlist.description.main=Do actions to a playlist.
|
||||||
commands.command.playlist.description.create=Creates a playlist.
|
commands.command.playlist.description.create=Creates a playlist.
|
||||||
|
|
|
@ -134,5 +134,6 @@ commands.command.report.error=You must name a user in your report.
|
||||||
commands.command.queue.remove=Removed song(s) from the active queue.
|
commands.command.queue.remove=Removed song(s) from the active queue.
|
||||||
commands.command.queue.remove.error=You must give the index of a song to remove from the queue.
|
commands.command.queue.remove.error=You must give the index of a song to remove from the queue.
|
||||||
commands.command.queue.move.success=Moved song *{0}* from position {1} to position {2}.
|
commands.command.queue.move.success=Moved song *{0}* from position {1} to position {2}.
|
||||||
|
commands.command.playnow.description=Plays a song immediately, and skips any currently playing song.
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue