Search in sources :

Example 6 with Track

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

the class SongNickCommand method onCommand.

@Override
public void onCommand(User sender, GuildWrapper guild, TextChannel channel, Message message, String[] args, Member member) {
    if (guild.isSongnickEnabled()) {
        guild.setSongnick(false);
        if (GuildUtils.canChangeNick(guild.getGuildId()))
            channel.getGuild().getController().setNickname(channel.getGuild().getSelfMember(), null).queue();
        MessageUtils.sendSuccessMessage("Disabled changing nickname with song!", channel, sender);
    } else {
        if (!GuildUtils.canChangeNick(guild.getGuildId())) {
            MessageUtils.sendErrorMessage("FlareBot can't change it's nickname so SongNick hasn't been enabled", channel);
            return;
        }
        guild.setSongnick(true);
        if (FlareBot.instance().getMusicManager().getPlayer(guild.getGuildId()).getPlayingTrack() != null) {
            Track track = FlareBot.instance().getMusicManager().getPlayer(guild.getGuildId()).getPlayingTrack();
            String str = null;
            if (track != null) {
                str = track.getTrack().getInfo().title;
                if (str.length() > 32)
                    str = str.substring(0, 32);
                str = str.substring(0, str.lastIndexOf(' ') + 1);
            }
            // Even I couldn't make this a one-liner
            guild.getGuild().getController().setNickname(guild.getGuild().getSelfMember(), str).queue();
        }
        MessageUtils.sendSuccessMessage("Enabled changing nickname with song!", channel, sender);
    }
}
Also used : Track(com.arsenarsen.lavaplayerbridge.player.Track)

Example 7 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 8 with Track

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

the class YouTubeExtractor method process.

@Override
public void process(String input, Player player, Message message, User user) throws Exception {
    AudioItem item;
    try {
        item = GeneralUtils.resolveItem(player, input);
    } catch (IllegalArgumentException e) {
        MessageUtils.editMessage(null, MessageUtils.getEmbed(user).setDescription("Could not get that video/playlist! Make sure the URL is correct!").setColor(Color.RED), message);
        return;
    } catch (IllegalStateException e) {
        if (e.getMessage().contains("Vevo")) {
            MessageUtils.editMessage(null, MessageUtils.getEmbed(user).setDescription("We are blocked from playing this video as it is from Vevo! " + "Sorry for any inconvenience.").setColor(Color.RED), message);
            return;
        }
        MessageUtils.editMessage(null, MessageUtils.getEmbed(user).setDescription("There was a problem with that video!\n" + "If the error continues, join our support discord: " + Constants.INVITE_URL + "\n" + "Input: " + input + "\n" + "Error Message: " + e.getMessage() + "\n" + "Stacktrace: " + MessageUtils.paste(GeneralUtils.getStackTrace(e))).setColor(Color.RED), message);
        return;
    }
    List<AudioTrack> audioTracks = new ArrayList<>();
    String name;
    if (item instanceof AudioPlaylist) {
        AudioPlaylist audioPlaylist = (AudioPlaylist) item;
        audioTracks.addAll(audioPlaylist.getTracks());
        name = audioPlaylist.getName();
    } else {
        AudioTrack track = (AudioTrack) item;
        /*if (track.getInfo().length == 0 || track.getInfo().isStream) {
                EmbedBuilder builder = MessageUtils.getEmbed(user).setDescription("Cannot queue a livestream!");
                MessageUtils.editMessage(null, builder, message);
                return;
            }*/
        audioTracks.add(track);
        name = track.getInfo().title;
        if (track.getInfo().identifier.equals("dQw4w9WgXcQ") && (random.nextInt(1000) + 1) == 1000) {
            GeneralUtils.sendImage("https://flarebot.stream/img/rick_roll.jpg", "rick_roll.jpg", user);
            Constants.logEG("You can't rick roll me!", null, message.getGuild(), user);
        }
    }
    if (name != null) {
        List<Track> tracks = audioTracks.stream().map(Track::new).peek(track -> {
            track.getMeta().put("requester", user.getId());
            track.getMeta().put("guildId", player.getGuildId());
        }).collect(Collectors.toList());
        if (tracks.size() > 1) {
            // Double `if` https://giphy.com/gifs/ng1xAzwIkDgfm
            Playlist p = new Playlist(tracks);
            player.queue(p);
        } else {
            player.queue(tracks.get(0));
        }
        EmbedBuilder builder = MessageUtils.getEmbed(user);
        builder.setDescription(String.format("%s added the %s [`%s`](%s)", user.getAsMention(), audioTracks.size() == 1 ? "song" : "playlist", name.replace("`", "'"), input));
        if (audioTracks.size() > 1)
            builder.addField("Song count:", String.valueOf(audioTracks.size()), true);
        MessageUtils.editMessage(null, builder, message);
    }
}
Also used : Color(java.awt.Color) Track(com.arsenarsen.lavaplayerbridge.player.Track) Player(com.arsenarsen.lavaplayerbridge.player.Player) Random(java.util.Random) AudioPlaylist(com.sedmelluq.discord.lavaplayer.track.AudioPlaylist) GeneralUtils(stream.flarebot.flarebot.util.general.GeneralUtils) Collectors(java.util.stream.Collectors) Message(net.dv8tion.jda.core.entities.Message) AudioItem(com.sedmelluq.discord.lavaplayer.track.AudioItem) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) ArrayList(java.util.ArrayList) Playlist(com.arsenarsen.lavaplayerbridge.player.Playlist) List(java.util.List) User(net.dv8tion.jda.core.entities.User) YoutubeAudioSourceManager(com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioSourceManager) AudioSourceManager(com.sedmelluq.discord.lavaplayer.source.AudioSourceManager) AudioTrack(com.sedmelluq.discord.lavaplayer.track.AudioTrack) Constants(stream.flarebot.flarebot.util.Constants) MessageUtils(stream.flarebot.flarebot.util.MessageUtils) ArrayList(java.util.ArrayList) AudioItem(com.sedmelluq.discord.lavaplayer.track.AudioItem) AudioPlaylist(com.sedmelluq.discord.lavaplayer.track.AudioPlaylist) Playlist(com.arsenarsen.lavaplayerbridge.player.Playlist) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) AudioTrack(com.sedmelluq.discord.lavaplayer.track.AudioTrack) Track(com.arsenarsen.lavaplayerbridge.player.Track) AudioTrack(com.sedmelluq.discord.lavaplayer.track.AudioTrack) AudioPlaylist(com.sedmelluq.discord.lavaplayer.track.AudioPlaylist)

