diff --git a/modules/bot.py b/modules/bot.py index 8b72a38..f56993f 100644 --- a/modules/bot.py +++ b/modules/bot.py @@ -754,6 +754,9 @@ async def processmsg(self, msg): elif lower[0]=="cancel": self.cancel_match(member, lower[1:2], access_level) + elif lower[0]=="register": + await self.register_player(member, msgtup[1:msglen], access_level) + elif lower[0] in ["reportwin", "rw"]: self.report_match(member, args=lower[1:3], access_level=access_level) @@ -1185,7 +1188,6 @@ def pick_player(self, member, args): else: who = match.team_names[1] - who_stat = player_stats.get_player() msg += "\n{0}'s {1} turn to pick!".format(who, who_stat) client.notice(self.channel, msg) else: @@ -2092,6 +2094,43 @@ async def set_phrase(self, member, args, access_level): else: client.reply(self.channel, member, "You have no right for this!") + async def register_player(self, member, args, access_level): + # .register_player @person 12234343434 + + def is_valid_2k4_id(ut_2k4_id): + formatted_string = f"{s[:8]}-{s[8:16]}-{s[16:24]}-{s[24:32]}" + pattern = re.compile(r'^[A-F0-9]{8}-[A-F0-9]{8}-[A-F0-9]{8}-[A-F0-9]{8}$') + return bool(pattern.match(formatted_string)) + + def normalize_2k4_id(ut_2k4_id): + return ut_2k4_id.replace('-', '').lower() + + if access_level: + targetid = args.pop(0) + highlight = re.match(r"<@!?(\d+)>", targetid) + + if highlight: + target = await self.guild.fetch_member(int(highlight.group(1))) + member_id = target.id + nick = target.nick + ut_2k4_id = args[-1] + + ut_2k4_id = normalize_2k4_id(ut_2k4_id) + if is_valid_2k4_id(ut_2k4_id): + player = players.Player( + name=nick, + discord_id=member_id, + ut_2k4_id=ut_2k4_id + ) + + player_stats.add_player(player) + else: + client.reply(self.channel, member, "Targets 2k4 GUID is not valid. Proper command is `.register_player @mention `") + else: + client.reply(self.channel, member, "You must @mention a valid discord member. Proper command is `.register_player @mention `") + else: + client.reply(self.channel, member, "You have no right for this!") + async def noadd(self, member, args, access_level): if access_level: reason = '' diff --git a/modules/players.py b/modules/players.py index e649822..84b7fc6 100644 --- a/modules/players.py +++ b/modules/players.py @@ -98,11 +98,11 @@ def _load_player_stats(self, ttl_hash=None): AND m.gm_numplayers >= 8 AND m.gm_tscore0 + m.gm_tscore1 >= 10 AND IF(gp.gp_team = 0, gp.gp_tscore0, gp.gp_tscore1) > 0 - AND m.gm_start BETWEEN FROM_UNIXTIME(1714521600) AND FROM_UNIXTIME(1718849956) + AND datediff(curdate(), m.gm_start) <= 60 ) SELECT - player_match_history.plr_name as name, + ut_players.name, ut_players.DISCORD_ID, player_match_history.plr_key as player_guid, SUM(Score) / SUM(Rounds) as PPR,