Search in sources :

Example 21 with GuildWrapper

use of stream.flarebot.flarebot.objects.GuildWrapper in project FlareBot by FlareBot.

the class PlayerListener method onTrackStart.

@Override
public void onTrackStart(AudioPlayer aplayer, AudioTrack atrack) {
    FlareBotManager.instance().getLastActive().remove(Long.parseLong(player.getGuildId()));
    GuildWrapper wrapper = FlareBotManager.instance().getGuild(player.getGuildId());
    if (wrapper.getMusicAnnounceChannelId() != null) {
        TextChannel c = Getters.getChannelById(wrapper.getMusicAnnounceChannelId());
        if (c != null) {
            if (c.getGuild().getSelfMember().hasPermission(c, Permission.MESSAGE_EMBED_LINKS, Permission.MESSAGE_READ, Permission.MESSAGE_WRITE)) {
                Track track = player.getPlayingTrack();
                Queue<Track> playlist = player.getPlaylist();
                c.sendMessage(MessageUtils.getEmbed().addField("Now Playing", SongCommand.getLink(track), false).addField("Duration", FormatUtils.formatDuration(track.getTrack().getDuration()), false).addField("Requested by", String.format("<@!%s>", track.getMeta().get("requester")), false).addField("Next up", playlist.isEmpty() ? "Nothing" : SongCommand.getLink(playlist.peek()), false).setImage("https://img.youtube.com/vi/" + track.getTrack().getIdentifier() + "/hqdefault.jpg").build()).queue();
            } else {
                wrapper.setMusicAnnounceChannelId(null);
            }
        } else {
            wrapper.setMusicAnnounceChannelId(null);
        }
    }
    if (wrapper.isSongnickEnabled()) {
        Guild c = wrapper.getGuild();
        if (c == null || !GuildUtils.canChangeNick(player.getGuildId())) {
            if (!GuildUtils.canChangeNick(player.getGuildId())) {
                wrapper.setSongnick(false);
                MessageUtils.sendPM(wrapper.getGuild().getOwner().getUser(), "FlareBot can't change it's nickname so SongNick has been disabled!");
            }
        } else {
            Track track = player.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
            c.getController().setNickname(c.getSelfMember(), str).queue();
        }
    }
}
Also used : GuildWrapper(stream.flarebot.flarebot.objects.GuildWrapper) TextChannel(net.dv8tion.jda.core.entities.TextChannel) Guild(net.dv8tion.jda.core.entities.Guild) Track(com.arsenarsen.lavaplayerbridge.player.Track) AudioTrack(com.sedmelluq.discord.lavaplayer.track.AudioTrack)

Example 22 with GuildWrapper

use of stream.flarebot.flarebot.objects.GuildWrapper in project FlareBot by FlareBot.

the class NINOCommand method onCommand.

