Search in sources :

Example 1 with Track

use of com.arsenarsen.lavaplayerbridge.player.Track in project FlareBot by FlareBot.

the class DebugCommand method onCommand.

@Override
public void onCommand(User sender, GuildWrapper guild, TextChannel channel, Message message, String[] args, Member member) {
    if (args.length < 1) {
        MessageUtils.sendUsage(this, channel, sender, args);
        return;
    }
    FlareBot fb = FlareBot.instance();
    EmbedBuilder eb = MessageUtils.getEmbed();
    if (args[0].equalsIgnoreCase("flarebot") || args[0].equalsIgnoreCase("bot")) {
        eb.setTitle("Bot Debug").setDescription(String.format("Debug for FlareBot v" + FlareBot.getVersion() + "\nUptime: %s" + "\nMemory Usage: %s" + "\nMemory Free: %s" + "\nVideo Threads: %d" + "\nCommand Threads: %d" + "\nTotal Threads: %d" + "\n\nGuilds: %d" + "\nLoaded Guilds: %d" + "\nVoice Channels: %d" + "\nActive Voice Channels: %d" + "\nCommands Executed: %d" + "\nQueued RestActions: %s", fb.getUptime(), getMB(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()), getMB(Runtime.getRuntime().freeMemory()), VideoThread.VIDEO_THREADS.activeCount(), Events.COMMAND_THREADS.activeCount(), Thread.getAllStackTraces().size(), fb.getShardManager().getGuildCache().size(), FlareBotManager.instance().getGuilds().size(), Getters.getConnectedVoiceChannels(), Getters.getActiveVoiceChannels(), fb.getEvents().getCommandCount(), getQueuedRestActions()));
        StringBuilder sb = new StringBuilder();
        for (DataInterceptor interceptor : DataInterceptor.getInterceptors()) sb.append(WordUtils.capitalize(interceptor.getSender().getName())).append(" - ").append(interceptor.getRequests()).append(" requests").append("\n");
        eb.addField("HTTP Requests", sb.toString(), false);
    } else if (args[0].equalsIgnoreCase("threads")) {
        eb.setTitle("Thread Debug").setDescription(String.format("Video Threads: %d" + "\nCommand Threads: %d" + "\nTotal Threads: %d" + "\nThread list: %s", VideoThread.VIDEO_THREADS.activeCount(), Events.COMMAND_THREADS.activeCount(), Thread.getAllStackTraces().size(), MessageUtils.paste(Thread.getAllStackTraces().keySet().stream().map(th -> th.getName() + " - " + th.getState() + " (" + th.getThreadGroup().getName() + ")").collect(Collectors.joining("\n")))));
    } else if (args[0].equalsIgnoreCase("server") || args[0].equalsIgnoreCase("guild")) {
    } else if (args[0].equalsIgnoreCase("player") || args[0].equalsIgnoreCase("music")) {
        GuildWrapper wrapper = guild;
        if (args.length == 2)
            wrapper = FlareBotManager.instance().getGuild(args[1]);
        if (wrapper == null) {
            channel.sendMessage("I can't find that guild!").queue();
            return;
        }
        Player player = FlareBot.instance().getMusicManager().getPlayer(wrapper.getGuildId());
        VoiceChannel vc = (wrapper.getGuild().getSelfMember().getVoiceState() != null && wrapper.getGuild().getSelfMember().getVoiceState().getChannel() != null ? wrapper.getGuild().getSelfMember().getVoiceState().getChannel() : null);
        String lastActive = "Not tracked.";
        if (VoiceChannelCleanup.VC_LAST_USED.containsKey(vc != null ? vc.getIdLong() : guild.getGuildIdLong())) {
            long ms = VoiceChannelCleanup.VC_LAST_USED.get(vc != null ? vc.getIdLong() : guild.getGuildIdLong());
            lastActive = String.valueOf(ms) + " (" + (System.currentTimeMillis() - ms) + "ms ago)";
        }
        boolean isPlaying = player.getPlayingTrack() != null;
        Track track = player.getPlayingTrack();
        eb.setTitle("Bot Debug").setDescription(String.format("Player Debug for `" + wrapper.getGuildId() + "`" + "\nCurrent Track: %s" + "\nCurrent Position: %s" + "\nIs Paused: %b" + "\nPlaylist Length: %s" + "\nIs Looping: %b" + "\nVoice Channel: %s" + "\nLast Active: %s", (isPlaying ? track.getTrack().getIdentifier() : "No current track"), (isPlaying ? track.getTrack().getPosition() + "/" + track.getTrack().getDuration() : "N/A"), player.getPaused(), player.getPlaylist().size(), player.getLooping(), (vc == null ? "null" : vc.toString()), lastActive));
    } else {
        channel.sendMessage("Invalid debug option").queue();
        return;
    }
    channel.sendMessage(eb.build()).queue();
}
Also used : Track(com.arsenarsen.lavaplayerbridge.player.Track) VoiceChannel(net.dv8tion.jda.core.entities.VoiceChannel) WordUtils(org.apache.commons.lang3.text.WordUtils) Member(net.dv8tion.jda.core.entities.Member) TextChannel(net.dv8tion.jda.core.entities.TextChannel) VoiceChannelCleanup(stream.flarebot.flarebot.tasks.VoiceChannelCleanup) Player(com.arsenarsen.lavaplayerbridge.player.Player) FlareBot(stream.flarebot.flarebot.FlareBot) VideoThread(stream.flarebot.flarebot.music.VideoThread) GuildWrapper(stream.flarebot.flarebot.objects.GuildWrapper) Collectors(java.util.stream.Collectors) Message(net.dv8tion.jda.core.entities.Message) Getters(stream.flarebot.flarebot.Getters) InternalCommand(stream.flarebot.flarebot.commands.InternalCommand) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) Events(stream.flarebot.flarebot.Events) JDAImpl(net.dv8tion.jda.core.entities.impl.JDAImpl) User(net.dv8tion.jda.core.entities.User) FlareBotManager(stream.flarebot.flarebot.FlareBotManager) DataInterceptor(stream.flarebot.flarebot.web.DataInterceptor) MessageUtils(stream.flarebot.flarebot.util.MessageUtils) CommandType(stream.flarebot.flarebot.commands.CommandType) GuildWrapper(stream.flarebot.flarebot.objects.GuildWrapper) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) Player(com.arsenarsen.lavaplayerbridge.player.Player) DataInterceptor(stream.flarebot.flarebot.web.DataInterceptor) FlareBot(stream.flarebot.flarebot.FlareBot) VoiceChannel(net.dv8tion.jda.core.entities.VoiceChannel) Track(com.arsenarsen.lavaplayerbridge.player.Track)

