async def predicate(ctx): server_config = main_methods.get_server_configs() config = main_methods.get_configs() if str(ctx.guild.id) in server_config: if (ctx.author.id in server_config[str(ctx.guild.id)]["bot_guild_admins"] or server_config[str(ctx.guild.id)]["guild_admin_is_bot_admin"] and ctx.message.author.guild_permissions.administrator or ctx.message.author.id == ctx.guild.owner.id): return True raise NotBotAdminLocal("This command requires you to have bot admin permissions on this server. If you feel like you should have the permissions, please contact the server owner.")
async def predicate(ctx): server_config = main_methods.get_server_configs() if str(ctx.guild.id) in server_config: if (server_config[str(ctx.guild.id)]["require_setup_permissions"] and (ctx.author.id not in server_config[str(ctx.guild.id)]["bot_guild_moderators"] and ctx.author.id not in server_config[str(ctx.guild.id)]["bot_guild_admins"] and not ctx.author.guild_permissions.administrator)): raise InadequatePermissions("This server requires special permissions for scrim management. Please contact the server owner if you feel like you should be able to manage scrims on the server.") return True
def __init__(self, client): self.client = client self.server_config = main_methods.get_server_configs() # dictionary to help in the creation of emojis self.emoji_games = {} game_dict = main_methods.get_game_config() for category in game_dict["Games"]: for game in game_dict["Games"][category]: self.emoji_games.update( {game: game_dict["Games"][category][game]["dispname"]})
async def predicate(ctx): server_config = main_methods.get_server_configs() if str(ctx.guild.id) in server_config: if (server_config[str(ctx.guild.id)]["guild_admin_is_bot_admin"] and (ctx.message.author.guild_permissions.administrator or ctx.message.author.id in server_config[str(ctx.guild.id)]["bot_guild_admins"])): return True elif ctx.message.author.id in server_config[str(ctx.guild.id)]["bot_guild_admins"]: return True elif ctx.message.author.guild_permissions.administrator: return True raise NotSettingsEligible("You do not have required permissions to manage server settings.")
async def leaderboard(self, ctx, stat_game=None, stat="elo", length=None): if not stat_game: return await scrim_methods.temporary_feedback( ctx, "Please specify a game. Type '/help games' for a list of all supported games." ) if length: try: length = int(length) except: return await scrim_methods.temporary_feedback( ctx, "Please specify length as a whole number.") else: try: length = int(stat) stat = "elo" except: pass for game in elo_methods.Game.instances: if stat_game in game.alias['alias']: stat_game = game break else: return await scrim_methods.temporary_feedback( ctx, f"Couldn't find the game '{stat_game}'. Type '/help games' for a list of all supported games." ) leaderboard = {} if not length: try: length = main_methods.get_server_configs()[str( ctx.message.guild.id)]["lb_default"] except: length = 25 try: max = main_methods.get_server_configs()[str( ctx.message.guild.id)]["lb_max"] except: max = 100 if stat in ("elo", "wins", "losses"): for player_id in game.players: for member in ctx.message.guild.members: if str(member.id) == player_id: leaderboard[member.display_name] = int( game.players[player_id][stat]) break elif stat in ("winloss"): for player_id in game.players: for member in ctx.message.guild.members: if str(member.id) == player_id: if game.players[player_id]['losses'] > 0: leaderboard[member.display_name] = float( round( game.players[player_id]['wins'] / (game.players[player_id]['losses'] + game.players[player_id]['wins']) * 100, 2)) break elif game.players[player_id]['wins'] > 0: leaderboard[member.display_name] = 100 break elif stat in ("games"): for player_id in game.players: for member in ctx.message.guild.members: if str(member.id) == player_id: leaderboard[member.display_name] = int( game.players[player_id]['wins'] + game.players[player_id]['losses']) break elif stat in ("plusminus", "+-"): for player_id in game.players: for member in ctx.message.guild.members: if str(member.id) == player_id: leaderboard[member.display_name] = int( game.players[player_id]['wins'] - game.players[player_id]['losses']) else: return await scrim_methods.temporary_feedback( ctx, f"Couldn't find the stat '{stat}'. Type '/help leaderboard' for help." ) embedprint = "" counter = 0 #sort the leaderboard for key, value in sorted(leaderboard.items(), key=lambda name: name[1], reverse=True): embedprint += (f"{key}: {value}") if stat in ("winloss"): embedprint += "%\n" else: embedprint += "\n" counter += 1 if (length and length <= counter) or (max and max <= counter): break lb = discord.Embed(color=stat_game.color) lb.set_author(name=f"{stat_game.dispname} leaderboard", icon_url=f"{stat_game.icon}") lb.add_field(name=f"Sorted by {stat}", value=embedprint) await ctx.send(embed=lb) await ctx.message.delete()
def update_server(self): try: self.server = main_methods.get_server_configs()[self.guild_id] except: self.server = None