@Override
public void onCommand(User sender, GuildWrapper guild, TextChannel channel, Message message, String[] args, Member member) {
    if (args.length >= 1) {
        if (args[0].equalsIgnoreCase("enable") || args[0].equalsIgnoreCase("disable")) {
            boolean enabled = args[0].equalsIgnoreCase("enable");
            ArrayList<URLCheckFlag> flags = new ArrayList<>();
            if (args.length >= 2) {
                if (args[1].equalsIgnoreCase("all"))
                    flags.addAll(Arrays.asList(URLCheckFlag.values));
                else if (args[1].equalsIgnoreCase("default"))
                    flags.addAll(URLCheckFlag.getDefaults());
                else {
                    String[] strFlags = seperator.split(MessageUtils.getMessage(args, 1));
                    URLCheckFlag checkFlag;
                    for (String flag : strFlags) {
                        if ((checkFlag = URLCheckFlag.getFlag(flag)) != null)
                            flags.add(checkFlag);
                        else {
                            MessageUtils.sendWarningMessage("'" + flag + "' is not a valid flag!", channel);
                            return;
                        }
                    }
                }
            }
            if (enabled) {
                if (flags.isEmpty())
                    flags.addAll(URLCheckFlag.getDefaults());
                guild.getNINO().getURLFlags().addAll(flags);
            } else {
                if (flags.isEmpty())
                    guild.getNINO().getURLFlags().clear();
                else
                    guild.getNINO().getURLFlags().removeAll(flags);
            }
            boolean all = (enabled ? guild.getNINO().getURLFlags().size() == URLCheckFlag.getAllFlags().size() : guild.getNINO().getURLFlags().isEmpty());
            channel.sendMessage(MessageUtils.getEmbed(sender).setDescription(FormatUtils.formatCommandPrefix(guild, "I have " + (enabled ? "enabled " : "disabled ") + (all ? "all the flags." : "the " + listToString(flags) + " flag(s)!") + "\n\nTo see the whitelist do `{%}nino whitelist list` and to post the" + " attempts to the modlog enable it with `{%}modlog enable NINO <#channel>`")).setColor(enabled ? ColorUtils.GREEN : ColorUtils.RED).build()).queue();
        } else if (args[0].equalsIgnoreCase("whitelist")) {
            if (args.length == 2) {
                if (args[1].equalsIgnoreCase("list")) {
                    StringBuilder sb = new StringBuilder();
                    StringBuilder channels = new StringBuilder();
                    for (String invite : guild.getNINO().getWhitelist()) sb.append("`").append(invite).append("`").append("\n");
                    for (long channelId : guild.getNINO().getChannels()) {
                        if (guild.getGuild().getTextChannelById(channelId) != null)
                            channels.append(guild.getGuild().getTextChannelById(channelId).getAsMention()).append("\n");
                        else
                            guild.getNINO().getChannels().remove(channelId);
                    }
                    channel.sendMessage(MessageUtils.getEmbed(sender).setColor(ColorUtils.FLAREBOT_BLUE).addField("Whitelisted Invites", sb.toString(), false).addField("Whitelisted Channels", channels.toString(), false).build()).queue();
                } else
                    MessageUtils.sendUsage(this, channel, sender, args);
            } else if (args.length == 3) {
                if (args[1].equalsIgnoreCase("add") || args[1].equalsIgnoreCase("remove")) {
                    String whitelist = args[2];
                    boolean added = args[1].equalsIgnoreCase("add");
                    TextChannel tc = GuildUtils.getChannel(whitelist, guild);
                    if (tc != null) {
                        if (added)
                            guild.getNINO().addChannel(tc.getIdLong());
                        else
                            guild.getNINO().removeChannel(tc.getIdLong());
                        MessageUtils.sendSuccessMessage((added ? "Added " : "Removed ") + tc.getAsMention() + (added ? " to" : " from") + " the whitelist!", channel, sender);
                    } else if (URLConstants.URL_PATTERN_NO_PROTOCOL.matcher(whitelist).matches()) {
                        if (added)
                            guild.getNINO().addUrl(whitelist);
                        else
                            guild.getNINO().removeUrl(whitelist);
                        MessageUtils.sendSuccessMessage((added ? "Added " : "Removed ") + "`" + whitelist + "` " + (added ? "to" : "from") + " the whitelist!", channel, sender);
                    } else {
                        MessageUtils.sendWarningMessage("That is an invalid input! " + "Please try and whitelist a Discord invite or ", channel);
                    }
                } else
                    MessageUtils.sendUsage(this, channel, sender, args);
            } else
                MessageUtils.sendUsage(this, channel, sender, args);
        } else if (args[0].equalsIgnoreCase("message")) {
            if (args.length == 1) {
                MessageUtils.sendUsage(this, channel, sender, args);
                return;
            }
            String msg = null;
            if (args.length >= 3) {
                msg = MessageUtils.getMessage(args, 2);
                if (msg.length() > 250) {
                    MessageUtils.sendWarningMessage("That message is a tad too long, please make it 250 characters max!" + "\n```\n" + msg + "\n```", channel, sender);
                    return;
                }
            }
            if (args[1].equalsIgnoreCase("set")) {
                if (msg != null) {
                    guild.getNINO().setRemoveMessage(msg);
                    MessageUtils.sendSuccessMessage("Message has been set!\n```" + msg + "\n```", channel, sender);
                } else
                    MessageUtils.sendWarningMessage("Please specify a message!", channel);
            } else if (args[1].equalsIgnoreCase("add")) {
                if (msg != null) {
                    guild.getNINO().addRemoveMessage(msg);
                    MessageUtils.sendSuccessMessage("Message has been added!\n```" + msg + "\n```", channel, sender);
                } else
                    MessageUtils.sendWarningMessage("Please specify a message!", channel);
            } else if (args[1].equalsIgnoreCase("remove")) {
                int messageId = 1;
                if (args.length > 2)
                    messageId = GeneralUtils.getInt(args[2], 1);
                int size = guild.getNINO().getRemoveMessages().size();
                if (size == 0) {
                    MessageUtils.sendInfoMessage("This guild has no remove messages!", channel);
                    return;
                }
                if (messageId <= 0 || messageId >= size) {
                    MessageUtils.sendWarningMessage("Invalid message ID!", channel);
                    return;
                }
                String tmp = guild.getNINO().getRemoveMessages().get(messageId);
                guild.getNINO().getRemoveMessages().remove(tmp);
                MessageUtils.sendSuccessMessage("Successfully removed message with ID " + messageId + "!\n```\n" + tmp + "\n```", channel);
            } else if (args[1].equalsIgnoreCase("clear")) {
                guild.getNINO().clearRemoveMessages();
                MessageUtils.sendSuccessMessage("Successfully removed **all** messages from this guild!", channel);
            } else if (args[1].equalsIgnoreCase("list")) {
                int page = 1;
                if (args.length > 2)
                    page = GeneralUtils.getInt(args[2], 1);
                listMessages(guild, page, channel, sender);
            } else
                MessageUtils.sendUsage(this, channel, sender, args);
        } else if (args[0].equalsIgnoreCase("flags")) {
            Set<URLCheckFlag> flags = guild.getNINO().getURLFlags();
            boolean all = flags.size() == URLCheckFlag.getAllFlags().size();
            EmbedBuilder eb = MessageUtils.getEmbed(sender);
            if (!flags.isEmpty())
                eb.addField("Enabled", flags.stream().map(URLCheckFlag::toString).collect(Collectors.joining("\n")), false);
            if (!all)
                eb.addField("Disabled", URLCheckFlag.getAllFlags().stream().filter(f -> !flags.contains(f)).map(URLCheckFlag::toString).collect(Collectors.joining("\n")), false);
            channel.sendMessage(eb.build()).queue();
        } else if (args[0].equalsIgnoreCase("mode")) {
            if (args.length == 2) {
                NINOMode mode = NINOMode.getMode(args[1]);
                if (mode == null)
                    MessageUtils.sendWarningMessage("That is an invalid mode!", channel);
                else {
                    guild.getNINO().setMode(mode.getMode());
                    MessageUtils.sendSuccessMessage("Changed NINO's mode to " + mode.toString(), channel, sender);
                }
            } else {
                StringBuilder sb = new StringBuilder();
                for (NINOMode mode : NINOMode.values()) sb.append(mode.toString()).append(" (").append(mode.getMode()).append(") - ").append(mode.getExplanation()).append("\n");
                MessageUtils.sendMessage("Current Mode: " + guild.getNINO().getNINOMode().toString() + "\nNINO will " + WordUtils.uncapitalize(guild.getNINO().getNINOMode().getExplanation(), '~') + "\n\n**Available Modes**\n" + sb.toString().trim() + "\n\n\n" + "Protocol is the `http://` or `https://` at the start of a URL. Example: `https://google.com`\n" + "Following a URL is when we will check to see if it is a masked link " + "(something like goo.gl, bit.ly etc) and if so follow the redirects and if we see a bad " + "link then it will be caught. This means people can't hide bad links. " + "It does have the disadvantage of being a bit slower though (it will still catch before " + "any human can click it). Example: `https://goo.gl/NfYi94`", channel, sender);
            }
        } else
            MessageUtils.sendUsage(this, channel, sender, args);
    } else
        MessageUtils.sendUsage(this, channel, sender, args);
}
Also used : Arrays(java.util.Arrays) WordUtils(org.apache.commons.lang3.text.WordUtils) PaginationUtil(stream.flarebot.flarebot.util.pagination.PaginationUtil) Member(net.dv8tion.jda.core.entities.Member) TextChannel(net.dv8tion.jda.core.entities.TextChannel) GuildWrapper(stream.flarebot.flarebot.objects.GuildWrapper) GeneralUtils(stream.flarebot.flarebot.util.general.GeneralUtils) Message(net.dv8tion.jda.core.entities.Message) ArrayList(java.util.ArrayList) FormatUtils(stream.flarebot.flarebot.util.general.FormatUtils) Permission(stream.flarebot.flarebot.permissions.Permission) MessageUtils(stream.flarebot.flarebot.util.MessageUtils) CommandType(stream.flarebot.flarebot.commands.CommandType) GuildUtils(stream.flarebot.flarebot.util.general.GuildUtils) NINOMode(stream.flarebot.flarebot.mod.nino.NINOMode) URLConstants(stream.flarebot.flarebot.mod.nino.URLConstants) Collection(java.util.Collection) Set(java.util.Set) ColorUtils(stream.flarebot.flarebot.util.ColorUtils) Collectors(java.util.stream.Collectors) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) ButtonGroupConstants(stream.flarebot.flarebot.util.buttons.ButtonGroupConstants) List(java.util.List) User(net.dv8tion.jda.core.entities.User) PagedEmbedBuilder(stream.flarebot.flarebot.util.pagination.PagedEmbedBuilder) Command(stream.flarebot.flarebot.commands.Command) Pattern(java.util.regex.Pattern) PaginationList(stream.flarebot.flarebot.util.pagination.PaginationList) URLCheckFlag(stream.flarebot.flarebot.mod.nino.URLCheckFlag) TextChannel(net.dv8tion.jda.core.entities.TextChannel) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) PagedEmbedBuilder(stream.flarebot.flarebot.util.pagination.PagedEmbedBuilder) Set(java.util.Set) NINOMode(stream.flarebot.flarebot.mod.nino.NINOMode) ArrayList(java.util.ArrayList) URLCheckFlag(stream.flarebot.flarebot.mod.nino.URLCheckFlag)

