paper-dynasty-discord/exceptions.py
Cal Corum 3db25b177a Refactor new game checks
Trail batter-runner on uncapped hits
2024-12-26 14:36:04 -06:00

88 lines
1.6 KiB
Python

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
class MissingRoleException(GameException):
pass