# Path: bottery/exceptions.py
# class ValidationError(Exception):
#     pass


import re
from bottery.exceptions import ValidationError
        for method_name in dir(self):
            if method_name.startswith('clean_'):
                method = getattr(self, method_name)
                method()

    def match(self, message):
        raise Exception('Method Not Implemented')


class RegexHandler(BaseHandler):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.regex = None

    def match(self, message):
        if not self.regex:
            self.regex = re.compile(self.pattern)

        if self.regex.match(message.text):
            return True
        return False


class MessageHandler(CaseSensitiveOptionMixin, BaseHandler):
    def match(self, message):
        if message.text == self.pattern:
            return True
        return False



# Path: bottery/exceptions.py
# class ValidationError(Exception):
#     pass


# Path: bottery/handlers.py
import re
from bottery.exceptions import ValidationError

        for method_name in dir(self):
            if method_name.startswith('clean_'):
                method = getattr(self, method_name)
                method()

    def match(self, message):
        raise Exception('Method Not Implemented')


class RegexHandler(BaseHandler):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.regex = None

    def match(self, message):
        if not self.regex:
            self.regex = re.compile(self.pattern)

        if self.regex.match(message.text):
            return True
        return False


class MessageHandler(CaseSensitiveOptionMixin, BaseHandler):
    def match(self, message):
        if message.text == self.pattern:
            return True
        return False



class StartswithHandler(CaseSensitiveOptionMixin, BaseHandler):