Search in sources :

Example 11 with IRole

use of sx.blah.discord.handle.obj.IRole in project DiscordSailv2 by Vaerys-Dawn.

the class TagIfRoleReplace method execute.

@Override
public String execute(String from, CommandObject command, String args, List<ReplaceObject> toReplace) {
    List<String> splitString = getSplit(from);
    from = removeFirstTag(from);
    boolean found = false;
    for (IRole r : command.user.roles) {
        if (StringUtils.containsIgnoreCase(r.getName(), splitString.get(0))) {
            found = true;
        }
    }
    if (found) {
        toReplace.add(new ReplaceObject(splitString.get(1), splitString.get(2)));
    } else {
        toReplace.add(new ReplaceObject(splitString.get(1), splitString.get(3)));
    }
    return from;
}
Also used : IRole(sx.blah.discord.handle.obj.IRole) ReplaceObject(com.github.vaerys.objects.ReplaceObject) TagReplaceObject(com.github.vaerys.templates.TagReplaceObject)

Example 12 with IRole

use of sx.blah.discord.handle.obj.IRole in project DiscordSailv2 by Vaerys-Dawn.

the class GetGuildInfo method execute.

@Override
public String execute(String args, CommandObject command) {
    XEmbedBuilder serverInfo = new XEmbedBuilder(command);
    XEmbedBuilder toggles = new XEmbedBuilder(command);
    XEmbedBuilder channels = new XEmbedBuilder(command);
    boolean isGuildStats = GUILD_STATS.isSubCommand(command);
    IChannel channel = command.user.get().getOrCreatePMChannel();
    boolean hasManageServer = GuildHandler.testForPerms(command, Permissions.MANAGE_SERVER);
    // todo change this to the proper impl when api allows it.
    boolean isVIP = command.guild.get().getRegion().isVIPOnly();
    if (isVIP) {
        serverInfo.withAuthorIcon("https://i.imgur.com/m0jqzBn.png");
    }
    serverInfo.withThumbnail(command.guild.get().getIconURL());
    serverInfo.withAuthorName(command.guild.get().getName());
    serverInfo.withFooterText("Creation Date");
    serverInfo.withTimestamp(command.guild.get().getCreationDate());
    StringBuilder serverStats = new StringBuilder();
    UserObject owner = new UserObject(command.guild.getOwner(), command.guild);
    serverStats.append("**Guild ID:** " + command.guild.longID);
    serverStats.append("\n**Guild Owner:** @" + owner.username);
    IRegion region = command.guild.get().getRegion();
    if (region != null) {
        serverStats.append("\n**Region:** ");
        serverStats.append(command.guild.get().getRegion().getName());
    }
    serverStats.append("\n**Total Users:** " + command.guild.getUsers().size());
    serverStats.append("\n**Total Channels:** " + command.guild.get().getChannels().size());
    serverStats.append("\n**Total Voice Channels:** " + command.guild.get().getVoiceChannels().size());
    serverStats.append("\n**Total Roles:** " + command.guild.get().getRoles().size());
    serverStats.append("\n**Command Prefix:** " + command.guild.config.getPrefixCommand());
    if (command.guild.config.moduleCC)
        serverStats.append("\n**Custom Command Prefix:** " + command.guild.config.getPrefixCC());
    if (command.guild.config.rateLimiting)
        serverStats.append("\n**Guild Rate Limit:** " + command.guild.config.messageLimit + "/10s");
    if (hasManageServer && !isGuildStats) {
        StringBuilder adminBuilder = new StringBuilder();
        if (command.guild.config.maxMentions)
            adminBuilder.append("\n**Max Mentions:** " + command.guild.config.maxMentionLimit);
        if (command.guild.config.muteRepeatOffenders && command.guild.config.getMutedRoleID() != -1)
            adminBuilder.append("\n**Messages Until AutoMute:** " + (command.guild.config.messageLimit - 3));
        if (command.guild.config.denyInvites) {
            IRole role = command.guild.getRoleByID(command.guild.config.getInviteAllowedID());
            if (role != null) {
                adminBuilder.append("\n**Invite Allowed Role:** ");
                adminBuilder.append(role.getName());
            }
        }
        if (adminBuilder.length() != 0) {
            serverStats.append("\n\n**[ADMIN STATS]**" + adminBuilder.toString());
        }
    }
    serverInfo.withDescription(serverStats.toString());
    if (isGuildStats) {
        RequestHandler.sendEmbedMessage("", serverInfo, command.channel.get()).get();
        return null;
    } else {
        RequestHandler.sendEmbedMessage("", serverInfo, channel).get();
    }
    if (hasManageServer) {
        List<SAILType> enabledModules = new LinkedList<>();
        List<SAILType> disabledModules = new LinkedList<>();
        List<SAILType> enabledSettings = new LinkedList<>();
        List<SAILType> disabledSettings = new LinkedList<>();
        for (GuildToggle t : command.guild.toggles) {
            if (t.isModule()) {
                if (t.enabled(command.guild.config))
                    enabledModules.add(t.name());
                else
                    disabledModules.add(t.name());
            } else {
                if (t.enabled(command.guild.config))
                    enabledSettings.add(t.name());
                else
                    disabledSettings.add(t.name());
            }
        }
        toggles.appendField("MODULES", "**Enabled**```\n" + spacer + Utility.listEnumFormatter(enabledModules, true) + "```\n" + "**Disabled**```" + Utility.listEnumFormatter(disabledModules, true) + "```\n" + Command.spacer, true);
        toggles.appendField("SETTINGS", "**Enabled**```\n" + spacer + Utility.listEnumFormatter(enabledSettings, true) + "```\n" + "**Disabled**```" + Utility.listEnumFormatter(disabledSettings, true) + "```", true);
        RequestHandler.sendEmbedMessage("", toggles, channel).get();
    }
    if (GuildHandler.testForPerms(command, Permissions.MANAGE_CHANNELS)) {
        List<ChannelSetting> channelSettings = command.guild.channelSettings;
        channelSettings.sort(Comparator.comparing(ChannelSetting::toString));
        channelSettings.sort((o1, o2) -> Boolean.compare(o1.isSetting(), o2.isSetting()));
        for (ChannelSetting s : channelSettings) {
            List<String> channelList = new ArrayList<>();
            for (long id : s.getIDs(command.guild)) {
                IChannel ch = command.guild.getChannelByID(id);
                if (ch != null) {
                    channelList.add("#" + ch.getName() + "");
                }
            }
            if (channelList.size() != 0) {
                String content = Utility.listFormatter(channelList, true);
                channels = resetEmbed(channels, channel, command, s.toString().length() + content.length());
                channels.appendField(s.toString(), content, true);
            }
        }
        channels.withTitle("CHANNEL STATS");
        RequestHandler.sendEmbedMessage("", channels, channel).get();
    }
    // module builders.
    XEmbedBuilder moduleStats = new XEmbedBuilder(command);
    List<GuildToggle> guildmodules = new ArrayList(command.guild.toggles);
    GuildToggle roleModule = null;
    for (GuildToggle t : guildmodules) {
        if (t.name() == new ModuleRoles().name()) {
            roleModule = t;
        }
    }
    int index = guildmodules.indexOf(roleModule);
    guildmodules.remove(index);
    guildmodules.add(0, roleModule);
    for (GuildToggle toggle : guildmodules) {
        if (toggle.isModule() && toggle.enabled(command.guild.config)) {
            String stats = toggle.stats(command);
            if (stats != null) {
                // checks to make sure the field can be added.
                String[] splitStats = stats.split("\n");
                List<String> toSend = new ArrayList<>();
                StringBuilder builder = new StringBuilder();
                for (String s : splitStats) {
                    if (builder.length() + s.length() + 1 > EmbedBuilder.FIELD_CONTENT_LIMIT / 4) {
                        toSend.add(builder.toString());
                        builder = new StringBuilder();
                    }
                    if (s.startsWith("<split>")) {
                        s = s.replace("<split>", "");
                        toSend.add(builder.toString());
                        builder = new StringBuilder();
                    }
                    builder.append(s + "\n");
                }
                if (builder.length() != 0) {
                    toSend.add(builder.toString());
                }
                String title = toggle.name().toString().toUpperCase() + " STATS";
                if (toSend.size() != 0) {
                    for (int i = 0; i < toSend.size(); i++) {
                        moduleStats = resetEmbed(moduleStats, channel, command, title.length() + toSend.get(i).length());
                        if (i + 1 < toSend.size()) {
                            if (toSend.get(i).length() + toSend.get(i + 1).length() < EmbedBuilder.FIELD_CONTENT_LIMIT / 4) {
                                moduleStats.appendField(title, toSend.get(i) + "\n\n" + toSend.get(i + 1), true);
                                i++;
                            } else {
                                moduleStats.appendField(title, toSend.get(i), true);
                            }
                        } else {
                            moduleStats.appendField(title, toSend.get(i), true);
                        }
                    }
                } else {
                    moduleStats = resetEmbed(moduleStats, channel, command, title.length() + stats.length());
                    moduleStats.appendField(title, stats, true);
                }
            }
        }
    }
    RequestHandler.sendEmbedMessage("", moduleStats, channel).get();
    return "> Info sent to Dms.";
}
Also used : XEmbedBuilder(com.github.vaerys.objects.XEmbedBuilder) IChannel(sx.blah.discord.handle.obj.IChannel) GuildToggle(com.github.vaerys.templates.GuildToggle) ArrayList(java.util.ArrayList) UserObject(com.github.vaerys.masterobjects.UserObject) ModuleRoles(com.github.vaerys.guildtoggles.modules.ModuleRoles) IRegion(sx.blah.discord.handle.obj.IRegion) LinkedList(java.util.LinkedList) ChannelSetting(com.github.vaerys.enums.ChannelSetting) IRole(sx.blah.discord.handle.obj.IRole) SAILType(com.github.vaerys.enums.SAILType)

