summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNatrixAeria <upezu@student.kit.edu>2020-10-19 14:21:17 +0200
committerNatrixAeria <upezu@student.kit.edu>2020-10-19 14:21:17 +0200
commit867d9fe61528de345e6b0ce38b49771002d8fe3a (patch)
tree76c448dd4e6e6e6915fa50f4fe3576b570bb6cf4
parent329ef7561eb70e9aa57474e4bf8d1c3bfb3b88b4 (diff)
Only have one tutor per chat
-rw-r--r--commands.py33
1 files changed, 16 insertions, 17 deletions
diff --git a/commands.py b/commands.py
index 0a10b7f..e9982aa 100644
--- a/commands.py
+++ b/commands.py
@@ -66,25 +66,24 @@ async def shuffle(ctx: commands.Context, channel_size=2):
return False
channel_count, excess_slots = divmod(len(members), channel_size)
- counts = [0] * channel_count
- for i, _ in enumerate(members):
- counts[i % len(counts)] += 1
- random.shuffle(counts)
- slots = [j for i, c in enumerate(counts) for j in [i] * c]
- slots = random.sample(slots, k=len(members))
-
- ctx.bot.pair_channels = await ctx.bot.create_pair_channels(ctx, meta_channel, channel_count)
+ normals = []
+ tutors = []
+ random.shuffle(members)
+ for member in members:
+ if member.id in ctx.bot.tutors:
+ tutors.append(member)
+ else:
+ normals.append(member)
futures = []
+ ctx.bot.pair_channels = await ctx.bot.create_pair_channels(ctx, meta_channel, channel_count)
groups = [[] for _ in range(channel_count)]
- member_slot_map = []
- for (member, slot) in zip(members, slots):
- channel = ctx.bot.pair_channels[slot]
- futures.append(member.move_to(channel))
- groups[slot].append(member)
- member_slot_map.append(slot)
- for member, slot in zip(members, member_slot_map):
- group = groups[slot]
- futures.append(ctx.bot.send_panel(ctx, member, group))
+ for i, member in enumerate(tutors + normals):
+ n = i % channel_count
+ futures.append(member.move_to(ctx.bot.pair_channels[n]))
+ groups[n].append(member)
+ for group in groups:
+ for member in group:
+ futures.append(ctx.bot.send_panel(ctx, member, group))
await await_n(futures)
return True