use of com.google.common.eventbus.Subscribe in project MantaroBot by Mantaro.
the class AnimeCmds method anime.
@Subscribe
public void anime(CommandRegistry cr) {
cr.register("anime", new SimpleCommand(Category.FUN) {
@Override
public void call(GuildMessageReceivedEvent event, String content, String[] args) {
try {
if (content.isEmpty()) {
onHelp(event);
return;
}
String connection = String.format("https://anilist.co/api/anime/search/%1s?access_token=%2s", URLEncoder.encode(content, "UTF-8"), authToken);
String json = Utils.wgetResty(connection, event);
AnimeData[] type = AnimeData.fromJson(json);
if (type.length == 1) {
animeData(event, type[0]);
return;
}
DiscordUtils.selectList(event, type, anime -> String.format("**[%s (%s)](%s)**", anime.getTitleEnglish(), anime.getTitleJapanese(), "http://anilist.co/anime/" + anime.getId()), s -> baseEmbed(event, "Type the number of the anime you want to select.").setDescription(s).setThumbnail("https://anilist.co/img/logo_al.png").setFooter("Information provided by Anilist. Type &cancel to cancel.", event.getAuthor().getAvatarUrl()).build(), anime -> animeData(event, anime));
} catch (JsonSyntaxException jsonException) {
event.getChannel().sendMessage(EmoteReference.ERROR + "No results found...").queue();
} catch (NullPointerException nullException) {
event.getChannel().sendMessage(EmoteReference.ERROR + "We got a wrong API result for this specific search. Maybe try another one?").queue();
} catch (Exception exception) {
event.getChannel().sendMessage(String.format("%s**I swear I didn't drop your favorite anime!**\n We received a ``%s`` while trying to process the command.", EmoteReference.ERROR, exception.getClass().getSimpleName())).queue();
}
}
@Override
public MessageEmbed help(GuildMessageReceivedEvent event) {
return helpEmbed(event, "Anime command").setDescription("**Get anime info from AniList (For anime characters use ~>character).**").addField("Usage", "`~>anime <animename>` - **Retrieve information of an anime based on the name.**", false).addField("Parameters", "`animename` - **The name of the anime you are looking for. Keep queries similar to their english names!**", false).setColor(Color.PINK).build();
}
});
cr.registerAlias("anime", "animu");
}
use of com.google.common.eventbus.Subscribe in project MantaroBot by Mantaro.
the class AnimeCmds method character.
@Subscribe
public void character(CommandRegistry cr) {
cr.register("character", new SimpleCommand(Category.FUN) {
@Override
public void call(GuildMessageReceivedEvent event, String content, String[] args) {
try {
if (content.isEmpty()) {
onHelp(event);
return;
}
String url = String.format("https://anilist.co/api/character/search/%1s?access_token=%2s", URLEncoder.encode(content, "UTF-8"), authToken);
String json = Utils.wgetResty(url, event);
CharacterData[] character = CharacterData.fromJson(json);
if (character.length == 1) {
characterData(event, character[0]);
return;
}
DiscordUtils.selectList(event, character, character1 -> String.format("**[%s %s](%s)**", character1.getLastName() == null ? "" : character1.getLastName(), character1.getFirstName(), "http://anilist.co/character/" + character1.getId()), s -> baseEmbed(event, "Type the number of the character you want to select.").setDescription(s).setThumbnail("https://anilist.co/img/logo_al.png").setFooter("Information provided by Anilist. Type &cancel to cancel.", event.getAuthor().getAvatarUrl()).build(), character1 -> characterData(event, character1));
} catch (JsonSyntaxException jsonException) {
event.getChannel().sendMessage(EmoteReference.ERROR + "No results found...").queue();
} catch (NullPointerException nullException) {
event.getChannel().sendMessage(EmoteReference.ERROR + "We got a wrong API result for this specific search. Maybe try another one?").queue();
} catch (Exception exception) {
event.getChannel().sendMessage(String.format("%s**I swear I didn't d-drop your waifu, please forgive me!**\nI got ``%s`` while trying to process this command.", EmoteReference.ERROR, exception.getClass().getSimpleName())).queue();
}
}
@Override
public MessageEmbed help(GuildMessageReceivedEvent event) {
return helpEmbed(event, "Character command").setDescription("**Get character info from AniList (For anime use `~>anime`).**").addField("Usage", "`~>character <name>` - **Retrieve information of a charactrer based on the name.**", false).addField("Parameters", "`name` - **The name of the character you are looking for. Keep queries similar to their romanji names!**", false).setColor(Color.PINK).build();
}
});
cr.registerAlias("character", "char");
}
use of com.google.common.eventbus.Subscribe in project MantaroBot by Mantaro.
the class CurrencyCmds method transferItems.
@Subscribe
public void transferItems(CommandRegistry cr) {
cr.register("itemtransfer", new SimpleCommand(Category.CURRENCY) {
RateLimiter rl = new RateLimiter(TimeUnit.SECONDS, 10);
@Override
protected void call(GuildMessageReceivedEvent event, String content, String[] args) {
if (args.length < 2) {
onError(event);
return;
}
List<User> mentionedUsers = event.getMessage().getMentionedUsers();
if (mentionedUsers.size() == 0) {
event.getChannel().sendMessage(EmoteReference.ERROR + "You need to mention a user").queue();
} else {
User giveTo = mentionedUsers.get(0);
if (event.getAuthor().getId().equals(giveTo.getId())) {
event.getChannel().sendMessage(EmoteReference.ERROR + "You cannot transfer items to yourself!").queue();
return;
}
if (giveTo.isBot()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "You cannot transfer items to a bot.").queue();
return;
}
if (!handleDefaultRatelimit(rl, event.getAuthor(), event))
return;
Item item = Items.fromAny(args[1]).orElse(null);
if (item == null) {
event.getChannel().sendMessage("There isn't an item associated with this emoji.").queue();
} else {
Player player = MantaroData.db().getPlayer(event.getAuthor());
Player giveToPlayer = MantaroData.db().getPlayer(giveTo);
if (player.isLocked()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "You cannot transfer items now.").queue();
return;
}
if (args.length == 2) {
if (player.getInventory().containsItem(item)) {
if (item.isHidden()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "You cannot transfer this item!").queue();
return;
}
if (giveToPlayer.getInventory().asMap().getOrDefault(item, new ItemStack(item, 0)).getAmount() >= 5000) {
event.getChannel().sendMessage(EmoteReference.ERROR + "This player has the maximum possible amount of this item (5000).").queue();
return;
}
player.getInventory().process(new ItemStack(item, -1));
giveToPlayer.getInventory().process(new ItemStack(item, 1));
event.getChannel().sendMessage(String.format("%s%s gave 1 **%s** to %s", EmoteReference.OK, event.getMember().getEffectiveName(), item.getName(), event.getGuild().getMember(giveTo).getEffectiveName())).queue();
} else {
event.getChannel().sendMessage(EmoteReference.ERROR + "You don't have any of these items in your inventory").queue();
}
player.saveAsync();
giveToPlayer.saveAsync();
return;
}
try {
int amount = Math.abs(Integer.parseInt(args[2]));
if (player.getInventory().containsItem(item) && player.getInventory().getAmount(item) >= amount) {
if (item.isHidden()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "You cannot transfer this item!").queue();
return;
}
if (giveToPlayer.getInventory().asMap().getOrDefault(item, new ItemStack(item, 0)).getAmount() + amount > 5000) {
event.getChannel().sendMessage(EmoteReference.ERROR + "This player would exceed the maximum possible amount of this item (5000).").queue();
return;
}
player.getInventory().process(new ItemStack(item, amount * -1));
giveToPlayer.getInventory().process(new ItemStack(item, amount));
event.getChannel().sendMessage(String.format("%s%s gave %d **%s** to %s", EmoteReference.OK, event.getMember().getEffectiveName(), amount, item.getName(), event.getGuild().getMember(giveTo).getEffectiveName())).queue();
} else {
event.getChannel().sendMessage(EmoteReference.ERROR + "You don't have enough of this item to do that").queue();
}
} catch (NumberFormatException nfe) {
event.getChannel().sendMessage(EmoteReference.ERROR + "Invalid number provided").queue();
}
player.saveAsync();
giveToPlayer.saveAsync();
}
}
}
@Override
public MessageEmbed help(GuildMessageReceivedEvent event) {
return helpEmbed(event, "Transfer Items command").setDescription("**Transfers items from you to another player.**").addField("Usage", "`~>itemtransfer <@user> <item emoji or part of the name> <amount (optional)>` - **Transfers the item to player x**", false).addField("Parameters", "`@user` - user to send the item to\n" + "`item emoji` - write out the emoji of the item you want to send, or you can just use part of its name.\n" + "`amount` - optional, send a specific amount of an item to someone.", false).addField("Important", "You cannot send more items than what you already have", false).build();
}
});
cr.registerAlias("itemtransfer", "transferitems");
}
use of com.google.common.eventbus.Subscribe in project MantaroBot by Mantaro.
the class CustomCmds method custom.
@Subscribe
public void custom(CommandRegistry cr) {
String any = "[\\d\\D]*?";
cr.register("custom", new SimpleCommand(Category.UTILS) {
@Override
public void call(GuildMessageReceivedEvent event, String content, String[] args) {
if (args.length < 1) {
onHelp(event);
return;
}
String action = args[0];
if (action.equals("list") || action.equals("ls")) {
if (!MantaroCore.hasLoadedCompletely()) {
event.getChannel().sendMessage("The bot hasn't been fully booted up yet... custom commands will be available shortly!").queue();
return;
}
String filter = event.getGuild().getId() + ":";
List<String> commands = customCommands.keySet().stream().filter(s -> s.startsWith(filter)).map(s -> s.substring(filter.length())).collect(Collectors.toList());
EmbedBuilder builder = new EmbedBuilder().setAuthor("Commands for this guild", null, event.getGuild().getIconUrl()).setColor(event.getMember().getColor());
builder.setDescription(commands.isEmpty() ? "There is nothing here, just dust." : checkString(forType(commands)));
event.getChannel().sendMessage(builder.build()).queue();
return;
}
if (action.equals("view")) {
if (args.length < 2) {
event.getChannel().sendMessage(EmoteReference.ERROR + "You need to specify the command and the response number!").queue();
return;
}
String cmd = args[1];
CustomCommand command = db().getCustomCommand(event.getGuild(), cmd);
if (command == null) {
event.getChannel().sendMessage(EmoteReference.ERROR + "There isn't a custom command with that name here!").queue();
return;
}
int number;
try {
number = Integer.parseInt(args[2]) - 1;
} catch (NumberFormatException e) {
event.getChannel().sendMessage(EmoteReference.ERROR + "That's not a number...").queue();
return;
}
if (command.getValues().size() < number) {
event.getChannel().sendMessage(EmoteReference.ERROR + "This commands has less responses than the number you specified...").queue();
return;
}
event.getChannel().sendMessage(String.format("**Response `%d` for custom command `%s`:** \n```\n%s```", (number + 1), command.getName(), command.getValues().get(number))).queue();
return;
}
if (action.equals("raw")) {
if (args.length < 2) {
onHelp(event);
return;
}
String cmd = args[1];
if (!NAME_PATTERN.matcher(cmd).matches()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "Not allowed character.").queue();
return;
}
CustomCommand custom = db().getCustomCommand(event.getGuild(), cmd);
if (custom == null) {
event.getChannel().sendMessage(EmoteReference.ERROR2 + "There's no Custom Command ``" + cmd + "`` in this Guild.").queue();
return;
}
Pair<String, Integer> pair = DiscordUtils.embedList(custom.getValues(), Object::toString);
String pasted = null;
if (pair.getRight() < custom.getValues().size()) {
AtomicInteger i = new AtomicInteger();
pasted = Utils.paste(custom.getValues().stream().map(s -> i.incrementAndGet() + s).collect(Collectors.joining("\n")));
}
EmbedBuilder embed = baseEmbed(event, "Command \"" + cmd + "\":").setDescription(pair.getLeft()).setFooter("(Showing " + pair.getRight() + " responses of " + custom.getValues().size() + ")", null);
if (pasted != null && pasted.contains("hastebin.com")) {
embed.addField("Pasted content", pasted, false);
}
event.getChannel().sendMessage(embed.build()).queue();
return;
}
if (db().getGuild(event.getGuild()).getData().isCustomAdminLock() && !CommandPermission.ADMIN.test(event.getMember())) {
event.getChannel().sendMessage("This guild only accepts custom command creation, edits, imports and eval from administrators.").queue();
return;
}
if (action.equals("clear")) {
if (!CommandPermission.ADMIN.test(event.getMember())) {
event.getChannel().sendMessage(EmoteReference.ERROR + "You cannot do that, silly.").queue();
return;
}
List<CustomCommand> customCommands = db().getCustomCommands(event.getGuild());
if (customCommands.isEmpty()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "There's no Custom Commands registered in this Guild, just dust.").queue();
}
int size = customCommands.size();
customCommands.forEach(CustomCommand::deleteAsync);
customCommands.forEach(c -> CustomCmds.customCommands.remove(c.getId()));
event.getChannel().sendMessage(EmoteReference.PENCIL + "Cleared **" + size + " Custom Commands**!").queue();
return;
}
if (args.length < 2) {
onHelp(event);
return;
}
String cmd = args[1];
if (action.equals("make")) {
if (!NAME_PATTERN.matcher(cmd).matches()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "Not allowed character.").queue();
return;
}
List<String> responses = new ArrayList<>();
boolean created = InteractiveOperations.create(event.getChannel(), 60, e -> {
if (!e.getAuthor().equals(event.getAuthor()))
return Operation.IGNORED;
String c = e.getMessage().getContentRaw();
if (!c.startsWith("&"))
return Operation.IGNORED;
c = c.substring(1);
if (c.startsWith("~>cancel") || c.startsWith("~>stop")) {
event.getChannel().sendMessage(EmoteReference.CORRECT + "Command Creation canceled.").queue();
return Operation.COMPLETED;
}
if (c.startsWith("~>save")) {
String arg = c.substring(6).trim();
String saveTo = !arg.isEmpty() ? arg : cmd;
if (!NAME_PATTERN.matcher(cmd).matches()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "Not allowed character.").queue();
return Operation.RESET_TIMEOUT;
}
if (cmd.length() >= 100) {
event.getChannel().sendMessage(EmoteReference.ERROR + "Name is too long.").queue();
return Operation.RESET_TIMEOUT;
}
if (DefaultCommandProcessor.REGISTRY.commands().containsKey(saveTo) && !DefaultCommandProcessor.REGISTRY.commands().get(saveTo).equals(customCommand)) {
event.getChannel().sendMessage(EmoteReference.ERROR + "A command already exists with this name!").queue();
return Operation.RESET_TIMEOUT;
}
if (responses.isEmpty()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "No responses were added. Stopping creation without saving...").queue();
} else {
CustomCommand custom = CustomCommand.of(event.getGuild().getId(), cmd, responses);
// save at DB
custom.saveAsync();
// reflect at local
customCommands.put(custom.getId(), custom.getValues());
// add mini-hack
DefaultCommandProcessor.REGISTRY.commands().put(cmd, customCommand);
event.getChannel().sendMessage(EmoteReference.CORRECT + "Saved to command ``" + cmd + "``!").queue();
// easter egg :D
TextChannelGround.of(event).dropItemWithChance(8, 2);
}
return Operation.COMPLETED;
}
responses.add(c.replace("@everyone", "[nice meme]").replace("@here", "[you tried]"));
e.getMessage().addReaction(EmoteReference.CORRECT.getUnicode()).queue();
return Operation.RESET_TIMEOUT;
}) != null;
if (created) {
event.getChannel().sendMessage(EmoteReference.PENCIL + "Started **\"Creation of Custom Command ``" + cmd + "``\"**!\nSend ``&~>stop`` to stop creation **without saving**.\nSend ``&~>save`` to stop creation an **save the new Command**. Send any text beginning with ``&`` to be added to the Command Responses.\nThis Interactive Operation ends without saving after 60 seconds of inactivity.").queue();
} else {
event.getChannel().sendMessage(EmoteReference.ERROR + "There's already an Interactive Operation happening on this channel.").queue();
}
return;
}
if (action.equals("eval")) {
try {
runCustom(content.replace("eval ", ""), event);
} catch (Exception e) {
event.getChannel().sendMessage(EmoteReference.ERROR + "There was an error while evaluating your command!" + (e.getMessage() == null ? "" : " (E: " + e.getMessage() + ")")).queue();
}
return;
}
if (action.equals("remove") || action.equals("rm")) {
if (!NAME_PATTERN.matcher(cmd).matches()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "Not allowed character.").queue();
return;
}
CustomCommand custom = db().getCustomCommand(event.getGuild(), cmd);
if (custom == null) {
event.getChannel().sendMessage(EmoteReference.ERROR2 + "There's no Custom Command ``" + cmd + "`` in this Guild.").queue();
return;
}
// delete at DB
custom.deleteAsync();
// reflect at local
customCommands.remove(custom.getId());
// clear commands if none
if (customCommands.keySet().stream().noneMatch(s -> s.endsWith(":" + cmd)))
DefaultCommandProcessor.REGISTRY.commands().remove(cmd);
event.getChannel().sendMessage(EmoteReference.PENCIL + "Removed Custom Command ``" + cmd + "``!").queue();
return;
}
if (action.equals("import")) {
if (!NAME_WILDCARD_PATTERN.matcher(cmd).matches()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "Not allowed character.").queue();
return;
}
Map<String, Guild> mapped = MantaroBot.getInstance().getMutualGuilds(event.getAuthor()).stream().collect(Collectors.toMap(ISnowflake::getId, g -> g));
List<Pair<Guild, CustomCommand>> filtered = MantaroData.db().getCustomCommandsByName(("*" + cmd + "*").replace("*", any)).stream().map(customCommand -> {
Guild guild = mapped.get(customCommand.getGuildId());
return guild == null ? null : Pair.of(guild, customCommand);
}).filter(Objects::nonNull).collect(Collectors.toList());
if (filtered.size() == 0) {
event.getChannel().sendMessage(EmoteReference.ERROR + "There are no custom commands matching your search query.").queue();
return;
}
DiscordUtils.selectList(event, filtered, pair -> "``" + pair.getValue().getName() + "`` - Guild: ``" + pair.getKey() + "``", s -> baseEmbed(event, "Select the Command:").setDescription(s).setFooter("(You can only select custom commands from guilds that you are a member of)", null).build(), pair -> {
String cmdName = pair.getValue().getName();
List<String> responses = pair.getValue().getValues();
CustomCommand custom = CustomCommand.of(event.getGuild().getId(), cmdName, responses);
// save at DB
custom.saveAsync();
// reflect at local
customCommands.put(custom.getId(), custom.getValues());
event.getChannel().sendMessage(String.format("Imported custom command ``%s`` from guild `%s` with responses ``%s``", cmdName, pair.getKey().getName(), String.join("``, ``", responses))).queue();
// easter egg :D
TextChannelGround.of(event).dropItemWithChance(8, 2);
});
return;
}
if (args.length < 3) {
onHelp(event);
return;
}
String value = args[2];
if (action.equals("edit")) {
CustomCommand custom = db().getCustomCommand(event.getGuild(), cmd);
if (custom == null) {
event.getChannel().sendMessage(EmoteReference.ERROR2 + "There's no Custom Command ``" + cmd + "`` in this Guild.").queue();
return;
}
String[] vals = StringUtils.splitArgs(value, 2);
int where;
try {
where = Math.abs(Integer.parseInt(vals[0]));
} catch (NumberFormatException e) {
event.getChannel().sendMessage(EmoteReference.ERROR + "You need to specify a correct number to change!").queue();
return;
}
List<String> values = custom.getValues();
if (where - 1 > values.size()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "You cannot edit a non-existent index!").queue();
return;
}
if (vals[1].isEmpty()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "Cannot edit to an empty response!").queue();
return;
}
custom.getValues().set(where - 1, vals[1]);
custom.saveAsync();
customCommands.put(custom.getId(), custom.getValues());
event.getChannel().sendMessage(EmoteReference.CORRECT + "Edited response **#" + where + "** of the command `" + custom.getName() + "` correctly!").queue();
return;
}
if (action.equals("rename")) {
if (!NAME_PATTERN.matcher(cmd).matches() || !NAME_PATTERN.matcher(value).matches()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "Not allowed character.").queue();
return;
}
if (DefaultCommandProcessor.REGISTRY.commands().containsKey(value) && !DefaultCommandProcessor.REGISTRY.commands().get(value).equals(customCommand)) {
event.getChannel().sendMessage(EmoteReference.ERROR + "A command already exists with this name!").queue();
return;
}
CustomCommand oldCustom = db().getCustomCommand(event.getGuild(), cmd);
if (oldCustom == null) {
event.getChannel().sendMessage(EmoteReference.ERROR2 + "There's no Custom Command ``" + cmd + "`` in this Guild.").queue();
return;
}
CustomCommand newCustom = CustomCommand.of(event.getGuild().getId(), value, oldCustom.getValues());
// change at DB
oldCustom.deleteAsync();
newCustom.saveAsync();
// reflect at local
customCommands.remove(oldCustom.getId());
customCommands.put(newCustom.getId(), newCustom.getValues());
// add mini-hack
DefaultCommandProcessor.REGISTRY.commands().put(value, customCommand);
// clear commands if none
if (customCommands.keySet().stream().noneMatch(s -> s.endsWith(":" + cmd)))
DefaultCommandProcessor.REGISTRY.commands().remove(cmd);
event.getChannel().sendMessage(EmoteReference.CORRECT + "Renamed command ``" + cmd + "`` to ``" + value + "``!").queue();
// easter egg :D
TextChannelGround.of(event).dropItemWithChance(8, 2);
return;
}
if (action.equals("add") || action.equals("new")) {
if (!NAME_PATTERN.matcher(cmd).matches()) {
event.getChannel().sendMessage(EmoteReference.ERROR + "Not allowed character.").queue();
return;
}
if (cmd.length() >= 100) {
event.getChannel().sendMessage(EmoteReference.ERROR + "Name is too long.").queue();
return;
}
if (DefaultCommandProcessor.REGISTRY.commands().containsKey(cmd) && !DefaultCommandProcessor.REGISTRY.commands().get(cmd).equals(customCommand)) {
event.getChannel().sendMessage(EmoteReference.ERROR + "A command already exists with this name!").queue();
return;
}
CustomCommand custom = CustomCommand.of(event.getGuild().getId(), cmd, Collections.singletonList(value.replace("@everyone", "[nice meme]").replace("@here", "[you tried]")));
if (action.equals("add")) {
CustomCommand c = db().getCustomCommand(event, cmd);
if (c != null)
custom.getValues().addAll(c.getValues());
}
// save at DB
custom.saveAsync();
// reflect at local
customCommands.put(custom.getId(), custom.getValues());
// add mini-hack
DefaultCommandProcessor.REGISTRY.commands().put(cmd, customCommand);
event.getChannel().sendMessage(EmoteReference.CORRECT + "Saved to command ``" + cmd + "``!").queue();
// easter egg :D
TextChannelGround.of(event).dropItemWithChance(8, 2);
return;
}
onHelp(event);
}
@Override
public String[] splitArgs(String content) {
return SPLIT_PATTERN.split(content, 3);
}
@Override
public MessageEmbed help(GuildMessageReceivedEvent event) {
return helpEmbed(event, "CustomCommand Manager").setDescription("**Manages the Custom Commands of the Guild.**").addField("Guide", "https://github.com/Mantaro/MantaroBot/wiki/Custom-Commands", false).addField("Usage:", "`~>custom` - Shows this help\n" + "`~>custom <list|ls>` - **List all commands. If detailed is supplied, it prints the responses of each command.**\n" + "`~>custom clear` - **Remove all Custom Commands from this Guild. (ADMIN-ONLY)**\n" + "`~>custom add <name> <response>` - **Creates or adds the response provided to a custom command.**\n" + "`~>custom make <name>` - **Starts a Interactive Operation to create a command with the specified name.**\n" + "`~>custom <remove|rm> <name>` - **Removes a command with an specific name.**\n" + "`~>custom import <search>` - **Imports a command from another guild you're in.**\n" + "`~>custom eval <response>` - **Tests how a custom command response will look**\n" + "`~>custom edit <name> <response number> <new content>` - **Edits one response of the specified command**\n" + "`~>custom view <name> <response number>` - **Views the content of one response**\n" + "`~>custom rename <previous name> <new name>` - **Renames a custom command**", false).addField("Considerations", "If you wish to dissallow normal people from making custom commands, run `~>opts admincustom true`", false).build();
}
});
}
use of com.google.common.eventbus.Subscribe in project MantaroBot by Mantaro.
the class FunCmds method roll.
@Subscribe
public void roll(CommandRegistry registry) {
final RateLimiter rateLimiter = new RateLimiter(TimeUnit.SECONDS, 10);
registry.register("roll", new SimpleCommand(Category.FUN) {
@Override
protected void call(GuildMessageReceivedEvent event, String content, String[] args) {
if (!Utils.handleDefaultRatelimit(rateLimiter, event.getAuthor(), event))
return;
Map<String, Optional<String>> opts = StringUtils.parse(args);
int size = 6, amount = 1;
if (opts.containsKey("size")) {
try {
size = Integer.parseInt(opts.get("size").orElse(""));
} catch (Exception ignored) {
}
}
if (opts.containsKey("amount")) {
try {
amount = Integer.parseInt(opts.get("amount").orElse(""));
} catch (Exception ignored) {
}
} else if (opts.containsKey(null)) {
// Backwards Compatibility
try {
amount = Integer.parseInt(opts.get(null).orElse(""));
} catch (Exception ignored) {
}
}
if (amount >= 100)
amount = 100;
event.getChannel().sendMessage(String.format("%sYou got **%d**%s", EmoteReference.DICE, diceRoll(size, amount), amount == 1 ? "!" : (", doing **" + amount + "** rolls."))).queue();
TextChannelGround.of(event.getChannel()).dropItemWithChance(Items.LOADED_DICE, 5);
}
@Override
public MessageEmbed help(GuildMessageReceivedEvent event) {
return helpEmbed(event, "Dice command").setDescription("Roll a any-sided dice a 1 or more times\n" + "`~>roll [-amount <number>] [-size <number>]`: Rolls a dice of the specified size the specified times.\n" + "(By default, this command will roll a 6-sized dice 1 time.)").build();
}
});
}
Aggregations