summaryrefslogtreecommitdiff
path: root/bot.py
diff options
context:
space:
mode:
Diffstat (limited to 'bot.py')
-rw-r--r--bot.py28
1 files changed, 23 insertions, 5 deletions
diff --git a/bot.py b/bot.py
index 72753dd..71635cb 100644
--- a/bot.py
+++ b/bot.py
@@ -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()