Search in sources :

Example 1 with ButtonGroup

use of stream.flarebot.flarebot.util.objects.ButtonGroup in project FlareBot by FlareBot.

the class VoteUtil method sendVoteMessage.

public static void sendVoteMessage(UUID id, VoteGroup.VoteRunnable voteRunnable, VoteGroup group, long timeout, TextChannel channel, User user, String buttonGroupString, ButtonGroup.Button... optionalButtons) {
    EmbedBuilder votesEmbed = new EmbedBuilder().setDescription("Vote to " + group.getMessageDesc()).addField("Yes", "0", true).addField("No", "0", true);
    String messageDesc = group.getMessageDesc();
    votesEmbed.setColor(ColorUtils.FLAREBOT_BLUE);
    group.setVotesEmbed(votesEmbed);
    ButtonGroup buttonGroup = new ButtonGroup(user.getIdLong(), buttonGroupString);
    groupMap.put(id + channel.getGuild().getId(), group);
    runnableMap.put(id + channel.getGuild().getId(), voteRunnable);
    buttonGroup.addButton(new ButtonGroup.Button(355776056092917761L, (owner, user1, message) -> {
        if (group.addVote(VoteGroup.Vote.YES, user1)) {
            MessageUtils.sendAutoDeletedMessage(new EmbedBuilder().setDescription("You voted yes on " + messageDesc).build(), 2000, channel);
        } else {
            MessageUtils.sendAutoDeletedMessage(new EmbedBuilder().setDescription("You cannot vote on " + messageDesc).build(), 2000, channel);
        }
    }));
    buttonGroup.addButton(new ButtonGroup.Button(355776081384570881L, (owner, user1, message) -> {
        if (group.addVote(VoteGroup.Vote.NO, user1)) {
            MessageUtils.sendAutoDeletedMessage(new EmbedBuilder().setDescription("You voted no on " + messageDesc).build(), 2000, channel);
        } else {
            MessageUtils.sendAutoDeletedMessage(new EmbedBuilder().setDescription("You cannot vote on " + messageDesc).build(), 2000, channel);
        }
    }));
    for (ButtonGroup.Button button : optionalButtons) {
        buttonGroup.addButton(button);
    }
    Message voteMessage = ButtonUtil.sendReturnedButtonedMessage(channel, votesEmbed.build(), buttonGroup);
    group.setVoteMessage(voteMessage);
    new FlareBotTask("Votes-" + voteMessage.getId()) {

        @Override
        public void run() {
            voteRunnable.run(group.won());
            groupMap.remove(group.getMessageDesc() + channel.getGuild().getId());
            runnableMap.remove(group.getMessageDesc() + channel.getGuild().getId());
            channel.deleteMessageById(voteMessage.getId()).queue();
        }
    }.delay(timeout);
}
Also used : ButtonGroup(stream.flarebot.flarebot.util.objects.ButtonGroup) FlareBotTask(stream.flarebot.flarebot.scheduler.FlareBotTask) TextChannel(net.dv8tion.jda.core.entities.TextChannel) ButtonUtil(stream.flarebot.flarebot.util.buttons.ButtonUtil) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) UUID(java.util.UUID) ColorUtils(stream.flarebot.flarebot.util.ColorUtils) Message(net.dv8tion.jda.core.entities.Message) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) Guild(net.dv8tion.jda.core.entities.Guild) User(net.dv8tion.jda.core.entities.User) Scheduler(stream.flarebot.flarebot.scheduler.Scheduler) Map(java.util.Map) MessageUtils(stream.flarebot.flarebot.util.MessageUtils) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) Message(net.dv8tion.jda.core.entities.Message) ButtonGroup(stream.flarebot.flarebot.util.objects.ButtonGroup) FlareBotTask(stream.flarebot.flarebot.scheduler.FlareBotTask)

Example 2 with ButtonGroup

use of stream.flarebot.flarebot.util.objects.ButtonGroup in project FlareBot by FlareBot.

the class PaginationUtil method sendPagedMessage.

/**
 * Sends a paged message
 *
 * @param textChannel The channel to send it to
 * @param list        The {@link PaginationList} to use
 * @param page        The starting page
 * @param sender      The member who requested the button
 */
