Search in sources :

Example 6 with Command

use of net.kodehawa.mantarobot.modules.Command in project MantaroBot by Mantaro.

the class AnimeCmds method character.

@Command
public static void character(CommandRegistry cr) {
    cr.register("character", new SimpleCommand(Category.FUN) {

        @Override
        public void call(GuildMessageReceivedEvent event, String content, String[] args) {
            try {
                String url = String.format("https://anilist.co/api/character/search/%1s?access_token=%2s", URLEncoder.encode(content, "UTF-8"), authToken);
                String json = Utils.wget(url, event);
                CharacterData[] character = GsonDataManager.GSON_PRETTY.fromJson(json, CharacterData[].class);
                if (character.length == 1) {
                    characterData(event, character[0]);
                    return;
                }
                DiscordUtils.selectList(event, character, character1 -> String.format("**[%s %s](%s)**", character1.name_last == null ? "" : character1.name_last, character1.name_first, "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.", event.getAuthor().getAvatarUrl()).build(), character1 -> characterData(event, character1));
            } catch (Exception e) {
                if (e instanceof JsonSyntaxException) {
                    event.getChannel().sendMessage(EmoteReference.ERROR + "No results!").queue();
                    return;
                }
                log.warn("Problem processing data.", e);
                event.getChannel().sendMessage(EmoteReference.ERROR + "**We have a problem!**\n\n > I got ``" + e.getClass().getSimpleName() + "`` while trying to process this command. \nError: ``" + e.getMessage() + "``").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");
}
Also used : SimpleCommand(net.kodehawa.mantarobot.modules.commands.SimpleCommand) Color(java.awt.Color) Async(br.com.brjdevs.java.utils.async.Async) CharacterData(net.kodehawa.mantarobot.commands.anime.CharacterData) Utils(net.kodehawa.mantarobot.utils.Utils) Module(net.kodehawa.mantarobot.modules.Module) DiscordUtils(net.kodehawa.mantarobot.utils.DiscordUtils) StringUtils(org.apache.commons.lang3.StringUtils) Unirest(com.mashape.unirest.http.Unirest) GuildMessageReceivedEvent(net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent) CommandRegistry(net.kodehawa.mantarobot.modules.CommandRegistry) Command(net.kodehawa.mantarobot.modules.Command) MessageEmbed(net.dv8tion.jda.core.entities.MessageEmbed) PostLoadEvent(net.kodehawa.mantarobot.modules.events.PostLoadEvent) JsonSyntaxException(com.google.gson.JsonSyntaxException) Category(net.kodehawa.mantarobot.modules.commands.base.Category) GsonDataManager(net.kodehawa.mantarobot.utils.data.GsonDataManager) Collectors(java.util.stream.Collectors) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) TimeUnit(java.util.concurrent.TimeUnit) Slf4j(lombok.extern.slf4j.Slf4j) URLEncoder(java.net.URLEncoder) AnimeData(net.kodehawa.mantarobot.commands.anime.AnimeData) EmoteReference(net.kodehawa.mantarobot.utils.commands.EmoteReference) MantaroData(net.kodehawa.mantarobot.data.MantaroData) JsonSyntaxException(com.google.gson.JsonSyntaxException) MessageEmbed(net.dv8tion.jda.core.entities.MessageEmbed) SimpleCommand(net.kodehawa.mantarobot.modules.commands.SimpleCommand) GuildMessageReceivedEvent(net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent) JsonSyntaxException(com.google.gson.JsonSyntaxException) SimpleCommand(net.kodehawa.mantarobot.modules.commands.SimpleCommand) Command(net.kodehawa.mantarobot.modules.Command)

Example 7 with Command

use of net.kodehawa.mantarobot.modules.Command in project MantaroBot by Mantaro.

the class OsuStatsCmd method osustats.

@Command
public static void osustats(CommandRegistry cr) {
    cr.register("osustats", new SimpleCommand(Category.GAMES) {

        @Override
        protected void call(GuildMessageReceivedEvent event, String content, String[] args) {
            String noArgs = content.split(" ")[0];
            TextChannelGround.of(event).dropItemWithChance(4, 5);
            switch(noArgs) {
                case "best":
                    event.getChannel().sendMessage(EmoteReference.STOPWATCH + "Retrieving information from osu! server...").queue(sentMessage -> {
                        Future<String> task = threadpool.submit(() -> best(content));
                        try {
                            sentMessage.editMessage(task.get(16, TimeUnit.SECONDS)).queue();
                        } catch (Exception e) {
                            if (e instanceof TimeoutException) {
                                task.cancel(true);
                                sentMessage.editMessage(EmoteReference.ERROR + "Request timeout. Maybe osu! API is slow?").queue();
                            } else
                                log.warn("Exception thrown while fetching data", e);
                        }
                    });
                    break;
                case "recent":
                    event.getChannel().sendMessage(EmoteReference.STOPWATCH + "Retrieving information from server...").queue(sentMessage -> {
                        Future<String> task = threadpool.submit(() -> recent(content));
                        try {
                            sentMessage.editMessage(task.get(16, TimeUnit.SECONDS)).queue();
                        } catch (Exception e) {
                            if (e instanceof TimeoutException) {
                                task.cancel(true);
                                sentMessage.editMessage(EmoteReference.ERROR + "Request timeout. Maybe osu! API is slow?").queue();
                            } else
                                log.warn("Exception thrown while fetching data", e);
                        }
                    });
                    break;
                case "user":
                    event.getChannel().sendMessage(user(content)).queue();
                    break;
                default:
                    onError(event);
                    break;
            }
        }

        @Override
        public MessageEmbed help(GuildMessageReceivedEvent event) {
            return helpEmbed(event, "osu! command").setDescription("**Retrieves information from the osu!API**.").addField("Usage", "`~>osustats best <player>` - **Retrieves best scores of the user specified in the specified gamemode**.\n" + "`~>osustats recent <player>` - **Retrieves recent scores of the user specified in the specified gamemode.**\n" + "`~>osustats user <player>` - **Retrieves information about a osu! player**.\n", false).addField("Parameters", "`player` - **The osu! player to look info for.**", false).build();
        }
    });
}
Also used : SimpleCommand(net.kodehawa.mantarobot.modules.commands.SimpleCommand) Color(java.awt.Color) UserScore(com.osu.api.ciyfhx.UserScore) Mod(com.osu.api.ciyfhx.Mod) java.util.concurrent(java.util.concurrent) DecimalFormat(java.text.DecimalFormat) Module(net.kodehawa.mantarobot.modules.Module) HashMap(java.util.HashMap) Category(net.kodehawa.mantarobot.modules.commands.base.Category) User(com.osu.api.ciyfhx.User) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) Slf4j(lombok.extern.slf4j.Slf4j) GuildMessageReceivedEvent(net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent) JSONException(org.json.JSONException) List(java.util.List) EmoteReference(net.kodehawa.mantarobot.utils.commands.EmoteReference) Map(java.util.Map) MantaroData(net.kodehawa.mantarobot.data.MantaroData) CommandRegistry(net.kodehawa.mantarobot.modules.CommandRegistry) Command(net.kodehawa.mantarobot.modules.Command) OsuClient(com.osu.api.ciyfhx.OsuClient) MessageEmbed(net.dv8tion.jda.core.entities.MessageEmbed) OsuMod(net.kodehawa.mantarobot.commands.osu.OsuMod) TextChannelGround(net.kodehawa.mantarobot.commands.currency.TextChannelGround) MessageEmbed(net.dv8tion.jda.core.entities.MessageEmbed) SimpleCommand(net.kodehawa.mantarobot.modules.commands.SimpleCommand) GuildMessageReceivedEvent(net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent) JSONException(org.json.JSONException) SimpleCommand(net.kodehawa.mantarobot.modules.commands.SimpleCommand) Command(net.kodehawa.mantarobot.modules.Command)

Example 8 with Command

use of net.kodehawa.mantarobot.modules.Command in project MantaroBot by Mantaro.

the class QuoteCmd method quote.

@Command
public static void quote(CommandRegistry cr) {
    cr.register("quote", new SimpleCommand(Category.MISC) {

        @Override
        protected void call(GuildMessageReceivedEvent event, String content, String[] args) {
            if (content.isEmpty()) {
                onHelp(event);
                return;
            }
            String action = args[0];
            String phrase = content.replace(action + " ", "");
            Guild guild = event.getGuild();
            ManagedDatabase db = MantaroData.db();
            EmbedBuilder builder = new EmbedBuilder();
            SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
            List<Message> messageHistory;
            try {
                messageHistory = event.getChannel().getHistory().retrievePast(100).complete();
            } catch (Exception e) {
                if (e instanceof PermissionException) {
                    event.getChannel().sendMessage(EmoteReference.CRYING + "I don't have permission to do this :<").queue();
                    return;
                }
                event.getChannel().sendMessage(EmoteReference.ERROR + "It seems like discord is on fire, as my" + " " + "request to retrieve message history was denied" + "with the error `" + e.getClass().getSimpleName() + "`").queue();
                log.warn("Shit exploded on Discord's backend. <@155867458203287552>", e);
                return;
            }
            if (action.equals("addfrom")) {
                Message message = messageHistory.stream().filter(msg -> msg.getContent().toLowerCase().contains(phrase.toLowerCase()) && !msg.getContent().startsWith(db.getGuild(guild).getData().getGuildCustomPrefix() == null ? MantaroData.config().get().getPrefix() : db.getGuild(guild).getData().getGuildCustomPrefix()) && !msg.getContent().startsWith(MantaroData.config().get().getPrefix())).findFirst().orElse(null);
                if (message == null) {
                    event.getChannel().sendMessage(EmoteReference.ERROR + "I couldn't find a message matching the specified search" + " criteria. Please try again with a more specific query.").queue();
                    return;
                }
                TextChannel channel = guild.getTextChannelById(message.getChannel().getId());
                Quote quote = Quote.of(guild.getMember(message.getAuthor()), channel, message);
                db.getQuotes(guild).add(quote);
                event.getChannel().sendMessage(buildQuoteEmbed(dateFormat, builder, quote)).queue();
                quote.saveAsync();
                return;
            }
            if (action.equals("random")) {
                try {
                    Quote quote = CollectionUtils.random(db.getQuotes(event.getGuild()));
                    event.getChannel().sendMessage(buildQuoteEmbed(dateFormat, builder, quote)).queue();
                } catch (Exception e) {
                    event.getChannel().sendMessage(EmoteReference.ERROR + "This server has no set quotes!").queue();
                }
                return;
            }
            if (action.equals("readfrom")) {
                try {
                    List<Quote> quotes = db.getQuotes(guild);
                    for (int i2 = 0; i2 < quotes.size(); i2++) {
                        if (quotes.get(i2).getContent().contains(phrase)) {
                            Quote quote = quotes.get(i2);
                            event.getChannel().sendMessage(buildQuoteEmbed(dateFormat, builder, quote)).queue();
                            break;
                        }
                    }
                } catch (Exception e) {
                    event.getChannel().sendMessage(EmoteReference.ERROR + "I didn't find any quotes! (no quotes match the criteria).").queue();
                }
                return;
            }
            if (action.equals("removefrom")) {
                try {
                    List<Quote> quotes = db.getQuotes(guild);
                    for (int i2 = 0; i2 < quotes.size(); i2++) {
                        if (quotes.get(i2).getContent().contains(phrase)) {
                            Quote quote = quotes.get(i2);
                            db.getQuotes(guild).remove(i2);
                            quote.saveAsync();
                            event.getChannel().sendMessage(EmoteReference.CORRECT + "Removed quote with content: " + quote.getContent()).queue();
                            break;
                        }
                    }
                } catch (Exception e) {
                    event.getChannel().sendMessage(EmoteReference.ERROR + "No quotes match the criteria.").queue();
                }
            }
        }

        @Override
        public MessageEmbed help(GuildMessageReceivedEvent event) {
            return helpEmbed(event, "Quote command").setDescription("**Quotes a message by search term.**").addField("Usage", "`~>quote addfrom <phrase>`- **Add a quote with the content defined by the specified number. For example, providing 1 will quote " + "the last message.**\n" + "`~>quote removefrom <phrase>` - **Remove a quote based on your text query.**\n" + "`~>quote readfrom <phrase>` - **Search for the first quote which matches your search criteria and prints " + "it.**\n" + "`~>quote random` - **Get a random quote.** \n", false).addField("Parameters", "`phrase` - A part of the quote phrase.", false).setColor(Color.DARK_GRAY).build();
        }
    });
}
Also used : PermissionException(net.dv8tion.jda.core.exceptions.PermissionException) SimpleCommand(net.kodehawa.mantarobot.modules.commands.SimpleCommand) Color(java.awt.Color) TextChannel(net.dv8tion.jda.core.entities.TextChannel) Date(java.util.Date) Module(net.kodehawa.mantarobot.modules.Module) SimpleDateFormat(java.text.SimpleDateFormat) Category(net.kodehawa.mantarobot.modules.commands.base.Category) Quote(net.kodehawa.mantarobot.data.entities.Quote) Message(net.dv8tion.jda.core.entities.Message) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) Guild(net.dv8tion.jda.core.entities.Guild) PermissionException(net.dv8tion.jda.core.exceptions.PermissionException) Slf4j(lombok.extern.slf4j.Slf4j) GuildMessageReceivedEvent(net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent) List(java.util.List) CollectionUtils(br.com.brjdevs.java.utils.collections.CollectionUtils) EmoteReference(net.kodehawa.mantarobot.utils.commands.EmoteReference) MantaroData(net.kodehawa.mantarobot.data.MantaroData) ManagedDatabase(net.kodehawa.mantarobot.data.db.ManagedDatabase) CommandRegistry(net.kodehawa.mantarobot.modules.CommandRegistry) Command(net.kodehawa.mantarobot.modules.Command) MessageEmbed(net.dv8tion.jda.core.entities.MessageEmbed) MessageEmbed(net.dv8tion.jda.core.entities.MessageEmbed) Message(net.dv8tion.jda.core.entities.Message) Guild(net.dv8tion.jda.core.entities.Guild) PermissionException(net.dv8tion.jda.core.exceptions.PermissionException) Quote(net.kodehawa.mantarobot.data.entities.Quote) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) TextChannel(net.dv8tion.jda.core.entities.TextChannel) SimpleCommand(net.kodehawa.mantarobot.modules.commands.SimpleCommand) List(java.util.List) ManagedDatabase(net.kodehawa.mantarobot.data.db.ManagedDatabase) SimpleDateFormat(java.text.SimpleDateFormat) GuildMessageReceivedEvent(net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent) SimpleCommand(net.kodehawa.mantarobot.modules.commands.SimpleCommand) Command(net.kodehawa.mantarobot.modules.Command)

