Search in sources :

Example 1 with ChannelSetting

use of com.github.vaerys.enums.ChannelSetting in project DiscordSailv2 by Vaerys-Dawn.

the class GuildObject method removeChannelSetting.

/**
 * Removes a channel setting from the specified channel
 *
 * @param channel
 */
public void removeChannelSetting(ChannelSetting channel) {
    channelSettings.remove(ChannelSetting.FROM_DM);
    for (ChannelSetting s : channelSettings) {
        if (s == channel) {
            channelSettings.remove(s);
            logger.trace("Channel Setting: " + s.toString() + " removed.");
            break;
        }
    }
}
Also used : ChannelSetting(com.github.vaerys.enums.ChannelSetting)

Example 2 with ChannelSetting

use of com.github.vaerys.enums.ChannelSetting in project DiscordSailv2 by Vaerys-Dawn.

the class ChannelStats method execute.

@Override
public String execute(String args, CommandObject command) {
    XEmbedBuilder builder = new XEmbedBuilder(command);
    builder.withTitle("Channel Stats");
    ArrayList<String> channelTypes = new ArrayList<>();
    ArrayList<String> channelSettings = new ArrayList<>();
    if (args != null && !args.isEmpty()) {
        for (ChannelSetting s : command.guild.channelSettings) {
            if (s.toString().equalsIgnoreCase(args)) {
                List<IChannel> channels = command.guild.getChannelsByType(s);
                List<String> channelMentions = Utility.getChannelMentions(channels);
                if (channels.size() != 0) {
                    builder.appendField(s.toString(), Utility.listFormatter(channelMentions, true), false);
                    RequestHandler.sendEmbedMessage("", builder, command.channel.get());
                    return null;
                } else {
                    if (s.isSetting()) {
                        return "> Could not find any channels with the **" + s.toString() + "** setting enabled.";
                    } else {
                        return "> Could not find a channel with the **" + s.toString() + "** type enabled.";
                    }
                }
            }
        }
        return "> Could not any channel settings with that name.";
    }
    for (ChannelSettingObject c : command.guild.channelData.getChannelSettings()) {
        if (c.getChannelIDs().contains(command.channel.longID)) {
            for (ChannelSetting setting : Globals.getChannelSettings()) {
                if (c.getType() == setting) {
                    if (setting.isSetting()) {
                        channelSettings.add(c.getType().toString());
                    } else {
                        channelTypes.add(c.getType().toString());
                    }
                }
            }
        }
    }
    if (channelSettings.size() == 0 && channelTypes.size() == 0) {
        return "> I found nothing of value.";
    }
    if (channelTypes.size() != 0) {
        builder.appendField("Types:", Utility.listFormatter(channelTypes, true), false);
    }
    if (channelSettings.size() != 0) {
        builder.appendField("Settings:", Utility.listFormatter(channelSettings, true), false);
    }
    RequestHandler.sendEmbedMessage("", builder, command.channel.get());
    return null;
}
Also used : XEmbedBuilder(com.github.vaerys.objects.XEmbedBuilder) ChannelSetting(com.github.vaerys.enums.ChannelSetting) IChannel(sx.blah.discord.handle.obj.IChannel) ChannelSettingObject(com.github.vaerys.objects.ChannelSettingObject) ArrayList(java.util.ArrayList)

Example 3 with ChannelSetting

use of com.github.vaerys.enums.ChannelSetting in project DiscordSailv2 by Vaerys-Dawn.

the class GuildToggle method info.