Example 2 with Track

use of com.arsenarsen.lavaplayerbridge.player.Track in project FlareBot by FlareBot.

the class QueueListener method sendQueueData.

private void sendQueueData(List<Track> tracks) {
    JsonArray array = new JsonArray();
    for (Track t : tracks) {
        JsonObject object = new JsonObject();
        object.addProperty("title", t.getTrack().getInfo().title);
        object.addProperty("id", t.getTrack().getIdentifier());
        array.add(object);
    }
// FlareBot.getInstance().postToApi("updatePlaylistData", "playlist", array);
}
Also used : JsonArray(com.google.gson.JsonArray) JsonObject(com.google.gson.JsonObject) Track(com.arsenarsen.lavaplayerbridge.player.Track)

Example 3 with Track

use of com.arsenarsen.lavaplayerbridge.player.Track in project FlareBot by FlareBot.

the class DebugCommand method onCommand.

@Override
public void onCommand(User sender, GuildWrapper guild, TextChannel channel, Message message, String[] args, Member member) {
    if (args.length < 1) {
        MessageUtils.sendUsage(this, channel, sender, args);
        return;
    }
    FlareBot fb = FlareBot.instance();
    EmbedBuilder eb = MessageUtils.getEmbed();
    if (args[0].equalsIgnoreCase("flarebot") || args[0].equalsIgnoreCase("bot")) {
        eb.setTitle("Bot Debug").setDescription(String.format("Debug for FlareBot v" + FlareBot.getVersion() + "\nUptime: %s" + "\nMemory Usage: %s" + "\nMemory Free: %s" + "\nVideo Threads: %d" + "\nCommand Threads: %d" + "\nTotal Threads: %d" + "\n\nGuilds: %d" + "\nLoaded Guilds: %d" + "\nVoice Channels: %d" + "\nActive Voice Channels: %d" + "\nCommands Executed: %d" + "\nQueued RestActions: %s", fb.getUptime(), getMB(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()), getMB(Runtime.getRuntime().freeMemory()), VideoThread.VIDEO_THREADS.activeCount(), Events.COMMAND_THREADS.activeCount(), Thread.getAllStackTraces().size(), fb.getShardManager().getGuildCache().size(), FlareBotManager.instance().getGuilds().size(), Getters.getConnectedVoiceChannels(), Getters.getActiveVoiceChannels(), fb.getEvents().getCommandCount(), getQueuedRestActions()));
        StringBuilder sb = new StringBuilder();
        for (DataInterceptor interceptor : DataInterceptor.getInterceptors()) sb.append(WordUtils.capitalize(interceptor.getSender().getName())).append(" - ").append(interceptor.getRequests()).append(" requests").append("\n");
        eb.addField("HTTP Requests", sb.toString(), false);
    } else if (args[0].equalsIgnoreCase("threads")) {
        eb.setTitle("Thread Debug").setDescription(String.format("Video Threads: %d" + "\nCommand Threads: %d" + "\nTotal Threads: %d" + "\nThread list: %s", VideoThread.VIDEO_THREADS.activeCount(), Events.COMMAND_THREADS.activeCount(), Thread.getAllStackTraces().size(), MessageUtils.paste(Thread.getAllStackTraces().keySet().stream().map(th -> th.getName() + " - " + th.getState() + " (" + th.getThreadGroup().getName() + ")").collect(Collectors.joining("\n")))));
    } else if (args[0].equalsIgnoreCase("server") || args[0].equalsIgnoreCase("guild")) {
        GuildWrapper wrapper = guild;
        if (args.length == 2)
            wrapper = FlareBotManager.instance().getGuild(args[1]);
        if (wrapper == null) {
            channel.sendMessage("I can't find that guild!").queue();
            return;
        }
        eb.setTitle("Server Debug").setDescription(String.format("Debug for " + wrapper.getGuildIdLong() + "\nData Ver: %s (%s)" + "\nPrefix: %s" + "\nBlocked: %b" + "\nBeta: %b" + "\nWelcomes: %b/%b" + "\nNINO: %b" + "\nSong nick: %b" + "\nPerms: %s" + "\nMute role: %s" + "\nsettings: %s" + "\n\nFor full guild data do `_guild data " + wrapper.getGuildIdLong() + "`", wrapper.dataVersion, GuildWrapper.DATA_VERSION, MessageUtils.escapeMarkdown(String.valueOf(wrapper.getPrefix())), wrapper.isBlocked(), wrapper.getBetaAccess(), wrapper.getWelcome().isGuildEnabled(), wrapper.getWelcome().isDmEnabled(), wrapper.getNINO().isEnabled(), wrapper.isSongnickEnabled(), MessageUtils.paste(FlareBot.GSON.toJson(wrapper.getPermissions())), wrapper.getMutedRole(), wrapper.getSettings().toString()));
    } else if (args[0].equalsIgnoreCase("player") || args[0].equalsIgnoreCase("music")) {
        GuildWrapper wrapper = guild;
        if (args.length == 2)
            wrapper = FlareBotManager.instance().getGuild(args[1]);
        if (wrapper == null) {
            channel.sendMessage("I can't find that guild!").queue();
            return;
        }
        Player player = FlareBot.instance().getMusicManager().getPlayer(wrapper.getGuildId());
        AudioManager manager = wrapper.getGuild().getAudioManager();
        @Nullable VoiceChannel vc = manager.getConnectedChannel();
        String lastActive = "Not tracked.";
        if (VoiceChannelCleanup.VC_LAST_USED.containsKey(vc != null ? vc.getIdLong() : guild.getGuildIdLong())) {
            long ms = VoiceChannelCleanup.VC_LAST_USED.get(vc != null ? vc.getIdLong() : guild.getGuildIdLong());
            lastActive = String.valueOf(ms) + " (" + (System.currentTimeMillis() - ms) + "ms ago)";
        }
        boolean isPlaying = player.getPlayingTrack() != null;
        Track track = player.getPlayingTrack();
        eb.setTitle("Bot Debug").setDescription(String.format("Player Debug for `" + wrapper.getGuildId() + "`" + "\nCurrent Track: %s" + "\nCurrent Position: %s" + "\nIs Paused: %b" + "\nPlaylist Length: %s" + "\nIs Looping: %b" + "\nConnecting: %b" + "\nVoice Channel: %s" + "\nConnection State: %s" + "\nLast Active: %s", (isPlaying ? track.getTrack().getIdentifier() : "No current track"), (isPlaying ? track.getTrack().getPosition() + "/" + track.getTrack().getDuration() : "N/A"), player.getPaused(), player.getPlaylist().size(), player.getLooping(), manager.isAttemptingToConnect(), (vc == null ? "null" : vc.toString()), manager.getConnectionStatus().toString(), lastActive));
    } else {
        channel.sendMessage("Invalid debug option").queue();
        return;
    }
    channel.sendMessage(eb.build()).queue();
}
Also used : Track(com.arsenarsen.lavaplayerbridge.player.Track) VoiceChannel(net.dv8tion.jda.core.entities.VoiceChannel) WordUtils(org.apache.commons.lang3.text.WordUtils) Member(net.dv8tion.jda.core.entities.Member) TextChannel(net.dv8tion.jda.core.entities.TextChannel) VoiceChannelCleanup(stream.flarebot.flarebot.tasks.VoiceChannelCleanup) Player(com.arsenarsen.lavaplayerbridge.player.Player) FlareBot(stream.flarebot.flarebot.FlareBot) AudioManager(net.dv8tion.jda.core.managers.AudioManager) VideoThread(stream.flarebot.flarebot.music.VideoThread) GuildWrapper(stream.flarebot.flarebot.objects.GuildWrapper) Collectors(java.util.stream.Collectors) Message(net.dv8tion.jda.core.entities.Message) Getters(stream.flarebot.flarebot.Getters) InternalCommand(stream.flarebot.flarebot.commands.InternalCommand) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) Events(stream.flarebot.flarebot.Events) JDAImpl(net.dv8tion.jda.core.entities.impl.JDAImpl) User(net.dv8tion.jda.core.entities.User) FlareBotManager(stream.flarebot.flarebot.FlareBotManager) DataInterceptor(stream.flarebot.flarebot.web.DataInterceptor) MessageUtils(stream.flarebot.flarebot.util.MessageUtils) CommandType(stream.flarebot.flarebot.commands.CommandType) Nullable(javax.annotation.Nullable) GuildWrapper(stream.flarebot.flarebot.objects.GuildWrapper) AudioManager(net.dv8tion.jda.core.managers.AudioManager) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) Player(com.arsenarsen.lavaplayerbridge.player.Player) DataInterceptor(stream.flarebot.flarebot.web.DataInterceptor) FlareBot(stream.flarebot.flarebot.FlareBot) VoiceChannel(net.dv8tion.jda.core.entities.VoiceChannel) Track(com.arsenarsen.lavaplayerbridge.player.Track)

