Spaces:
Runtime error
Runtime error
| # utils/cdn.py | |
| import discord | |
| import logging | |
| from cachetools import TTLCache | |
| from database.db import db | |
| # 🔥 THE NEW IMPORT | |
| from utils.generators.factory import generate_card_factory | |
| logger = logging.getLogger(__name__) | |
| DUMP_CHANNEL_ID = 1488240222264230179 | |
| URL_CACHE = TTLCache(maxsize=5000, ttl=43200) | |
| async def get_or_create_card_url(bot: discord.Client, instance_id: int, image_url: str, char_name: str, print_num: int, rarity: str, element: str) -> str: | |
| if instance_id in URL_CACHE: | |
| return URL_CACHE[instance_id] | |
| async with db.pool.acquire() as conn: | |
| msg_id = await conn.fetchval("SELECT dump_msg_id FROM user_characters WHERE instance_id = $1", instance_id) | |
| dump_channel = bot.get_channel(DUMP_CHANNEL_ID) | |
| if not dump_channel: | |
| dump_channel = await bot.fetch_channel(DUMP_CHANNEL_ID) | |
| if msg_id: | |
| try: | |
| msg = await dump_channel.fetch_message(msg_id) | |
| if msg.attachments: | |
| fresh_url = msg.attachments[0].url | |
| URL_CACHE[instance_id] = fresh_url | |
| return fresh_url | |
| except Exception: | |
| pass | |
| logger.info(f"Baking new card via Factory for instance #{instance_id}...") | |
| # 🔥 CALL THE FACTORY INSTEAD | |
| card_file = await generate_card_factory(image_url, char_name, print_num, rarity, element) | |
| dump_msg = await dump_channel.send(file=card_file) | |
| new_url = dump_msg.attachments[0].url | |
| async with db.pool.acquire() as conn: | |
| await conn.execute("UPDATE user_characters SET dump_msg_id = $1 WHERE instance_id = $2", dump_msg.id, instance_id) | |
| URL_CACHE[instance_id] = new_url | |
| return new_url | |