Example 23 with GuildWrapper

use of stream.flarebot.flarebot.objects.GuildWrapper in project FlareBot by FlareBot.

the class ReportCommand method onCommand.

@Override
public void onCommand(User sender, GuildWrapper guild, TextChannel channel, Message message, String[] args, Member member) {
    if (args.length >= 2) {
        User user = GuildUtils.getUser(args[0], channel.getGuild().getId());
        if (user == null) {
            MessageUtils.sendErrorMessage("Invalid user: " + args[0], channel);
            return;
        }
        Report report = new Report((guild.getReportManager().getLastId() + 1), MessageUtils.getMessage(args, 1), sender.getId(), user.getId(), new Timestamp(System.currentTimeMillis()), ReportStatus.OPEN);
        List<Message> messages = channel.getHistory().retrievePast(100).complete().stream().filter(m -> m.getAuthor().equals(user)).collect(Collectors.toList());
        if (messages.size() > 0) {
            messages = messages.subList(0, Math.min(5, messages.size() - 1));
            List<ReportMessage> reportMessages = new ArrayList<>();
            for (Message userMessage : messages) {
                reportMessages.add(new ReportMessage(userMessage.getContentDisplay(), Timestamp.valueOf(userMessage.getCreationTime().atZoneSameInstant(ZoneOffset.UTC).toLocalDateTime())));
            }
            report.setMessages(reportMessages);
        }
        guild.getReportManager().report(report);
        ModlogHandler.getInstance().postToModlog(guild, ModlogEvent.REPORT_SUBMITTED, user, null, MessageUtils.getMessage(args, 1), new MessageEmbed.Field("Reported By", MessageUtils.getTag(sender), true));
        MessageUtils.sendPM(channel, sender, GeneralUtils.getReportEmbed(sender, report).setDescription("Successfully reported the user"));
    } else {
        MessageUtils.sendUsage(this, channel, sender, args);
    }
}
Also used : ReportStatus(stream.flarebot.flarebot.objects.ReportStatus) Report(stream.flarebot.flarebot.objects.Report) net.dv8tion.jda.core.entities(net.dv8tion.jda.core.entities) Timestamp(java.sql.Timestamp) ModlogHandler(stream.flarebot.flarebot.mod.modlog.ModlogHandler) ModlogEvent(stream.flarebot.flarebot.mod.modlog.ModlogEvent) GuildWrapper(stream.flarebot.flarebot.objects.GuildWrapper) GeneralUtils(stream.flarebot.flarebot.util.general.GeneralUtils) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) ReportMessage(stream.flarebot.flarebot.objects.ReportMessage) List(java.util.List) Permission(stream.flarebot.flarebot.permissions.Permission) Command(stream.flarebot.flarebot.commands.Command) MessageUtils(stream.flarebot.flarebot.util.MessageUtils) ZoneOffset(java.time.ZoneOffset) CommandType(stream.flarebot.flarebot.commands.CommandType) GuildUtils(stream.flarebot.flarebot.util.general.GuildUtils) ReportMessage(stream.flarebot.flarebot.objects.ReportMessage) Report(stream.flarebot.flarebot.objects.Report) ArrayList(java.util.ArrayList) ReportMessage(stream.flarebot.flarebot.objects.ReportMessage) Timestamp(java.sql.Timestamp)