Example 13 with IRole

use of sx.blah.discord.handle.obj.IRole in project DiscordSailv2 by Vaerys-Dawn.

the class RulesCode method execute.

@Override
public String execute(String args, CommandObject command) {
    if (command.guild.config.getRuleCode() == null) {
        return "> no rule code exists try again later.";
    }
    command.message.delete();
    ProfileObject profile = command.user.getProfile(command.guild);
    if (profile == null)
        return "> **" + command.user.displayName + "** An error occurred, You do not have a profile yet. please dm me this error as this should never happen.";
    if (profile.getSettings().contains(UserSetting.READ_RULES))
        return "> **" + command.user.displayName + "** You have already guessed the code correctly.";
    if (args.equalsIgnoreCase(command.guild.config.getRuleCode())) {
        profile.getSettings().add(UserSetting.READ_RULES);
        String response = "> Congratulations you have guessed the Rule Code correctly, A Star";
        if (command.guild.config.xpGain) {
            response += " and " + (int) (200 * command.guild.config.xpModifier) + " Pixels have been added to your profile.";
            profile.addXP(200, command.guild.config);
        } else {
            response += " has been added to your profile.";
        }
        IRole ruleReward = command.guild.getRuleCodeRole();
        if (ruleReward != null) {
            response += "\nYou have also been granted the **" + ruleReward.getName() + "** Role.";
        }
        GuildHandler.checkUsersRoles(command.user.longID, command.guild);
        command.user.sendDm(response);
        return null;
    }
    int diff = (command.guild.config.getRuleCode().length() / 4);
    if (diff < 2)
        diff += 2;
    if (!Pattern.compile("\\[(.|\n)*]").matcher(command.guild.config.getRuleCode()).matches() && Pattern.compile("\\[(.|\n)*]").matcher(args).matches()) {
        command.user.sendDm("> That was not the right code, please try again.\n" + "The brackets are not part of the code.");
    } else if ((Math.abs(command.guild.config.getRuleCode().length() - args.length()) <= diff) && (StringUtils.containsIgnoreCase(command.guild.config.getRuleCode(), args) || (StringUtils.containsIgnoreCase(args, command.guild.config.getRuleCode())))) {
        command.user.sendDm("> That was not the code, but you were getting close.");
        return null;
    } else {
        command.user.sendDm("> That was not the right code, please try again.\n");
    }
    return null;
}
Also used : IRole(sx.blah.discord.handle.obj.IRole) ProfileObject(com.github.vaerys.objects.ProfileObject)

