Search in sources :

Example 1 with Config

use of net.kodehawa.mantarobot.data.Config in project MantaroBot by Mantaro.

the class MantaroShard method updateStatus.

void updateStatus() {
    Runnable changeStatus = () -> {
        AtomicInteger users = new AtomicInteger(0), guilds = new AtomicInteger(0);
        if (MantaroBot.getInstance() != null) {
            Arrays.stream(MantaroBot.getInstance().getShards()).map(MantaroShard::getJDA).forEach(jda -> {
                users.addAndGet(jda.getUsers().size());
                guilds.addAndGet(jda.getGuilds().size());
            });
        }
        String newStatus = random(SPLASHES.get(), RANDOM).replace("%ramgb%", String.valueOf(((long) (Runtime.getRuntime().maxMemory() * 1.2D)) >> 30L)).replace("%usercount%", users.toString()).replace("%guildcount%", guilds.toString()).replace("%shardcount%", String.valueOf(getTotalShards())).replace("%prettyusercount%", pretty(users.get())).replace("%prettyguildcount%", pretty(guilds.get()));
        getJDA().getPresence().setGame(Game.of(config().get().prefix + "help | " + newStatus + " | [" + getId() + "]"));
        log.debug("Changed status to: " + newStatus);
    };
    changeStatus.run();
    Async.task("Splash Thread", changeStatus, 600, TimeUnit.SECONDS);
}
Also used : LoginException(javax.security.auth.login.LoginException) Arrays(java.util.Arrays) Getter(lombok.Getter) Async(br.com.brjdevs.java.utils.async.Async) LoggerFactory(org.slf4j.LoggerFactory) Random(java.util.Random) Unirest(com.mashape.unirest.http.Unirest) RateLimitedException(net.dv8tion.jda.core.exceptions.RateLimitedException) JSONObject(org.json.JSONObject) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Holder(br.com.brjdevs.java.utils.holding.objects.Holder) JDA(net.dv8tion.jda.core.JDA) Delegate(lombok.experimental.Delegate) SimpleFileDataManager(net.kodehawa.mantarobot.utils.data.SimpleFileDataManager) Config(net.kodehawa.mantarobot.data.Config) CommandListener(net.kodehawa.mantarobot.core.listeners.command.CommandListener) MantaroData.config(net.kodehawa.mantarobot.data.MantaroData.config) Logger(org.slf4j.Logger) InteractiveOperations(net.kodehawa.mantarobot.core.listeners.operations.InteractiveOperations) Game(net.dv8tion.jda.core.entities.Game) JDABuilder(net.dv8tion.jda.core.JDABuilder) MantaroListener(net.kodehawa.mantarobot.core.listeners.MantaroListener) AccountType(net.dv8tion.jda.core.AccountType) ReactionOperations(net.kodehawa.mantarobot.core.listeners.operations.ReactionOperations) MantaroEventManager(net.kodehawa.mantarobot.core.MantaroEventManager) TimeUnit(java.util.concurrent.TimeUnit) DataManager(net.kodehawa.mantarobot.utils.data.DataManager) List(java.util.List) CollectionUtils.random(br.com.brjdevs.java.utils.collections.CollectionUtils.random) Carbonitex(net.kodehawa.mantarobot.services.Carbonitex) NativeAudioSendFactory(com.sedmelluq.discord.lavaplayer.jdaudp.NativeAudioSendFactory) AtomicInteger(java.util.concurrent.atomic.AtomicInteger)

Example 2 with Config

use of net.kodehawa.mantarobot.data.Config in project MantaroBot by Mantaro.

the class MantaroShard method updateServerCount.