public static void sendPagedMessage(TextChannel textChannel, PaginationList list, int page, User sender, String group) {
    if (page < 0 || page > list.getPages() - 1) {
        MessageUtils.sendErrorMessage("Invalid page: " + (page + 1) + " Total Pages: " + list.getPages(), textChannel);
        return;
    }
    Integer[] pages = new Integer[] { page };
    if (list.getPages() > 1) {
        ButtonGroup buttonGroup = new ButtonGroup(sender.getIdLong(), group);
        buttonGroup.addButton(new ButtonGroup.Button("\u23EE", (ownerID, user, message) -> {
            // Start
            pages[0] = 0;
            message.editMessage(list.getPage(pages[0])).queue();
        }));
        buttonGroup.addButton(new ButtonGroup.Button("\u23EA", (ownerID, user, message) -> {
            // Prev
            if (pages[0] != 0) {
                pages[0] -= 1;
                message.editMessage(list.getPage(pages[0])).queue();
            }
        }));
        buttonGroup.addButton(new ButtonGroup.Button("\u23E9", (ownerID, user, message) -> {
            // Next
            if (pages[0] + 1 != list.getPages()) {
                pages[0] += 1;
                message.editMessage(list.getPage(pages[0])).queue();
            }
        }));
        buttonGroup.addButton(new ButtonGroup.Button("\u23ED", (ownerID, user, message) -> {
            // Last
            pages[0] = list.getPages() - 1;
            message.editMessage(list.getPage(pages[0])).queue();
        }));
        buttonGroup.addButton(new ButtonGroup.Button("\u274C", (ownerID, user, message) -> {
            // Delete
            if (user.getIdLong() == ownerID || message.getGuild().getMember(user).hasPermission(Permission.MANAGE_PERMISSIONS)) {
                message.delete().queue(null, e -> {
                });
            } else {
                MessageUtils.sendErrorMessage("You need to be the sender or have the `Manage Messages` discord permission to do this!", (TextChannel) message.getChannel());
            }
        }));
        ButtonUtil.sendButtonedMessage(textChannel, list.getPage(page), buttonGroup);
    } else {
        textChannel.sendMessage(list.getPage(page)).queue();
    }
}
Also used : ButtonGroup(stream.flarebot.flarebot.util.objects.ButtonGroup) List(java.util.List) Permission(net.dv8tion.jda.core.Permission) User(net.dv8tion.jda.core.entities.User) TextChannel(net.dv8tion.jda.core.entities.TextChannel) ButtonUtil(stream.flarebot.flarebot.util.buttons.ButtonUtil) ArrayUtils(org.apache.commons.lang3.ArrayUtils) MessageUtils(stream.flarebot.flarebot.util.MessageUtils) ArrayList(java.util.ArrayList) TextChannel(net.dv8tion.jda.core.entities.TextChannel) ButtonGroup(stream.flarebot.flarebot.util.objects.ButtonGroup)

Example 3 with ButtonGroup

use of stream.flarebot.flarebot.util.objects.ButtonGroup in project FlareBot by FlareBot.

the class PaginationUtil method sendEmbedPagedMessage.

/**
 * Sends an embed paged message the to specified channel.
 * You can build with Embed with {@link PagedEmbedBuilder}.
 *
 * @param pagedEmbed The {@link stream.flarebot.flarebot.util.pagination.PagedEmbedBuilder.PagedEmbed} to use.
 * @param page       The page to start on (0 Indexed).
 * @param channel    The channel to send the paged message to.
 * @param sender     The user who requested the embed
 */