Example 14 with IRole

use of sx.blah.discord.handle.obj.IRole in project DiscordSailv2 by Vaerys-Dawn.

the class Report method report.

public static String report(String args, CommandObject command, boolean isSilent) {
    List<IChannel> channels = command.guild.getChannelsByType(ChannelSetting.ADMIN);
    if (channels.size() != 0) {
        IChannel channel = channels.get(0);
        SplitFirstObject split = new SplitFirstObject(args);
        UserObject reported = Utility.getUser(command, split.getFirstWord(), false, false);
        if (reported == null) {
            return "> Cannot send report. Could not find user.";
        }
        if (reported.longID == command.user.longID) {
            return "> You can't report yourself.";
        }
        if (channel != null) {
            StringBuilder builder = new StringBuilder();
            IRole roleToMention = command.guild.getRoleByID(command.guild.config.getRoleToMentionID());
            if (roleToMention != null) {
                builder.append(roleToMention.mention() + "\n");
            }
            if (isSilent) {
                builder.append("**User Report - Silent**\n");
            } else {
                builder.append("**User Report**\n");
            }
            split.editRestReplace(split.getRest(), Utility.convertMentionToText(split.getRest()));
            String reason = split.getRest();
            if (split.getRest() == null) {
                reason = "No reason given.";
            }
            builder.append("Reporter: " + command.user.get().mention() + "\nReported: " + reported.get().mention() + "\nReason: `" + reason + "`");
            builder.append("\n" + command.channel.get().mention());
            IMessage message = RequestHandler.sendMessage(builder.toString(), channel).get();
            if (message == null) {
                return "> User report was not be sent. Looks like I can't send messages to " + channel.mention() + ".";
            } else {
                return "> User Report sent.";
            }
        }
        return "> Your report could not be sent as the server does not have an admin channel set up at this time.";
    } else {
        return "> Your report could not be sent as the server does not have an admin channel set up at this time.";
    }
}
Also used : IChannel(sx.blah.discord.handle.obj.IChannel) IRole(sx.blah.discord.handle.obj.IRole) IMessage(sx.blah.discord.handle.obj.IMessage) UserObject(com.github.vaerys.masterobjects.UserObject) SplitFirstObject(com.github.vaerys.objects.SplitFirstObject)

