while (matcher.find()) for (Guild g : jda.getGuilds())
private JSONArray buildShards() { JSONArray shards = new JSONArray(); for (JDA shard : metrics.getAvaire().getShardManager().getShards()) { JSONObject stats = new JSONObject(); stats.put("id", shard.getShardInfo().getShardId()) .put("guilds", shard.getGuilds().size()) .put("users", shard.getUsers().size()) .put("status", shard.getStatus()) .put("channels", (shard.getTextChannels().size() + shard.getVoiceChannels().size())) .put("latency", shard.getPing()); shards.put(stats); } return shards; }
private String buildPayload(SelfUser selfUser) { JSONObject main = new JSONObject(); JSONObject bot = new JSONObject(); bot.put("name", selfUser.getName()); bot.put("avatar", selfUser.getAvatarId()); main.put("bot", bot); JSONArray shards = new JSONArray(); for (JDA shard : avaire.getShardManager().getShards()) { JSONObject shardObj = new JSONObject(); shardObj.put("id", shard.getShardInfo().getShardId()); shardObj.put("latency", shard.getPing()); shardObj.put("users", shard.getUsers().size()); shardObj.put("channels", getTotalChannels(shard)); shardObj.put("guilds", shard.getGuilds().size()); shards.put(shardObj); } main.put("shards", shards); return main.toString(); }
public void sendStatsToDiscordbotsOrg() { if (BotConfig.BOT_TOKEN_DISCORDBOTS_ORG.length() < 10) { return; } JSONObject data = new JSONObject(); data.put("server_count", getJda().getGuilds().size()); if (totShards > 1) { data.put("shard_id", shardId); data.put("shard_count", totShards); } Unirest.post("https://discordbots.org/api/bots/" + getJda().getSelfUser().getId() + "/stats") .header("Authorization", BotConfig.BOT_TOKEN_DISCORDBOTS_ORG) .header("Content-Type", "application/json") .body(data.toString()) .asJsonAsync(); }
public void sendStatsToDiscordPw() { if (!BotConfig.BOT_STATS_DISCORD_PW_ENABLED) { return; } JSONObject data = new JSONObject(); data.put("server_count", getJda().getGuilds().size()); if (totShards > 1) { data.put("shard_id", shardId); data.put("shard_count", totShards); } Unirest.post("https://bots.discord.pw/api/bots/" + getJda().getSelfUser().getId() + "/stats") .header("Authorization", BotConfig.BOT_TOKEN_BOTS_DISCORD_PW) .header("Content-Type", "application/json") .body(data.toString()) .asJsonAsync(); }
@Override public void onCommand(User sender, GuildWrapper guild, TextChannel channel, Message message, String[] args, Member member) { PagedTableBuilder tb = new PagedTableBuilder(); tb.addColumn("Shard ID"); tb.addColumn("Status"); tb.addColumn("Ping"); tb.addColumn("Guild Count"); tb.addColumn("Connected VCs"); List<JDA> shards = new ArrayList<>(Getters.getShards()); Collections.reverse(shards); for (JDA jda : shards) { List<String> row = new ArrayList<>(); row.add(ShardUtils.getDisplayShardId(jda) + (ShardUtils.getShardId(channel.getJDA()) == ShardUtils.getShardId(jda) ? " (You)" : "")); row.add(WordUtils.capitalizeFully(jda.getStatus().toString().replace("_", " "))); row.add(String.valueOf(jda.getPing())); row.add(String.valueOf(jda.getGuilds().size())); row.add(String.valueOf(jda.getVoiceChannels().stream().filter(vc -> vc.getMembers().contains(vc.getGuild() .getSelfMember())).count())); tb.addRow(row); } PaginationUtil.sendPagedMessage(channel, tb.build(), 0, sender, ButtonGroupConstants.SHARDINFO); }
/** * sends stats to discordlist.net */ public void sendStatsToDiscordlistNet() { if (!BotConfig.BOT_STATS_DISCORDLIST_NET || !allShardsReady()) { return; } int totGuilds = 0; for (DiscordBot shard : shards) { totGuilds += shard.getJda().getGuilds().size(); } Unirest.post("https://bots.discordlist.net/api.php") .field("token", BotConfig.BOT_STATS_DISCORDLIST_NET_TOKEN) .field("servers", totGuilds) .asStringAsync(); }
double totRequestPerSec = 0D; for (DiscordBot shard : bot.getContainer().getShards()) { List<Guild> guilds = shard.getJda().getGuilds(); int numGuilds = guilds.size(); int users = shard.getJda().getUsers().size(); int activeVoice = 0; long requests = shard.getJda().getResponseTotal(); for (Guild guild : shard.getJda().getGuilds()) { if (guild.getAudioManager().isConnected()) { activeVoice++;
public void onTrackUpdate(long guildId, AudioTrack track, AudioHandler handler) { // update bot status if applicable if(bot.getConfig().getSongInStatus()) { if(track!=null && bot.getJDA().getGuilds().stream().filter(g -> g.getSelfMember().getVoiceState().inVoiceChannel()).count()<=1) bot.getJDA().getPresence().setGame(Game.listening(track.getInfo().title)); else bot.resetGame(); } // update channel topic if applicable updateTopic(guildId, handler, false); }
int totGuilds = 0, totUsers = 0, totChannels = 0, totVoice = 0, totActiveVoice = 0; for (DiscordBot shard : bot.getShards()) { List<Guild> guilds = shard.getJda().getGuilds(); int numGuilds = guilds.size(); int users = shard.getJda().getUsers().size(); int voiceChannels = shard.getJda().getVoiceChannels().size(); int activeVoice = 0; for (Guild guild : shard.getJda().getGuilds()) { if (guild.getAudioManager().isConnected()) { activeVoice++;
public void shutdown() { if(shuttingDown) return; shuttingDown = true; threadpool.shutdownNow(); if(jda.getStatus()!=JDA.Status.SHUTTING_DOWN) { jda.getGuilds().stream().forEach(g -> { g.getAudioManager().closeAudioConnection(); AudioHandler ah = (AudioHandler)g.getAudioManager().getSendingHandler(); if(ah!=null) { ah.stopAndClear(); ah.getPlayer().destroy(); nowplaying.updateTopic(g.getIdLong(), ah, true); } }); jda.shutdown(); } if(gui!=null) gui.dispose(); System.exit(0); }
List<List<String>> body = new ArrayList<>(); for (DiscordBot discordBot : container.getShards()) { for (Guild guild : discordBot.getJda().getGuilds()) { if (guild.getAudioManager().isConnected()) { activeVoice++;
@Override public void handle(AvaIre avaire) { Metrics.uptime.labels("dynamic").set(ManagementFactory.getRuntimeMXBean().getUptime()); Metrics.memoryTotal.set(Runtime.getRuntime().totalMemory()); Metrics.memoryUsed.set(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()); if (!avaire.areWeReadyYet() || !hasLoadedGuilds(avaire)) { return; } Metrics.guilds.set(avaire.getShardEntityCounter().getGuilds()); Metrics.users.set(avaire.getShardEntityCounter().getUsers()); Metrics.channels.labels("text").set(avaire.getShardEntityCounter().getTextChannels()); Metrics.channels.labels("voice").set(avaire.getShardEntityCounter().getVoiceChannels()); for (Region region : Region.values()) { Metrics.geoTracker.labels(region.getName()).set(0); } for (JDA shard : avaire.getShardManager().getShards()) { for (Guild guild : shard.getGuilds()) { Metrics.geoTracker.labels(guild.getRegion().getName()).inc(); } } }
long thirtyMinutesAgo = Carbon.now().subMinutes(30).getTimestamp(); for (Guild guild : jda.getGuilds()) { if (!guild.getSelfMember().hasPermission(Permission.MANAGE_ROLES)) { continue;
/** * shutdown hook, closing connections * */ private static void shutdownHook() { if (botContainer != null) { for (DiscordBot discordBot : botContainer.getShards()) { for (Guild guild : discordBot.getJda().getGuilds()) { AudioManager audio = guild.getAudioManager(); if (audio.isConnected()) { CBotPlayingOn.insert(guild.getId(), audio.getConnectedChannel().getId()); } } discordBot.getJda().shutdown(); } } }
/** * Mark the shard as ready, the bot will start working once all shards are marked as ready */ public void markReady() { if (isReady) { return; } mentionMe = "<@" + this.getJda().getSelfUser().getId() + ">"; mentionMeAlias = "<@!" + this.getJda().getSelfUser().getId() + ">"; sendStatsToDiscordPw(); sendStatsToDiscordbotsOrg(); isReady = true; RoleRankings.fixRoles(this.getJda().getGuilds()); container.allShardsReady(); }
@Override public void run() { for (DiscordBot discordBot : bot.getShards()) { List<Guild> guilds = discordBot.getJda().getGuilds(); for (Guild guild : guilds) { GuildSettings settings = GuildSettings.get(guild); if (settings != null && settings.getBoolValue(GSetting.USER_TIME_RANKS) && RoleRankings.canModifyRoles(guild, discordBot.getJda().getSelfUser())) { try { handleGuild(discordBot, guild); } catch (Exception e) { Launcher.logToDiscord(e, "guild", guild.getId(), "name", guild.getName()); } } } } }
@Override protected void execute(CommandEvent event) { Settings s = event.getClient().getSettingsFor(event.getGuild()); MessageBuilder builder = new MessageBuilder() .append(EMOJI + " **") .append(event.getSelfUser().getName()) .append("** settings:"); TextChannel tchan = s.getTextChannel(event.getGuild()); VoiceChannel vchan = s.getVoiceChannel(event.getGuild()); Role role = s.getRole(event.getGuild()); EmbedBuilder ebuilder = new EmbedBuilder() .setColor(event.getSelfMember().getColor()) .setDescription("Text Channel: "+(tchan==null ? "Any" : "**#"+tchan.getName()+"**") + "\nVoice Channel: "+(vchan==null ? "Any" : "**"+vchan.getName()+"**") + "\nDJ Role: "+(role==null ? "None" : "**"+role.getName()+"**") + "\nRepeat Mode: **"+(s.getRepeatMode() ? "On" : "Off")+"**" + "\nDefault Playlist: "+(s.getDefaultPlaylist()==null ? "None" : "**"+s.getDefaultPlaylist()+"**") ) .setFooter(event.getJDA().getGuilds().size()+" servers | " +event.getJDA().getGuilds().stream().filter(g -> g.getSelfMember().getVoiceState().inVoiceChannel()).count() +" audio connections", null); event.getChannel().sendMessage(builder.setEmbed(ebuilder.build()).build()).queue(); }
), true), new MessageEmbed.Field("Guild Stats", I18n.format("**{0}** Guilds in Shard\n**{1}** Total Guilds", NumberUtil.formatNicely(context.getJDA().getGuilds().size()), NumberUtil.formatNicely(avaire.getShardManager().getGuilds().size()) ), true)