From 867d9fe61528de345e6b0ce38b49771002d8fe3a Mon Sep 17 00:00:00 2001 From: NatrixAeria Date: Mon, 19 Oct 2020 14:21:17 +0200 Subject: Only have one tutor per chat --- commands.py | 33 ++++++++++++++++----------------- 1 file 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 -- cgit v1.2.3-54-g00ecf