import logging from typing import Literal logger = logging.getLogger('discord_app') def log_exception(e: Exception, msg: str = '', level: Literal['debug', 'error', 'info', 'warn'] = 'error'): if level == 'debug': logger.debug(msg, exc_info=True, stack_info=True) elif level == 'error': logger.error(msg, exc_info=True, stack_info=True) elif level == 'info': logger.info(msg, exc_info=True, stack_info=True) else: logger.warning(msg, exc_info=True, stack_info=True) # Check if 'e' is an exception class or instance if isinstance(e, Exception): raise e # If 'e' is already an instance of an exception else: raise e(msg) # If 'e' is an exception class class GameException(Exception): pass class LineupsMissingException(GameException): pass class CardLegalityException(GameException): pass class CardNotFoundException(GameException): pass class GameNotFoundException(GameException): pass class TeamNotFoundException(GameException): pass class PlayNotFoundException(GameException): pass class PlayInitException(GameException): pass class DatabaseError(GameException): pass class PositionNotFoundException(GameException): pass class NoPlayerResponseException(GameException): pass class MultipleHumanTeamsException(GameException): pass class NoHumanTeamsException(GameException): pass class GoogleSheetsException(GameException): pass class InvalidResultException(GameException): pass class ButtonOptionNotChosen(Exception): pass