Example 4 with Track

use of com.arsenarsen.lavaplayerbridge.player.Track in project FlareBot by FlareBot.

the class RepeatCommand method onCommand.

@Override
public void onCommand(User sender, GuildWrapper guild, TextChannel channel, Message message, String[] args, Member member) {
    Player player = FlareBot.instance().getMusicManager().getPlayer(channel.getGuild().getId());
    if (player.getPlayingTrack() == null) {
        MessageUtils.sendErrorMessage("Can't repeat when their is no song to repeat!", channel);
    } else {
        Queue<Track> queue = new ConcurrentLinkedQueue<>();
        queue.add(player.getPlayingTrack().makeClone());
        queue.addAll(player.getPlaylist());
        player.getPlaylist().clear();
        player.getPlaylist().addAll(queue);
        channel.sendMessage(new EmbedBuilder().setColor(Color.green).setDescription("The player will now repeat the current track!").build()).queue();
    }
}
Also used : Player(com.arsenarsen.lavaplayerbridge.player.Player) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) ConcurrentLinkedQueue(java.util.concurrent.ConcurrentLinkedQueue) Track(com.arsenarsen.lavaplayerbridge.player.Track)

Example 5 with Track

use of com.arsenarsen.lavaplayerbridge.player.Track in project FlareBot by FlareBot.

