use of com.discordbolt.api.command.exceptions.CommandStateException in project BoltBot by DiscordBolt.
the class PlaylistCommand method playlistViewCommand.
@BotCommand(command = { "playlist", "view" }, module = MusicModule.MODULE, aliases = "pl", allowPM = true, description = "View a playlist's details", usage = "Playlist view {name}", allowedChannels = "music", minArgs = 2, maxArgs = 100)
public static void playlistViewCommand(CommandContext cc) throws CommandException {
if (cc.getArgCount() == 2) {
Playlist playlist = MusicModule.getPlaylistManager().getSelectedPlaylist(cc.getAuthor().getLongID());
if (playlist == null)
throw new CommandStateException(NO_PLAYLIST_SELECTED);
cc.replyWith(playlist.toEmbed());
} else {
Optional<Playlist> playlist = MusicModule.getPlaylistManager().getPlaylist(getPlaylistName(cc));
if (!playlist.isPresent())
throw new CommandArgumentException(NO_SUCH_PLAYLIST);
cc.replyWith(playlist.get().toEmbed());
}
}
use of com.discordbolt.api.command.exceptions.CommandStateException in project BoltBot by DiscordBolt.
the class PlaylistCommand method playlistShareCommand.
@BotCommand(command = { "playlist", "share" }, module = MusicModule.MODULE, aliases = "pl", allowPM = true, description = "Give another user access to add/remove songs", usage = "Playlist share [@User]", allowedChannels = "music", args = 3)
public static void playlistShareCommand(CommandContext cc) throws CommandException {
Playlist selectedPlaylist = MusicModule.getPlaylistManager().getSelectedPlaylist(cc.getAuthor().getLongID());
if (selectedPlaylist == null)
throw new CommandStateException(NO_PLAYLIST_SELECTED);
if (cc.getMessage().getMentions().size() != 1) {
cc.sendUsage();
return;
}
selectedPlaylist.addContributor(cc.getAuthor(), cc.getMessage().getMentions().get(0));
cc.replyWith("Successfully added " + cc.getMessage().getMentions().get(0).getName() + " as a contributor to playlist " + selectedPlaylist.getTitle());
}
use of com.discordbolt.api.command.exceptions.CommandStateException in project BoltBot by DiscordBolt.
the class QueueCommand method queueCommand.
@BotCommand(command = "queue", module = MusicModule.MODULE, description = "Show the currently queued songs", usage = "Queue", allowedChannels = "music", args = 1)
public static void queueCommand(CommandContext cc) throws CommandException {
List<AudioTrack> queue = MusicModule.getVoiceManager().getQueue(cc.getGuild());
AudioTrack nowPlaying = MusicModule.getVoiceManager().getNowPlaying(cc.getGuild());
if (nowPlaying == null)
throw new CommandStateException("The queue is empty! Play something with !Play");
final long totalTime = MusicModule.getVoiceManager().getQueue(cc.getGuild()).stream().map(AudioTrack::getDuration).reduce(0L, (x, y) -> x + y) + MusicModule.getVoiceManager().getNowPlaying(cc.getGuild()).getDuration();
EmbedBuilder embed = new EmbedBuilder();
embed.withTitle(":clock1030: Queue Length");
embed.withDescription(TimeUtil.getFormattedTime(totalTime));
embed.withColor(MusicModule.EMBED_COLOR);
StringBuilder songs = new StringBuilder();
int i = 2;
songs.append("***1. ").append(nowPlaying.getInfo().title).append("***").append('\n');
for (AudioTrack audioTrack : queue) {
if ((songs.length() + audioTrack.getInfo().title.length()) >= 975 && (i - 1) < queue.size()) {
songs.append("\n");
songs.append(" ***... and ").append(queue.size() - (i - 1)).append(" more***");
break;
}
songs.append(i++).append(". ").append(audioTrack.getInfo().title).append('\n');
}
embed.appendField(":arrow_forward: Now Playing", songs.length() > 1 ? songs.toString() : "\n", true);
cc.replyWith(embed.build());
}
use of com.discordbolt.api.command.exceptions.CommandStateException in project BoltBot by DiscordBolt.
the class Playlist method removeSong.
public void removeSong(IUser requester, AudioTrack track) throws CommandStateException, CommandPermissionException {
if (!(ownerID.equals(requester.getLongID()) || contributors.contains(requester.getLongID())))
throw new CommandPermissionException("You are not allowed to remove songs from " + this.getTitle() + ".");
if (!songs.containsValue(track.getInfo().title))
throw new CommandStateException("That song is not in this playlist!");
songs.values().remove(track.getInfo().title);
PlaylistManager.writePlaylistFile(this);
}
use of com.discordbolt.api.command.exceptions.CommandStateException in project BoltBot by DiscordBolt.
the class Playlist method removeSong.
public void removeSong(IUser requester, String songID) throws CommandStateException, CommandPermissionException {
if (!(ownerID.equals(requester.getLongID()) || contributors.contains(requester.getLongID())))
throw new CommandPermissionException("You are not allowed to remove songs from " + this.getTitle() + ".");
if (!songs.containsKey(songID))
throw new CommandStateException("That song is not in this playlist!");
songs.remove(songID);
PlaylistManager.writePlaylistFile(this);
}
Aggregations