From d64f4623a088e68cd9a9d6de30f400026c01f23a Mon Sep 17 00:00:00 2001 From: qwewqa <198e559dbd446d973355f415bdfa34@gmail.com> Date: Wed, 27 Jan 2021 22:28:02 -0500 Subject: [PATCH] add card exp command --- miyu_bot/commands/cogs/card.py | 53 ++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/miyu_bot/commands/cogs/card.py b/miyu_bot/commands/cogs/card.py index e596980..b21bb1a 100644 --- a/miyu_bot/commands/cogs/card.py +++ b/miyu_bot/commands/cogs/card.py @@ -1,6 +1,7 @@ import asyncio import enum import logging +import re import discord from d4dj_utils.master.card_master import CardMaster @@ -115,6 +116,58 @@ class Card(commands.Cog): embed = discord.Embed(title=f'Card Search "{arg}"' if arg else 'Cards') asyncio.ensure_future(run_paged_message(ctx, embed, listing)) + @commands.command(name='cardexp', + aliases=['card_exp', 'cdexp'], + description='Displays card exp totals or the difference between levels.', + help='!cardexp 1-80') + async def cardexp(self, ctx: commands.Context, *, arg: commands.clean_content = ''): + assert isinstance(arg, str) + exp = self.bot.assets.card_exp_master + + def comma_number(n): + return '{:,}'.format(n) + + def format_exp(e): + return comma_number(e.total_exp).rjust(9) + + if not arg: + embed = discord.Embed(title='Card Exp', + description='```' + + '\n'.join(f'Lvl {n}: {format_exp(exp[n])}' for n in range(10, 90, 10)) + + '```') + await ctx.send(embed=embed) + else: + try: + if arg.isnumeric(): + level = int(arg) + level_total = exp[level].total_exp + desc = (f'```\n' + f'Total: {comma_number(level_total)}\n' + f'Change: {comma_number(level_total - exp[level - 1].total_exp) if level > 1 else "N/A"}\n' + f'```') + await ctx.send(embed=discord.Embed(title=f'Card Exp Lvl {level}', + description=desc)) + else: + start, end = arg.split('-') + start = int(start) + end = int(end) + if start > end: + await ctx.send('End exp is greater than start exp.') + return + start_exp = exp[start] + end_exp = exp[end] + change_amount = end_exp.total_exp - start_exp.total_exp + embed = discord.Embed(title=f'Card Exp Lvl {start}-{end}', + description=f'```\n' + f'Lvl {str(start).rjust(2)}: {format_exp(start_exp)}\n' + f'Lvl {str(end).rjust(2)}: {format_exp(end_exp)}\n' + f'Change: {comma_number(change_amount).rjust(9)}\n' + f'```') + await ctx.send(embed=embed) + + except Exception: + await ctx.send(f'Invalid card exp {arg}') + def get_cards(self, ctx, arguments: ParsedArguments): sort, sort_op = arguments.single('sort', None, allowed_operators=['<', '>', '='], converter=card_attribute_aliases)