the class SaveCommand method onCommand.

@Override
public void onCommand(User sender, GuildWrapper guild, TextChannel channel, Message message, String[] args, Member member) {
    if (args.length == 0) {
        MessageUtils.sendUsage(this, channel, sender, args);
        return;
    }
    String name = MessageUtils.getMessage(args, 0);
    if (name.length() > 20) {
        MessageUtils.sendErrorMessage("Name can only be a maximum of 20 characters!", channel);
        return;
    }
    if (!FlareBot.instance().getMusicManager().hasPlayer(channel.getGuild().getId())) {
        MessageUtils.sendErrorMessage("Your playlist is empty!", channel);
        return;
    }
    Queue<Track> playlist = FlareBot.instance().getMusicManager().getPlayer(guild.getGuildId()).getPlaylist();
    Track currentlyPlaying = FlareBot.instance().getMusicManager().getPlayer(guild.getGuildId()).getPlayingTrack();
    channel.sendTyping().complete();
    List<String> tracks = playlist.stream().map(track -> track.getTrack().getIdentifier()).collect(Collectors.toList());
    if (currentlyPlaying != null) {
        tracks.add(currentlyPlaying.getTrack().getIdentifier());
    }
    if (tracks.isEmpty()) {
        MessageUtils.sendErrorMessage("Your playlist is empty!", channel);
        return;
    }
    FlareBot.instance().getManager().savePlaylist(this, channel, sender.getId(), this.getPermissions(channel).hasPermission(member, Permission.SAVE_OVERWRITE), name, tracks);
}
Also used : Track(com.arsenarsen.lavaplayerbridge.player.Track) Member(net.dv8tion.jda.core.entities.Member) TextChannel(net.dv8tion.jda.core.entities.TextChannel) FlareBot(stream.flarebot.flarebot.FlareBot) GuildWrapper(stream.flarebot.flarebot.objects.GuildWrapper) Collectors(java.util.stream.Collectors) Message(net.dv8tion.jda.core.entities.Message) List(java.util.List) Permission(stream.flarebot.flarebot.permissions.Permission) User(net.dv8tion.jda.core.entities.User) Command(stream.flarebot.flarebot.commands.Command) MessageUtils(stream.flarebot.flarebot.util.MessageUtils) Queue(java.util.Queue) CommandType(stream.flarebot.flarebot.commands.CommandType) Track(com.arsenarsen.lavaplayerbridge.player.Track)