Example 15 with IRole

use of sx.blah.discord.handle.obj.IRole in project DiscordSailv2 by Vaerys-Dawn.

the class ManagePixelRoles method execute.

@Override
public String execute(String args, CommandObject command) {
    if (args.equalsIgnoreCase("list")) {
        XEmbedBuilder builder = new XEmbedBuilder(command);
        builder.withTitle("Pixel Roles");
        IRole xpDenied = command.guild.getXPDeniedRole();
        IRole topTen = command.guild.getTopTenRole();
        List<RewardRoleObject> rewardRoles = command.guild.config.getRewardRoles();
        if (xpDenied == null && topTen == null && rewardRoles.size() == 0) {
            return "> No roles are set up.\n" + missingArgs(command);
        }
        String desc = "";
        if (rewardRoles.size() != 0) {
            desc += "**Reward Roles**";
            for (RewardRoleObject r : rewardRoles) {
                desc += "\n> **" + command.guild.getRoleByID(r.getRoleID()).getName() + "** -> Level: **" + r.getLevel() + "**";
            }
            desc += "\n\n";
        }
        if (topTen != null) {
            desc += "**Top Ten Role**: " + topTen.getName() + "\n\n";
        }
        if (xpDenied != null) {
            desc += "**Pixel Denied Role**: " + xpDenied.getName();
        }
        builder.withDesc(desc);
        builder.send(command.channel);
        return null;
    }
    SplitFirstObject mode = new SplitFirstObject(args);
    IRole role = GuildHandler.getRoleFromName(mode.getRest(), command.guild.get());
    if (role == null) {
        return "> **" + mode.getRest() + "** is not a valid Role name.";
    }
    try {
        long level = Long.parseLong(mode.getFirstWord());
        if (level > 256 || level <= 0) {
            return "> Level must be between 1-256.";
        }
        for (RewardRoleObject r : command.guild.config.getRewardRoles()) {
            if (r.getLevel() == level) {
                return "> That level already has a reward set.";
            }
            if (r.getRoleID() == role.getLongID()) {
                r.setLevel(level);
                return "> Level to obtain **" + role.getName() + "** is now set to level **" + level + "**.";
            }
        }
        command.guild.config.getRewardRoles().add(new RewardRoleObject(role.getLongID(), level));
        return "> The role **" + role.getName() + "** will now be awarded at level **" + level + "**.";
    } catch (NumberFormatException e) {
        switch(mode.getFirstWord().toLowerCase()) {
            case "xpdenied":
                for (RewardRoleObject r : command.guild.config.getRewardRoles()) {
                    if (r.getRoleID() == role.getLongID()) {
                        return "> **" + role.getName() + "** is already set as a reward role.";
                    }
                }
                if (role.getLongID() == command.guild.config.topTenRoleID) {
                    return "> **" + role.getName() + "** is already set as the server's TopTen role.";
                }
                command.guild.config.xpDeniedRoleID = role.getLongID();
                return "> **" + role.getName() + "** is now the server's XpDenied role.";
            case "topten":
                for (RewardRoleObject r : command.guild.config.getRewardRoles()) {
                    if (r.getRoleID() == role.getLongID()) {
                        return "> **" + role.getName() + "** is already set as a reward role.";
                    }
                }
                if (role.getLongID() == command.guild.config.xpDeniedRoleID) {
                    return "> **" + role.getName() + "** is already set as the server's xpDenied role.";
                }
                command.guild.config.topTenRoleID = role.getLongID();
                return "> **" + role.getName() + "** is now the server's TopTen role.";
            case "remove":
                if (role.getLongID() == command.guild.config.xpDeniedRoleID) {
                    command.guild.config.xpDeniedRoleID = -1;
                    return "> **" + role.getName() + "** is no longer the server's xpDenied role.";
                } else if (role.getLongID() == command.guild.config.topTenRoleID) {
                    command.guild.config.topTenRoleID = -1;
                    return "> **" + role.getName() + "** is no longer the server's Top Ten role.";
                }
                for (RewardRoleObject r : command.guild.config.getRewardRoles()) {
                    if (r.getRoleID() == role.getLongID()) {
                        command.guild.config.getRewardRoles().remove(r);
                        return "> **" + role.getName() + "** is no longer set as a reward role.";
                    }
                }
                return "> **" + role.getName() + "** is not a valid Pixel role.";
            default:
                return "> Invalid Mode.\n" + modes + Utility.getCommandInfo(this, command);
        }
    }
}
Also used : XEmbedBuilder(com.github.vaerys.objects.XEmbedBuilder) RewardRoleObject(com.github.vaerys.objects.RewardRoleObject) IRole(sx.blah.discord.handle.obj.IRole) SplitFirstObject(com.github.vaerys.objects.SplitFirstObject)

