diff options
Diffstat (limited to 'bot.py')
-rw-r--r-- | bot.py | 28 |
1 files changed, 23 insertions, 5 deletions
@@ -21,10 +21,13 @@ class Cupido(commands.Bot): self.reaction_map = {} self.vote_map = {} self.read_file() - self.score_map = dd(lambda: 0) + self.reset_scoreboard() self.oldgroups = set() self.admin_channel = admin_channel + def reset_scoreboard(self): + self.score_map = dd(lambda: 0) + def read_file(self): try: with open(config.TUTOR_FILE_PATH, 'r') as f: @@ -63,10 +66,11 @@ class Cupido(commands.Bot): async def create_voice_channel(self, ctx, name, category=None): channel = await ctx.guild.create_voice_channel( - config.LOBBY_CHANNEL_NAME, + name, category=self.meta_channel, ) await channel.set_permissions(ctx.guild.default_role, **config.CHANNEL_PERMISSIONS) + await channel.set_permissions(self.user, **config.BOT_PERMISSIONS) return channel async def create_lobby(self, ctx): @@ -141,6 +145,7 @@ class Cupido(commands.Bot): embed = discord.Embed(title=config.PANEL_TITLE, type="rich", description=text, colour=discord.Colour.purple()) msg = await channel.send(embed=embed) await await_n(map(msg.add_reaction, emojis)) + self.vote_map[user.id] = None return msg async def destroy_pair_channels(self, ctx, meta_channel): @@ -209,12 +214,25 @@ class Cupido(commands.Bot): self.vote_map = {} async def update_score(self, member): - if member.id in self.tutors or member.id not in self.vote_map or self.vote_map[member.id] is None: + if member.id in self.tutors or member.id not in self.vote_map: return vote = self.vote_map[member.id] channel = self.get_dm_channel(member) - name = self.get_username(vote) - if vote.id in self.tutors: + name = None if vote is None else self.get_username(vote) + tutorset = set(self.tutors) + possible_votes = self.reaction_map[member.id].values() + tutors = {tutor for tutor in possible_votes if tutor.id in tutorset} + if vote is None and tutors: + self.score_map[member] += config.PASS_BAD_POINTS + text = config.PASS_BAD_TEXT.format(points=self.score_map[member], tutor=', '.join(self.get_username(tutor) for tutor in tutors)) + color = discord.Colour.red() + title = config.PASS_BAD_TITLE + elif vote is None: + self.score_map[member] += config.PASS_GOOD_POINTS + text = config.PASS_GOOD_TEXT.format(points=self.score_map[member]) + color = discord.Colour.green() + title = config.PASS_GOOD_TITLE + elif vote.id in self.tutors: self.score_map[member] += config.SUCCESS_POINTS text = config.SUCCESS_TEXT.format(tutor=name, points=self.score_map[member]) color = discord.Colour.green() |