Aggregations

Track (com.arsenarsen.lavaplayerbridge.player.Track)16 EmbedBuilder (net.dv8tion.jda.core.EmbedBuilder)7 Message (net.dv8tion.jda.core.entities.Message)6 TextChannel (net.dv8tion.jda.core.entities.TextChannel)6 User (net.dv8tion.jda.core.entities.User)6 GuildWrapper (stream.flarebot.flarebot.objects.GuildWrapper)6 MessageUtils (stream.flarebot.flarebot.util.MessageUtils)6 ArrayList (java.util.ArrayList)5 Member (net.dv8tion.jda.core.entities.Member)5 FlareBot (stream.flarebot.flarebot.FlareBot)5 PlayerManager (com.arsenarsen.lavaplayerbridge.PlayerManager)4 Player (com.arsenarsen.lavaplayerbridge.player.Player)4 AudioTrack (com.sedmelluq.discord.lavaplayer.track.AudioTrack)4 Collectors (java.util.stream.Collectors)4 CommandType (stream.flarebot.flarebot.commands.CommandType)4 List (java.util.List)3 Getters (stream.flarebot.flarebot.Getters)3 Permission (stream.flarebot.flarebot.permissions.Permission)3 Playlist (com.arsenarsen.lavaplayerbridge.player.Playlist)2 FriendlyException (com.sedmelluq.discord.lavaplayer.tools.FriendlyException)2