class InvalidRouterInstanceException(Exception):
    def __str__(self):
        return "Invalid Router Instance"


class InvalidDescriptionMessagePatternException(Exception):
    def __init__(self, pattern: str):
        self.pattern = pattern
    def __str__(self):
        return ("Invalid Description Message Pattern\n"
                "Correct pattern example: [{command}] *=*=* {description}\n"
                "The pattern must contain two variables: `command` and `description` - description of the command\n"
                f"Your pattern: {self.pattern}")


class NoRegisteredRoutersException(Exception):
    def __str__(self):
        return "No Registered Router Found"


class NoRegisteredHandlersException(Exception):
    def __init__(self, router_name):
        self.router_name = router_name
    def __str__(self):
        return f"No Registered Handlers Found For '{self.router_name}'"


class IncorrectNumberOfHandlerArgsException(Exception):
    def __str__(self):
        return "Incorrect Input Flags Handler has incorrect number of arguments"
