async def convert(cls, ctx, argument): teamname = None try: trole = await super().convert(ctx, argument) database.cur.execute("SELECT teamname FROM teamTable WHERE teamroleid=%s;" % trole.id) teamname = database.cur.fetchone() if teamname == None: return None teamname = teamname[0] except: database.cur.execute("SELECT teamname FROM teamTable WHERE lower(teamname)='%s';" % argument.lower()) teamname = database.cur.fetchone() if teamname == None: return None teamname = teamname[0] database.cur.execute("SELECT teamname, captainID FROM teamTable WHERE teamname='%s';" % teamname) data = database.cur.fetchone() team = Team(teamname) captainID = data[1] team.captain = captainID database.cur.execute("SELECT discordID FROM playerTable WHERE team='%s';" % teamname) members = database.cur.fetchall() for id in members: team.add_player(bot.guild.get_member(id[0])) captain = bot.guild.get_member(captainID) if bot.guild.get_role(bot.NA_ROLE) in captain.roles: team.region = "NA" elif bot.guild.get_role(bot.EU_ROLE) in captain.roles: team.region = "EU" database.cur.execute("SELECT awards FROM teamTable WHERE teamname='%s';" % teamname) team.awards = database.cur.fetchone()[0] return team
class Draft: def __init__(self, num_teams=12, per_team=13, starting_money=200): self.num_teams = num_teams self.team_size = per_team self.money_pool = starting_money * num_teams self.max_players_drafted = num_teams * per_team self.player_pool = Fantasy().players self.player_pool = self.sort(self.player_pool) self.drafted_players = [] self.player_costs = self.estimate_costs() self.team = Team("my team") def sort(self, pool): return sorted(pool, key=lambda p: p.score, reverse=True) def show(self, count=15): self.estimate_costs(True, count) def show_drafted(self): i = 0 for p in self.drafted_players: print(f"{i}. {p}") i += 1 def undraft(self, i, cost): player = self.drafted_players.pop(i) print(f"Undrafting {player} for {cost}") self.player_pool.append(player) self.money_pool += cost def i_undraft(self, i, cost): player = self.drafted_players.pop(i) print(f"You undrafting {player} for {cost}") self.player_pool.append(player) self.money_pool += cost self.team.players.remove(player) def show_team(self): self.team.show() def i_draft(self, i, cost): player = self.player_pool.pop(i) print(f"You drafted {player} for ${cost}") self.team.add_player(player) self.drafted_players.append(player) self.money_pool -= cost def draft_player(self, i, cost): player = self.player_pool.pop(i) print(f"{player} drafted for ${cost}") self.drafted_players.append(player) self.money_pool -= cost def estimate_costs(self, verbose=False, shown=15): count = self.max_players_drafted - len(self.drafted_players) players = self.player_pool[:count] economy = self.money_pool total_score = reduce(lambda x, y: x + y, [p.score for p in players]) point_cost = economy / total_score player_costs = [(p, int(p.score * point_cost)) for p in players] if verbose: print(f"Total score: {int(total_score)}") print(f"Total money: {int(economy)}") print("Cost per point: {0:.2f}".format(point_cost)) print() i = 0 for player, cost in player_costs[:shown]: print(f"{i}. {player}: ${cost}") i += 1 return player_costs