public void updateServerCount() {
    Config config = config().get();
    Holder<Integer> guildCount = new Holder<>(jda.getGuilds().size());
    String dbotsToken = config.dbotsToken;
    String dbotsorgToken = config.dbotsorgToken;
    if (dbotsToken != null || dbotsorgToken != null) {
        Async.task("Botlist API update Thread", () -> {
            int newC = jda.getGuilds().size();
            try {
                guildCount.accept(newC);
                if (dbotsToken != null) {
                    log.debug("Successfully posted the botdata to bots.discord.pw: " + Unirest.post("https://bots.discord.pw/api/bots/" + jda.getSelfUser().getId() + "/stats").header("Authorization", dbotsToken).header("Content-Type", "application/json").body(new JSONObject().put("server_count", newC).put("shard_id", getId()).put("shard_count", totalShards).toString()).asString().getBody());
                }
                if (dbotsorgToken != null) {
                    log.debug("Successfully posted the botdata to discordbots.org: " + Unirest.post("https://discordbots.org/api/bots/" + jda.getSelfUser().getId() + "/stats").header("Authorization", dbotsorgToken).header("Content-Type", "application/json").body(new JSONObject().put("server_count", newC).put("shard_id", getId()).put("shard_count", totalShards).toString()).asString().getBody());
                }
            } catch (Exception e) {
                log.warn("An error occurred while posting the botdata to discord lists (DBots/Carbonitex/DBots.org)", e);
            }
        }, 1, TimeUnit.HOURS);
    }
    //Carbon is special now.
    Async.task(new Carbonitex(jda, getId(), getTotalShards()), 30, TimeUnit.MINUTES);
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Carbonitex(net.kodehawa.mantarobot.services.Carbonitex) JSONObject(org.json.JSONObject) Config(net.kodehawa.mantarobot.data.Config) Holder(br.com.brjdevs.java.utils.holding.objects.Holder) LoginException(javax.security.auth.login.LoginException) RateLimitedException(net.dv8tion.jda.core.exceptions.RateLimitedException)

Example 3 with Config

use of net.kodehawa.mantarobot.data.Config in project MantaroBot by Mantaro.

the class CommandRegistry method process.

public boolean process(GuildMessageReceivedEvent event, String cmdname, String content) {
    Command cmd = commands.get(cmdname);
    Config conf = MantaroData.config().get();
    DBGuild dbg = MantaroData.db().getGuild(event.getGuild());
    GuildData data = dbg.getData();
    if (cmd == null)
        return false;
    if (data.getDisabledCommands().contains(cmdname)) {
        return false;
    }
    if (data.getChannelSpecificDisabledCommands().get(event.getChannel().getId()) != null && data.getChannelSpecificDisabledCommands().get(event.getChannel().getId()).contains(cmdname)) {
        return false;
    }
    if (data.getDisabledUsers().contains(event.getAuthor().getId())) {
        return false;
    }
    if (MantaroData.db().getGuild(event.getGuild()).getData().getDisabledChannels().contains(event.getChannel().getId()) && cmd.category() != Category.MODERATION) {
        return false;
    }
    if (MantaroData.config().get().isPremiumBot() && cmd.category() == Category.CURRENCY) {
        return false;
    }
    if (data.getDisabledCategories().contains(cmd.category())) {
        return false;
    }
    //If we are in the patreon bot, deny all requests from unknown guilds.
    if (conf.isPremiumBot() && !conf.isOwner(event.getAuthor()) && !dbg.isPremium()) {
        event.getChannel().sendMessage(EmoteReference.ERROR + "Seems like you're trying to use the Patreon bot when this guild is **not** marked as premium. " + "**If you think this is an error please contact Kodehawa#3457 or poke me on #donators in the support guild**").queue();
        return false;
    }
    if (!cmd.permission().test(event.getMember())) {
        event.getChannel().sendMessage(EmoteReference.STOP + "You have no permissions to trigger this command").queue();
        return false;
    }
    cmd.run(event, cmdname, content);
    return true;
}
Also used : GuildData(net.kodehawa.mantarobot.data.entities.helpers.GuildData) DBGuild(net.kodehawa.mantarobot.data.entities.DBGuild) AliasCommand(net.kodehawa.mantarobot.modules.commands.AliasCommand) Command(net.kodehawa.mantarobot.modules.commands.base.Command) Config(net.kodehawa.mantarobot.data.Config)

Aggregations

Config (net.kodehawa.mantarobot.data.Config)3 Holder (br.com.brjdevs.java.utils.holding.objects.Holder)2 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)2 LoginException (javax.security.auth.login.LoginException)2 RateLimitedException (net.dv8tion.jda.core.exceptions.RateLimitedException)2 Carbonitex (net.kodehawa.mantarobot.services.Carbonitex)2 JSONObject (org.json.JSONObject)2 Async (br.com.brjdevs.java.utils.async.Async)1 CollectionUtils.random (br.com.brjdevs.java.utils.collections.CollectionUtils.random)1 Unirest (com.mashape.unirest.http.Unirest)1 NativeAudioSendFactory (com.sedmelluq.discord.lavaplayer.jdaudp.NativeAudioSendFactory)1 Arrays (java.util.Arrays)1 List (java.util.List)1 Random (java.util.Random)1 TimeUnit (java.util.concurrent.TimeUnit)1 Getter (lombok.Getter)1 Delegate (lombok.experimental.Delegate)1 AccountType (net.dv8tion.jda.core.AccountType)1 JDA (net.dv8tion.jda.core.JDA)1 JDABuilder (net.dv8tion.jda.core.JDABuilder)1