Example 9 with Command

use of net.kodehawa.mantarobot.modules.Command in project MantaroBot by Mantaro.

the class UtilsCmds method dictionary.

@Command
public static void dictionary(CommandRegistry registry) {
    registry.register("dictionary", new SimpleCommand(Category.UTILS) {

        @Override
        protected void call(GuildMessageReceivedEvent event, String content, String[] args) {
            if (args.length == 0) {
                event.getChannel().sendMessage(EmoteReference.ERROR + "You need to specify a word.").queue();
                return;
            }
            String word = content;
            JSONObject main;
            String definition, part_of_speech, headword, example;
            try {
                main = Unirest.get("http://api.pearson.com/v2/dictionaries/laes/entries?headword=" + word).asJson().getBody().getObject();
                JSONArray results = main.getJSONArray("results");
                JSONObject result = results.getJSONObject(0);
                JSONArray senses = result.getJSONArray("senses");
                headword = result.getString("headword");
                if (result.has("part_of_speech"))
                    part_of_speech = result.getString("part_of_speech");
                else
                    part_of_speech = "Not found.";
                if (senses.getJSONObject(0).get("definition") instanceof JSONArray)
                    definition = senses.getJSONObject(0).getJSONArray("definition").getString(0);
                else
                    definition = senses.getJSONObject(0).getString("definition");
                try {
                    if (senses.getJSONObject(0).getJSONArray("translations").getJSONObject(0).get("example") instanceof JSONArray) {
                        example = senses.getJSONObject(0).getJSONArray("translations").getJSONObject(0).getJSONArray("example").getJSONObject(0).getString("text");
                    } else {
                        example = senses.getJSONObject(0).getJSONArray("translations").getJSONObject(0).getJSONObject("example").getString("text");
                    }
                } catch (Exception e) {
                    example = "Not found";
                }
            } catch (Exception e) {
                event.getChannel().sendMessage(EmoteReference.ERROR + "No results.").queue();
                return;
            }
            EmbedBuilder eb = new EmbedBuilder();
            eb.setAuthor("Definition for " + word, null, event.getAuthor().getAvatarUrl()).setThumbnail("https://upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Wikt_dynamic_dictionary_logo.svg/1000px-Wikt_dynamic_dictionary_logo.svg.png").addField("Definition", "**" + definition + "**", false).addField("Example", "**" + example + "**", false).setDescription(String.format("**Part of speech:** `%s`\n" + "**Headword:** `%s`\n", part_of_speech, headword));
            event.getChannel().sendMessage(eb.build()).queue();
        }

        @Override
        public MessageEmbed help(GuildMessageReceivedEvent event) {
            return helpEmbed(event, "Dictionary command").setDescription("**Looks up a word in the dictionary.**").addField("Usage", "`~>dictionary <word>` - Searches a word in the dictionary.", false).addField("Parameters", "`word` - The word to look for", false).build();
        }
    });
}
Also used : EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) MessageEmbed(net.dv8tion.jda.core.entities.MessageEmbed) SimpleCommand(net.kodehawa.mantarobot.modules.commands.SimpleCommand) JSONObject(org.json.JSONObject) JSONArray(org.json.JSONArray) GuildMessageReceivedEvent(net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent) IOException(java.io.IOException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) SimpleCommand(net.kodehawa.mantarobot.modules.commands.SimpleCommand) Command(net.kodehawa.mantarobot.modules.Command)

