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;
}
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.";
}
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;
}
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.";
}
}
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);
}
}
}
Aggregations