use of me.shadorc.shadbot.exception.MissingArgumentException in project Shadbot by Shadorc.
the class BackwardCmd method execute.
@Override
public void execute(Context context) throws MissingArgumentException, IllegalCmdArgumentException {
GuildMusic guildMusic = GuildMusicManager.GUILD_MUSIC_MAP.get(context.getGuild().getLongID());
if (guildMusic == null || guildMusic.getScheduler().isStopped()) {
BotUtils.sendMessage(TextUtils.NO_PLAYING_MUSIC, context.getChannel());
return;
}
if (!context.hasArg()) {
throw new MissingArgumentException();
}
Long num = CastUtils.asPositiveLong(context.getArg());
if (num == null) {
try {
num = TimeUtils.parseTime(context.getArg());
} catch (IllegalArgumentException err) {
throw new IllegalCmdArgumentException(String.format("`%s` is not a valid number / time.", context.getArg()));
}
}
long newPosition = guildMusic.getScheduler().changePosition(-TimeUnit.SECONDS.toMillis(num));
BotUtils.sendMessage(String.format(Emoji.CHECK_MARK + " New position: **%s**", FormatUtils.formatShortDuration(newPosition)), context.getChannel());
}
use of me.shadorc.shadbot.exception.MissingArgumentException in project Shadbot by Shadorc.
the class ForwardCmd method execute.
@Override
public void execute(Context context) throws MissingArgumentException, IllegalCmdArgumentException {
GuildMusic guildMusic = GuildMusicManager.GUILD_MUSIC_MAP.get(context.getGuild().getLongID());
if (guildMusic == null || guildMusic.getScheduler().isStopped()) {
BotUtils.sendMessage(TextUtils.NO_PLAYING_MUSIC, context.getChannel());
return;
}
if (!context.hasArg()) {
throw new MissingArgumentException();
}
Long num = CastUtils.asPositiveLong(context.getArg());
if (num == null) {
try {
num = TimeUtils.parseTime(context.getArg());
} catch (IllegalArgumentException err) {
throw new IllegalCmdArgumentException(String.format("`%s` is not a valid number / time.", context.getArg()));
}
}
long newPosition = guildMusic.getScheduler().changePosition(TimeUnit.SECONDS.toMillis(num));
BotUtils.sendMessage(String.format(Emoji.CHECK_MARK + " New position: **%s**", FormatUtils.formatShortDuration(newPosition)), context.getChannel());
}
use of me.shadorc.shadbot.exception.MissingArgumentException in project Shadbot by Shadorc.
the class KickCmd method execute.
@Override
public void execute(Context context) throws MissingArgumentException, IllegalCmdArgumentException {
if (!context.hasArg()) {
throw new MissingArgumentException();
}
List<IUser> mentionedUsers = context.getMessage().getMentions();
if (mentionedUsers.isEmpty()) {
throw new MissingArgumentException();
}
if (!PermissionUtils.hasPermissions(context.getChannel(), context.getAuthor(), Permissions.KICK)) {
throw new IllegalArgumentException("You don't have permission to kick.");
}
if (!BotUtils.hasPermissions(context.getChannel(), Permissions.KICK)) {
BotUtils.sendMessage(TextUtils.missingPerm(Permissions.KICK), context.getChannel());
return;
}
if (mentionedUsers.contains(context.getAuthor())) {
throw new IllegalCmdArgumentException("You cannot kick yourself.");
}
for (IUser mentionedUser : mentionedUsers) {
if (!PermissionUtils.isUserHigher(context.getGuild(), context.getAuthor(), mentionedUser)) {
throw new IllegalCmdArgumentException(String.format("You can't kick **%s** because he has the same or a higher role " + "position than you in the role hierarchy.", mentionedUser.getName()));
}
if (!BotUtils.canInteract(context.getGuild(), mentionedUser)) {
throw new IllegalCmdArgumentException(String.format("I cannot kick **%s** because he has the same or a higher role " + "position than me in the role hierarchy.", mentionedUser.getName()));
}
}
StringBuilder reason = new StringBuilder();
reason.append(StringUtils.remove(context.getArg(), FormatUtils.format(mentionedUsers, user -> user.mention(false), " ")).trim());
if (reason.length() > Ban.MAX_REASON_LENGTH) {
throw new IllegalCmdArgumentException(String.format("Reason cannot exceed **%d characters**.", Ban.MAX_REASON_LENGTH));
}
if (reason.length() == 0) {
reason.append("Reason not specified.");
}
for (IUser user : mentionedUsers) {
if (!user.isBot()) {
BotUtils.sendMessage(String.format(Emoji.INFO + " You were kicked from the server **%s** by **%s**. Reason: `%s`", context.getGuild().getName(), context.getAuthorName(), reason), user.getOrCreatePMChannel());
}
RequestBuffer.request(() -> {
context.getGuild().kickUser(user, reason.toString());
}).get();
}
BotUtils.sendMessage(String.format(Emoji.INFO + " (Requested by **%s**) **%s** got kicked. Reason: `%s`", context.getAuthorName(), FormatUtils.format(mentionedUsers, IUser::getName, ", "), reason), context.getChannel());
}
use of me.shadorc.shadbot.exception.MissingArgumentException in project Shadbot by Shadorc.
the class SettingsCmd method execute.
@Override
public void execute(Context context) throws MissingArgumentException, IllegalCmdArgumentException {
List<String> splitArgs = StringUtils.split(context.getArg(), 2);
if (splitArgs.isEmpty()) {
throw new MissingArgumentException();
}
SettingEnum settingEnum = Utils.getValueOrNull(SettingEnum.class, splitArgs.get(0));
if (settingEnum == null || !SETTINGS_MAP.containsKey(settingEnum)) {
throw new IllegalCmdArgumentException(String.format("Setting `%s` does not exist. Use `%shelp %s` to see all available settings.", splitArgs.get(0), context.getPrefix(), this.getName()));
}
AbstractSetting setting = SETTINGS_MAP.get(settingEnum);
String arg = splitArgs.size() == 2 ? splitArgs.get(1) : null;
if ("help".equals(arg)) {
BotUtils.sendMessage(this.getHelp(context.getPrefix(), setting), context.getChannel());
return;
}
try {
setting.execute(context, arg);
} catch (MissingArgumentException e) {
BotUtils.sendMessage(new MessageBuilder(context.getClient()).withChannel(context.getChannel()).withContent(TextUtils.MISSING_ARG).withEmbed(this.getHelp(context.getPrefix(), setting)));
}
}
use of me.shadorc.shadbot.exception.MissingArgumentException in project Shadbot by Shadorc.
the class SoftBanCmd method execute.
@Override
public void execute(Context context) throws MissingArgumentException, IllegalCmdArgumentException {
if (!context.hasArg()) {
throw new MissingArgumentException();
}
List<IUser> mentionedUsers = context.getMessage().getMentions();
if (mentionedUsers.isEmpty()) {
throw new MissingArgumentException();
}
if (!PermissionUtils.hasPermissions(context.getChannel(), context.getAuthor(), Permissions.BAN)) {
throw new IllegalArgumentException("You don't have permission to ban.");
}
if (!BotUtils.hasPermissions(context.getChannel(), Permissions.BAN)) {
BotUtils.sendMessage(TextUtils.missingPerm(Permissions.BAN), context.getChannel());
return;
}
if (mentionedUsers.contains(context.getAuthor())) {
throw new IllegalCmdArgumentException("You cannot softban yourself.");
}
for (IUser mentionedUser : mentionedUsers) {
if (!PermissionUtils.isUserHigher(context.getGuild(), context.getAuthor(), mentionedUser)) {
throw new IllegalCmdArgumentException(String.format("You can't softban **%s** because he has the same or a higher role " + "position than you in the role hierarchy.", mentionedUser.getName()));
}
if (!BotUtils.canInteract(context.getGuild(), mentionedUser)) {
throw new IllegalCmdArgumentException(String.format("I cannot softban **%s** because he has the same or a higher role " + "position than me in the role hierarchy.", mentionedUser.getName()));
}
}
StringBuilder reason = new StringBuilder();
reason.append(StringUtils.remove(context.getArg(), FormatUtils.format(mentionedUsers, user -> user.mention(false), " ")).trim());
if (reason.length() > Ban.MAX_REASON_LENGTH) {
throw new IllegalCmdArgumentException(String.format("Reason cannot exceed **%d characters**.", Ban.MAX_REASON_LENGTH));
}
if (reason.length() == 0) {
reason.append("Reason not specified.");
}
for (IUser user : mentionedUsers) {
if (!user.isBot()) {
BotUtils.sendMessage(String.format(Emoji.INFO + " You were softbanned from the server **%s** by **%s**. Reason: `%s`", context.getGuild().getName(), context.getAuthorName(), reason), user.getOrCreatePMChannel());
}
RequestBuffer.request(() -> {
context.getGuild().banUser(user, reason.toString(), 7);
});
RequestBuffer.request(() -> {
context.getGuild().pardonUser(user.getLongID());
});
}
BotUtils.sendMessage(String.format(Emoji.INFO + " (Requested by **%s**) **%s** got softbanned. Reason: `%s`", context.getAuthorName(), FormatUtils.format(mentionedUsers, IUser::getName, ", "), reason), context.getChannel());
}
Aggregations