Example 10 with Command

use of net.kodehawa.mantarobot.modules.Command in project MantaroBot by Mantaro.

the class MoneyCmds method loot.

@Command
public static void loot(CommandRegistry cr) {
    RateLimiter rateLimiter = new RateLimiter(TimeUnit.MINUTES, 5);
    Random r = new Random();
    cr.register("loot", new SimpleCommand(Category.CURRENCY) {

        @Override
        public void call(GuildMessageReceivedEvent event, String content, String[] args) {
            String id = event.getAuthor().getId();
            Player player = MantaroData.db().getPlayer(event.getMember());
            if (!rateLimiter.process(id)) {
                event.getChannel().sendMessage(EmoteReference.STOPWATCH + "Cooldown a lil bit, you can only do this once every 5 minutes.\n **You'll be able to use this command again " + "in " + Utils.getVerboseTime(rateLimiter.tryAgainIn(event.getAuthor())) + ".**").queue();
                return;
            }
            TextChannelGround ground = TextChannelGround.of(event);
            if (r.nextInt(450) == 0) {
                //1 in 450 chance of it dropping a loot crate.
                ground.dropItem(Items.LOOT_CRATE);
            }
            List<ItemStack> loot = ground.collectItems();
            int moneyFound = ground.collectMoney() + Math.max(0, r.nextInt(50) - 10);
            if (MantaroData.db().getUser(event.getMember()).isPremium() && moneyFound > 0) {
                moneyFound = moneyFound + random.nextInt(moneyFound);
            }
            if (!loot.isEmpty()) {
                String s = ItemStack.toString(ItemStack.reduce(loot));
                String overflow;
                if (player.getInventory().merge(loot)) {
                    overflow = "But you already had too many items, so you decided to throw away the excess. ";
                } else {
                    overflow = "";
                }
                if (moneyFound != 0) {
                    if (player.addMoney(moneyFound)) {
                        event.getChannel().sendMessage(EmoteReference.POPPER + "Digging through messages, you found " + s + ", along " + "with $" + moneyFound + " credits!" + overflow).queue();
                    } else {
                        event.getChannel().sendMessage(EmoteReference.POPPER + "Digging through messages, you found " + s + ", along " + "with $" + moneyFound + " credits. " + overflow + "But you already had too many credits. Your bag overflowed" + ".\nCongratulations, you exploded a Java long. Here's a buggy money bag for you.").queue();
                    }
                } else {
                    event.getChannel().sendMessage(EmoteReference.MEGA + "Digging through messages, you found " + s + ". " + overflow).queue();
                }
            } else {
                if (moneyFound != 0) {
                    if (player.addMoney(moneyFound)) {
                        event.getChannel().sendMessage(EmoteReference.POPPER + "Digging through messages, you found **$" + moneyFound + " credits!**").queue();
                    } else {
                        event.getChannel().sendMessage(EmoteReference.POPPER + "Digging through messages, you found $" + moneyFound + " credits. But you already had too many credits. Your bag overflowed.\nCongratulations, you exploded " + "a Java long. Here's a buggy money bag for you.").queue();
                    }
                } else {
                    event.getChannel().sendMessage(EmoteReference.SAD + "Digging through messages, you found nothing but dust").queue();
                }
            }
            player.save();
        }

        @Override
        public MessageEmbed help(GuildMessageReceivedEvent event) {
            return helpEmbed(event, "Loot command").setDescription("**Loot the current chat for items, for usage in Mantaro's currency system.**\n" + "Currently, there are ``" + Items.ALL.length + "`` items available in chance," + "in which you have a `random chance` of getting one or more.").addField("Usage", "~>loot", false).build();
        }
    });
}
Also used : Player(net.kodehawa.mantarobot.data.entities.Player) MessageEmbed(net.dv8tion.jda.core.entities.MessageEmbed) SimpleCommand(net.kodehawa.mantarobot.modules.commands.SimpleCommand) TextChannelGround(net.kodehawa.mantarobot.commands.currency.TextChannelGround) RateLimiter(net.kodehawa.mantarobot.commands.currency.RateLimiter) GuildMessageReceivedEvent(net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent) SimpleCommand(net.kodehawa.mantarobot.modules.commands.SimpleCommand) Command(net.kodehawa.mantarobot.modules.Command)