Example 9 with Track

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

the class RandomExtractor method process.

@Override
public void process(String input, Player player, Message message, User user) throws Exception {
    int i = 0;
    for (String s : input.split(",")) {
        try {
            AudioItem probablyATrack = player.resolve(s);
            if (probablyATrack == null)
                continue;
            Track track = new Track((AudioTrack) probablyATrack);
            track.getMeta().put("requester", user.getId());
            track.getMeta().put("guildId", player.getGuildId());
            player.queue(track);
            i++;
        } catch (FriendlyException ignored) {
        }
    }
    MessageUtils.editMessage(null, MessageUtils.getEmbed().setDescription("Added " + i + " random songs to the playlist!"), message);
}
Also used : AudioItem(com.sedmelluq.discord.lavaplayer.track.AudioItem) Track(com.arsenarsen.lavaplayerbridge.player.Track) AudioTrack(com.sedmelluq.discord.lavaplayer.track.AudioTrack) FriendlyException(com.sedmelluq.discord.lavaplayer.tools.FriendlyException)

Example 10 with Track

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

the class SavedPlaylistExtractor method process.

@Override
public void process(String input, Player player, Message message, User user) throws Exception {
    input = input.substring(input.indexOf('\u200B') + 1).replaceAll("\\[? ?]?", "");
    int i = 0;
    ArrayList<Track> playlist = new ArrayList<>();
    for (String s : input.split(",")) {
        String url = YouTubeExtractor.WATCH_URL + s;
        Document doc;
        try {
            doc = Jsoup.connect(url).get();
        } catch (Exception e) {
            continue;
        }
        if (!doc.title().endsWith("YouTube") || doc.title().equals("YouTube")) {
            continue;
        }
        try {
            Track track = new Track((AudioTrack) player.resolve(url));
            track.getMeta().put("requester", user.getId());
            track.getMeta().put("guildId", player.getGuildId());
            playlist.add(track);
            if (playlist.size() == 10) {
                player.queue(new Playlist(playlist));
                playlist.clear();
            }
            i++;
        } catch (FriendlyException ignored) {
        }
    }
    if (!playlist.isEmpty()) {
        player.queue(new Playlist(playlist));
    }
    MessageUtils.editMessage(null, MessageUtils.getEmbed(user).setDescription(String.format("*Loaded %s songs!*", i)), message);
}
Also used : Playlist(com.arsenarsen.lavaplayerbridge.player.Playlist) ArrayList(java.util.ArrayList) Document(org.jsoup.nodes.Document) Track(com.arsenarsen.lavaplayerbridge.player.Track) AudioTrack(com.sedmelluq.discord.lavaplayer.track.AudioTrack) FriendlyException(com.sedmelluq.discord.lavaplayer.tools.FriendlyException) FriendlyException(com.sedmelluq.discord.lavaplayer.tools.FriendlyException)

Aggregations

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