Aggregations

IRole (sx.blah.discord.handle.obj.IRole)39 IUser (sx.blah.discord.handle.obj.IUser)8 IChannel (sx.blah.discord.handle.obj.IChannel)7 ArrayList (java.util.ArrayList)6 UserObject (com.github.vaerys.masterobjects.UserObject)5 SplitFirstObject (com.github.vaerys.objects.SplitFirstObject)5 XEmbedBuilder (com.github.vaerys.objects.XEmbedBuilder)5 IGuild (sx.blah.discord.handle.obj.IGuild)5 CommandObject (com.github.vaerys.commands.CommandObject)4 ChannelSetting (com.github.vaerys.enums.ChannelSetting)4 SAILType (com.github.vaerys.enums.SAILType)4 RewardRoleObject (com.github.vaerys.objects.RewardRoleObject)4 CharacterObject (com.github.vaerys.objects.CharacterObject)3 ProfileObject (com.github.vaerys.objects.ProfileObject)3 Command (com.github.vaerys.templates.Command)3 List (java.util.List)3 Collectors (java.util.stream.Collectors)3 DBGuild (me.shadorc.shadbot.data.db.DBGuild)3 Permissions (sx.blah.discord.handle.obj.Permissions)3 GuildHandler (com.github.vaerys.handlers.GuildHandler)2