diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b5c5ae..efc40bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ - Bot now use only necessary gateway intents (discord API) - Added proper logger Plugin - Added embed showing player status when using =r command +- Added basic stats display # v3.1: - Fixed some issues with sub command diff --git a/bot/cogs/register.py b/bot/cogs/register.py index 53620f4..dbb05ce 100644 --- a/bot/cogs/register.py +++ b/bot/cogs/register.py @@ -42,7 +42,7 @@ async def register(self, ctx, *args): return player = classes.Player.get(ctx.author.id) if not player: - await display.REG_NO_RULE.send(ctx, cfg.channels["rules"]) + await display.NO_RULE.send(ctx, f"={ctx.command.name}", cfg.channels["rules"]) return msg = await _register(player, ctx, args) @@ -52,7 +52,7 @@ async def register(self, ctx, *args): async def notify(self, ctx): player = classes.Player.get(ctx.author.id) if not player: - await display.REG_NO_RULE.send(ctx, cfg.channels["rules"]) + await display.NO_RULE.send(ctx, f"={ctx.command.name}", cfg.channels["rules"]) return if player.is_notify: player.is_notify = False diff --git a/bot/display/embeds.py b/bot/display/embeds.py index c2b45a4..ac4c729 100644 --- a/bot/display/embeds.py +++ b/bot/display/embeds.py @@ -211,6 +211,17 @@ def register_status(ctx, player): return embed +def player_stats(ctx, stats): + embed = Embed(colour=Color.blue(), title="Player stats", + description=f"POG stats for <@{stats.id}>\nNote: Tracking stats only after POG match 569") + embed.add_field(name="Number of matches played", value=stats.nb_matches_played, inline=False) + embed.add_field(name="Raw POG net", value=stats.net, inline=False) + embed.add_field(name="Raw POG score", value=stats.score, inline=False) + embed.add_field(name="Number of POG kills", value=stats.kills, inline=False) + embed.add_field(name="Number of POG deaths", value=stats.deaths, inline=False) + return embed + + def account(ctx, account): """ Returns account message embed """ diff --git a/bot/display/strings.py b/bot/display/strings.py index 3c949bd..8e81797 100644 --- a/bot/display/strings.py +++ b/bot/display/strings.py @@ -26,7 +26,6 @@ class AllStrings(Enum): REG_WITH_CHARS = Message("You successfully registered with the following Jaeger characters: `{}`, `{}`, `{}`") REG_FROZEN = Message("You can't register while you're playing a match!") REG_RULES = Message("{} You have accepted the rules, you may now register", embed=embeds.register_help) - REG_NO_RULE = Message("You have to accept the rules before registering! Check <#{}>") LB_ALREADY_IN = Message("You are already in queue!") LB_IN_MATCH = Message("You are already in a match!") @@ -112,6 +111,8 @@ class AllStrings(Enum): CANCEL_NOTHING = Message("Nothing to cancel!") CANCEL_NOT_CAPTAIN = Message("You can't cancel this request!") READY_NO_COMMAND = Message("Can't do that while your team is ready!") + NO_RULE = Message("You have to accept the rules before using `{}`! Check <#{}>") + DISPLAY_STATS = Message("Here are your POG stats:", embed=embeds.player_stats) BOT_UNLOCKED = Message("Unlocked!") BOT_LOCKED = Message("Locked!") diff --git a/bot/modules/dm_handler.py b/bot/modules/dm_handler.py new file mode 100644 index 0000000..c500b8c --- /dev/null +++ b/bot/modules/dm_handler.py @@ -0,0 +1,16 @@ +from classes import Player, PlayerStat +import modules.config as cfg +from display import AllStrings as disp, ContextWrapper +from logging import getLogger + +log = getLogger("pog_bot") + + +async def on_stats(user): + player = Player.get(user.id) + if not player: + await disp.NO_RULE.send(user, "stats", cfg.channels["rules"]) + return + log.info(f"Stats request from player id: [{player.id}], name: [{player.name}]") + stat_player = await PlayerStat.get_from_database(player.id) + await disp.DISPLAY_STATS.send(user, stats=stat_player) diff --git a/bot/modules/message_filter.py b/bot/modules/message_filter.py index acf8ff2..da6a573 100644 --- a/bot/modules/message_filter.py +++ b/bot/modules/message_filter.py @@ -9,6 +9,7 @@ from asyncio import sleep import modules.tools as tools from logging import getLogger +from modules.dm_handler import on_stats __spam_list = dict() __SPAM_MSG_FREQUENCY = 5 @@ -69,6 +70,9 @@ async def on_message(client, message): # if dm, send in staff if isinstance(message.channel, DMChannel): + if message.content.lower() in ("stat", "stats", "statistics", "s"): + await on_stats(message.author) + return await disp.BOT_DM.send(ContextWrapper.channel(cfg.channels["staff"]), msg=message) await disp.BOT_DM_RECEIVED.send(message.author) return