aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Scragly <[email protected]>2019-04-21 20:02:00 +1000
committerGravatar Scragly <[email protected]>2019-04-21 20:02:00 +1000
commit81e36629da6bd664d35f74f2792bb28d45760acd (patch)
tree969f7eb4b5dbcd1c8f81858a4866f36961af58a6
parentMerge pull request #195 from python-discord/egg_hunt (diff)
Make team assignment deterministic for event distribution.
-rw-r--r--bot/seasons/easter/egg_hunt/cog.py18
1 files changed, 11 insertions, 7 deletions
diff --git a/bot/seasons/easter/egg_hunt/cog.py b/bot/seasons/easter/egg_hunt/cog.py
index 7c6214d2..7d592bba 100644
--- a/bot/seasons/easter/egg_hunt/cog.py
+++ b/bot/seasons/easter/egg_hunt/cog.py
@@ -44,14 +44,18 @@ async def assign_team(user: discord.Member) -> discord.Member:
c.execute(f"SELECT team FROM user_scores WHERE user_id = {user.id}")
result = c.fetchone()
if not result:
- new_team = random.choice([Roles.white, Roles.blurple])
- log.debug(f"Assigned role {new_team} to {user}.")
+ c.execute(
+ "SELECT team, COUNT(*) AS count FROM user_scores "
+ "GROUP BY team ORDER BY count ASC LIMIT 1;"
+ )
+ result = c.fetchone()[0]
+
+ if result[0] == "WHITE":
+ new_team = Roles.white
else:
- if result[0] == "WHITE":
- new_team = Roles.white
- else:
- new_team = Roles.blurple
- log.debug(f"Restored role {new_team} to {user}.")
+ new_team = Roles.blurple
+
+ log.debug(f"Assigned role {new_team} to {user}.")
await user.add_roles(new_team)
return GUILD.get_member(user.id)