public static void sendEmbedPagedMessage(PagedEmbedBuilder.PagedEmbed pagedEmbed, int page, TextChannel channel, User sender, String group) {
    if (page < 0 || page > pagedEmbed.getPageTotal() - 1) {
        MessageUtils.sendErrorMessage("Invalid page: " + (page + 1) + " Total Pages: " + pagedEmbed.getPageTotal(), channel);
        return;
    }
    if (!pagedEmbed.isSinglePage()) {
        ButtonGroup buttonGroup = new ButtonGroup(sender.getIdLong(), group);
        Integer[] pages = new Integer[] { page };
        buttonGroup.addButton(new ButtonGroup.Button("\u23EE", (ownerID, user, message) -> {
            // Start
            pages[0] = 0;
            message.editMessage(pagedEmbed.getEmbed(pages[0])).queue();
        }));
        buttonGroup.addButton(new ButtonGroup.Button("\u23EA", (ownerID, user, message) -> {
            // Prev
            if (pages[0] != 0) {
                pages[0] -= 1;
                message.editMessage(pagedEmbed.getEmbed(pages[0])).queue();
            }
        }));
        buttonGroup.addButton(new ButtonGroup.Button("\u23E9", (ownerID, user, message) -> {
            // Next
            if (pages[0] + 1 != pagedEmbed.getPageTotal()) {
                pages[0] += 1;
                message.editMessage(pagedEmbed.getEmbed(pages[0])).queue();
            }
        }));
        buttonGroup.addButton(new ButtonGroup.Button("\u23ED", (ownerID, user, message) -> {
            // Last
            pages[0] = pagedEmbed.getPageTotal() - 1;
            message.editMessage(pagedEmbed.getEmbed(pages[0])).queue();
        }));
        buttonGroup.addButton(new ButtonGroup.Button("\u274C", (ownerID, user, message) -> {
            // Delete
            if (user.getIdLong() == ownerID || message.getGuild().getMember(user).hasPermission(Permission.MANAGE_PERMISSIONS)) {
                message.delete().queue(null, e -> {
                });
            } else {
                MessageUtils.sendErrorMessage("You need to be the sender or have the `Manage Messages` discord permission to do this!", (TextChannel) message.getChannel());
            }
        }));
        ButtonUtil.sendButtonedMessage(channel, pagedEmbed.getEmbed(page), buttonGroup);
    } else {
        channel.sendMessage(pagedEmbed.getEmbed(page)).queue();
    }
}
Also used : ButtonGroup(stream.flarebot.flarebot.util.objects.ButtonGroup) List(java.util.List) Permission(net.dv8tion.jda.core.Permission) User(net.dv8tion.jda.core.entities.User) TextChannel(net.dv8tion.jda.core.entities.TextChannel) ButtonUtil(stream.flarebot.flarebot.util.buttons.ButtonUtil) ArrayUtils(org.apache.commons.lang3.ArrayUtils) MessageUtils(stream.flarebot.flarebot.util.MessageUtils) ArrayList(java.util.ArrayList) TextChannel(net.dv8tion.jda.core.entities.TextChannel) ButtonGroup(stream.flarebot.flarebot.util.objects.ButtonGroup)

Example 4 with ButtonGroup

use of stream.flarebot.flarebot.util.objects.ButtonGroup in project FlareBot by FlareBot.

the class SongCommand method onCommand.

