You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.8 KiB
50 lines
1.8 KiB
import asyncio
|
|
import logging
|
|
|
|
import discord
|
|
from d4dj_utils.master.card_master import CardMaster
|
|
from discord.ext import commands
|
|
|
|
from main import masters
|
|
from miyu_bot.commands.common.emoji import rarity_emoji_ids
|
|
from miyu_bot.commands.common.master_asset_manager import hash_master
|
|
from miyu_bot.commands.common.reaction_message import run_tabbed_message
|
|
|
|
|
|
class Card(commands.Cog):
|
|
def __init__(self, bot: commands.Bot):
|
|
self.bot = bot
|
|
self.logger = logging.getLogger(__name__)
|
|
|
|
@property
|
|
def rarity_emoji(self):
|
|
return [self.bot.get_emoji(eid) for eid in rarity_emoji_ids.values()]
|
|
|
|
@commands.command(name='card',
|
|
aliases=[],
|
|
description='Finds the card with the given name.',
|
|
help='!card secretcage')
|
|
async def card(self, ctx: commands.Context, *, arg: commands.clean_content):
|
|
self.logger.info(f'Searching for card "{arg}".')
|
|
card = masters.cards.get(arg, ctx)
|
|
|
|
embeds = [self.get_card_embed(card, 0), self.get_card_embed(card, 1)]
|
|
asyncio.ensure_future(run_tabbed_message(ctx, self.rarity_emoji, embeds, starting_index=1))
|
|
|
|
def get_card_embed(self, card: CardMaster, limit_break):
|
|
embed = discord.Embed(title=f'{card.rarity_id}★ {card.name} {card.character.full_name_english}')
|
|
|
|
card_hash = hash_master(card)
|
|
icon_path = card.icon_path(limit_break)
|
|
thumb_url = f'https://qwewqa.github.io/d4dj-dumps/cards/icons/{icon_path.stem}_{card_hash}{icon_path.suffix}'
|
|
art_path = card.art_path(limit_break)
|
|
art_url = f'https://qwewqa.github.io/d4dj-dumps/cards/art/{art_path.stem}_{card_hash}{art_path.suffix}'
|
|
|
|
embed.set_thumbnail(url=thumb_url)
|
|
embed.set_image(url=art_url)
|
|
|
|
return embed
|
|
|
|
|
|
def setup(bot):
|
|
bot.add_cog(Card(bot))
|
|
|