Aggregations

Command (net.kodehawa.mantarobot.modules.Command)37 SimpleCommand (net.kodehawa.mantarobot.modules.commands.SimpleCommand)37 GuildMessageReceivedEvent (net.dv8tion.jda.core.events.message.guild.GuildMessageReceivedEvent)31 MessageEmbed (net.dv8tion.jda.core.entities.MessageEmbed)22 DBGuild (net.kodehawa.mantarobot.data.entities.DBGuild)15 EmbedBuilder (net.dv8tion.jda.core.EmbedBuilder)14 MantaroData (net.kodehawa.mantarobot.data.MantaroData)14 GuildData (net.kodehawa.mantarobot.data.entities.helpers.GuildData)14 CommandRegistry (net.kodehawa.mantarobot.modules.CommandRegistry)14 Module (net.kodehawa.mantarobot.modules.Module)14 Category (net.kodehawa.mantarobot.modules.commands.base.Category)14 EmoteReference (net.kodehawa.mantarobot.utils.commands.EmoteReference)14 Collectors (java.util.stream.Collectors)11 TextChannelGround (net.kodehawa.mantarobot.commands.currency.TextChannelGround)11 PostLoadEvent (net.kodehawa.mantarobot.modules.events.PostLoadEvent)11 Utils (net.kodehawa.mantarobot.utils.Utils)11 Color (java.awt.Color)9 TimeUnit (java.util.concurrent.TimeUnit)9 MantaroBot (net.kodehawa.mantarobot.MantaroBot)9 RateLimiter (net.kodehawa.mantarobot.commands.currency.RateLimiter)9