@Override
public void onCommand(User sender, GuildWrapper guild, TextChannel channel, Message message, String[] args, Member member) {
    PlayerManager manager = FlareBot.instance().getMusicManager();
    if (manager.getPlayer(channel.getGuild().getId()).getPlayingTrack() != null) {
        Track track = manager.getPlayer(channel.getGuild().getId()).getPlayingTrack();
        EmbedBuilder eb = MessageUtils.getEmbed(sender).addField("Current Song", getLink(track), false).setThumbnail("https://img.youtube.com/vi/" + track.getTrack().getIdentifier() + "/hqdefault.jpg");
        if (track.getTrack().getInfo().isStream)
            eb.addField("Amount Played", "Issa livestream ;)", false);
        else
            eb.addField("Amount Played", GeneralUtils.getProgressBar(track), true).addField("Time", String.format("%s / %s", FormatUtils.formatDuration(track.getTrack().getPosition()), FormatUtils.formatDuration(track.getTrack().getDuration())), false);
        ButtonGroup buttonGroup = new ButtonGroup(sender.getIdLong(), ButtonGroupConstants.SONG);
        buttonGroup.addButton(new ButtonGroup.Button("\u23EF", (owner, user, message1) -> {
            if (manager.hasPlayer(guild.getGuildId())) {
                if (manager.getPlayer(guild.getGuild().getId()).getPaused()) {
                    if (getPermissions(channel).hasPermission(guild.getGuild().getMember(user), Permission.RESUME_COMMAND)) {
                        manager.getPlayer(guild.getGuild().getId()).play();
                    }
                } else {
                    if (getPermissions(channel).hasPermission(guild.getGuild().getMember(user), Permission.PAUSE_COMMAND)) {
                        manager.getPlayer(guild.getGuild().getId()).setPaused(true);
                    }
                }
            }
        }));
        buttonGroup.addButton(new ButtonGroup.Button("\u23F9", (owner, user, message1) -> {
            if (manager.hasPlayer(guild.getGuildId()) && getPermissions(channel).hasPermission(guild.getGuild().getMember(user), Permission.STOP_COMMAND)) {
                manager.getPlayer(guild.getGuildId()).stop();
            }
        }));
        buttonGroup.addButton(new ButtonGroup.Button("\u23ED", (owner, user, message1) -> {
            if (getPermissions(channel).hasPermission(guild.getGuild().getMember(user), Permission.SKIP_COMMAND)) {
                Command cmd = FlareBot.getCommandManager().getCommand("skip", user);
                if (cmd != null)
                    cmd.onCommand(user, guild, channel, message1, new String[0], guild.getGuild().getMember(user));
            }
        }));
        buttonGroup.addButton(new ButtonGroup.Button("\uD83D\uDD01", (ownerID, user, message1) -> {
            updateSongMessage(user, message1, message1.getTextChannel());
        }));
        ButtonUtil.sendButtonedMessage(channel, eb.build(), buttonGroup);
    } else {
        channel.sendMessage(MessageUtils.getEmbed(sender).addField("Current song", "**No song playing right now!**", false).build()).queue();
    }
}
Also used : YouTubeExtractor(stream.flarebot.flarebot.music.extractors.YouTubeExtractor) ButtonGroup(stream.flarebot.flarebot.util.objects.ButtonGroup) Track(com.arsenarsen.lavaplayerbridge.player.Track) Member(net.dv8tion.jda.core.entities.Member) TextChannel(net.dv8tion.jda.core.entities.TextChannel) ButtonUtil(stream.flarebot.flarebot.util.buttons.ButtonUtil) FlareBot(stream.flarebot.flarebot.FlareBot) PlayerManager(com.arsenarsen.lavaplayerbridge.PlayerManager) GuildWrapper(stream.flarebot.flarebot.objects.GuildWrapper) GeneralUtils(stream.flarebot.flarebot.util.general.GeneralUtils) Message(net.dv8tion.jda.core.entities.Message) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) ButtonGroupConstants(stream.flarebot.flarebot.util.buttons.ButtonGroupConstants) FormatUtils(stream.flarebot.flarebot.util.general.FormatUtils) 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) CommandType(stream.flarebot.flarebot.commands.CommandType) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) PlayerManager(com.arsenarsen.lavaplayerbridge.PlayerManager) ButtonGroup(stream.flarebot.flarebot.util.objects.ButtonGroup) Command(stream.flarebot.flarebot.commands.Command) Track(com.arsenarsen.lavaplayerbridge.player.Track)

Aggregations

TextChannel (net.dv8tion.jda.core.entities.TextChannel)4 User (net.dv8tion.jda.core.entities.User)4 MessageUtils (stream.flarebot.flarebot.util.MessageUtils)4 ButtonUtil (stream.flarebot.flarebot.util.buttons.ButtonUtil)4 ButtonGroup (stream.flarebot.flarebot.util.objects.ButtonGroup)4 ArrayList (java.util.ArrayList)2 List (java.util.List)2 EmbedBuilder (net.dv8tion.jda.core.EmbedBuilder)2 Permission (net.dv8tion.jda.core.Permission)2 Message (net.dv8tion.jda.core.entities.Message)2 ArrayUtils (org.apache.commons.lang3.ArrayUtils)2 PlayerManager (com.arsenarsen.lavaplayerbridge.PlayerManager)1 Track (com.arsenarsen.lavaplayerbridge.player.Track)1 Map (java.util.Map)1 UUID (java.util.UUID)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1 Guild (net.dv8tion.jda.core.entities.Guild)1 Member (net.dv8tion.jda.core.entities.Member)1 FlareBot (stream.flarebot.flarebot.FlareBot)1 Command (stream.flarebot.flarebot.commands.Command)1