Esempio n. 1
0
 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.")
Esempio n. 2
0
 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
Esempio n. 3
0
    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"]})
Esempio n. 4
0
 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.")
Esempio n. 5
0
    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()
Esempio n. 6
0
 def update_server(self):
     try:
         self.server = main_methods.get_server_configs()[self.guild_id]
     except:
         self.server = None