Aggregations

GuildWrapper (stream.flarebot.flarebot.objects.GuildWrapper)23 MessageUtils (stream.flarebot.flarebot.util.MessageUtils)11 TextChannel (net.dv8tion.jda.core.entities.TextChannel)10 CommandType (stream.flarebot.flarebot.commands.CommandType)10 Permission (stream.flarebot.flarebot.permissions.Permission)9 List (java.util.List)8 EmbedBuilder (net.dv8tion.jda.core.EmbedBuilder)8 Member (net.dv8tion.jda.core.entities.Member)8 Message (net.dv8tion.jda.core.entities.Message)8 User (net.dv8tion.jda.core.entities.User)8 Command (stream.flarebot.flarebot.commands.Command)8 Collectors (java.util.stream.Collectors)7 ArrayList (java.util.ArrayList)6 ButtonGroupConstants (stream.flarebot.flarebot.util.buttons.ButtonGroupConstants)6 Track (com.arsenarsen.lavaplayerbridge.player.Track)5 FlareBot (stream.flarebot.flarebot.FlareBot)5 GeneralUtils (stream.flarebot.flarebot.util.general.GeneralUtils)5 Color (java.awt.Color)4 Pattern (java.util.regex.Pattern)4 net.dv8tion.jda.core.entities (net.dv8tion.jda.core.entities)4