public XEmbedBuilder info(CommandObject command) {
    XEmbedBuilder builder = new XEmbedBuilder(command);
    if (isModule()) {
        builder.withTitle("Module - " + name());
    } else {
        builder.withTitle("Setting - " + name());
    }
    String fullDesc = desc(command);
    if (statsOnInfo()) {
        String stats = stats(command);
        if (stats != null && !stats.isEmpty()) {
            fullDesc += "\n\n**Stats:**\n" + stats;
        }
    }
    builder.withDesc(fullDesc);
    List<String> commandNames = commands.stream().map(command1 -> command1.getCommand(command)).collect(Collectors.toList());
    commandNames.addAll(Globals.getAllCommands().stream().filter(command1 -> command1.type() == affectsType).map(command1 -> command1.getCommand(command)).collect(Collectors.toList()));
    commandNames = commandNames.stream().distinct().collect(Collectors.toList());
    List<SAILType> settingNames = settings.stream().map(guildSetting -> guildSetting.name()).collect(Collectors.toList());
    List<ChannelSetting> channelNames = channels.stream().map(channelSetting -> channelSetting).collect(Collectors.toList());
    if (commandNames.size() != 0) {
        builder.appendField("Commands:", "```\n" + Utility.listFormatter(commandNames, true) + Command.spacer + "```", true);
    }
    if (settingNames.size() != 0) {
        builder.appendField("Settings:", "```\n" + Utility.listEnumFormatter(settingNames, true) + Command.spacer + "```", true);
    }
    if (channelNames.size() != 0) {
        builder.appendField("Channels:", "```\n" + Utility.listEnumFormatter(channelNames, true) + Command.spacer + "```", true);
    }
    StringBuilder footer = new StringBuilder();
    if (isModule())
        footer.append("Module ");
    else
        footer.append("Setting ");
    if (enabled(command.guild.config))
        footer.append("Enabled.");
    else
        footer.append("Disabled.");
    builder.withFooterText(footer.toString());
    return builder;
}
Also used : XEmbedBuilder(com.github.vaerys.objects.XEmbedBuilder) List(java.util.List) CommandObject(com.github.vaerys.commands.CommandObject) Globals(com.github.vaerys.main.Globals) GuildObject(com.github.vaerys.masterobjects.GuildObject) GuildConfig(com.github.vaerys.pogos.GuildConfig) ChannelSetting(com.github.vaerys.enums.ChannelSetting) SAILType(com.github.vaerys.enums.SAILType) Utility(com.github.vaerys.main.Utility) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) XEmbedBuilder(com.github.vaerys.objects.XEmbedBuilder) ChannelSetting(com.github.vaerys.enums.ChannelSetting) SAILType(com.github.vaerys.enums.SAILType)

Example 4 with ChannelSetting

use of com.github.vaerys.enums.ChannelSetting 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 5 with ChannelSetting

use of com.github.vaerys.enums.ChannelSetting in project DiscordSailv2 by Vaerys-Dawn.

the class PatchHandler method changeChannelSettingsToEnum.

private static void changeChannelSettingsToEnum(IGuild guild) {
    PatchObject json = getJsonConfig(guild, ChannelData.FILE_PATH, 1.2, "Change_ChannelSettings_To_Enum");
    if (json == null)
        return;
    JsonArray channelSettings = json.getObject().getAsJsonArray("channelSettings");
    for (int i = 0; i < channelSettings.size(); i++) {
        JsonObject object = channelSettings.get(i).getAsJsonObject();
        String type = object.get("type").getAsString();
        object.remove("type");
        ChannelSetting setting = ChannelSetting.get(type);
        if (setting == null) {
            channelSettings.remove(i);
            i--;
        } else {
            object.addProperty("type", setting.name());
        }
    }
    finalizePatch(json);
}
Also used : JsonArray(com.google.gson.JsonArray) ChannelSetting(com.github.vaerys.enums.ChannelSetting) PatchObject(com.github.vaerys.objects.PatchObject) JsonObject(com.google.gson.JsonObject)

Aggregations

ChannelSetting (com.github.vaerys.enums.ChannelSetting)6 XEmbedBuilder (com.github.vaerys.objects.XEmbedBuilder)4 ArrayList (java.util.ArrayList)3 SAILType (com.github.vaerys.enums.SAILType)2 IChannel (sx.blah.discord.handle.obj.IChannel)2 CommandObject (com.github.vaerys.commands.CommandObject)1 ModuleRoles (com.github.vaerys.guildtoggles.modules.ModuleRoles)1 Globals (com.github.vaerys.main.Globals)1 Utility (com.github.vaerys.main.Utility)1 GuildObject (com.github.vaerys.masterobjects.GuildObject)1 UserObject (com.github.vaerys.masterobjects.UserObject)1 ChannelSettingObject (com.github.vaerys.objects.ChannelSettingObject)1 PatchObject (com.github.vaerys.objects.PatchObject)1 GuildConfig (com.github.vaerys.pogos.GuildConfig)1 GuildToggle (com.github.vaerys.templates.GuildToggle)1 JsonArray (com.google.gson.JsonArray)1 JsonObject (com.google.gson.JsonObject)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1 Collectors (java.util.stream.Collectors)1