from __future__ import unicode_literals

import logging

from ircbot.lib import Plugin
from facts.models import Fact


log = logging.getLogger('facts.ircplugin')


class Facts(Plugin):

    """Present facts to IRC."""

    def start(self):
        """Set up the handlers."""

        self.connection.reactor.add_global_regex_handler(['pubmsg', 'privmsg'], r'^!facts\s+(\S+)(\s+(.*)$|$)',
                                                         self.handle_facts, -20)

        super(Facts, self).start()

    def stop(self):
        """Tear down handlers."""

        self.connection.reactor.remove_global_regex_handler(['pubmsg', 'privmsg'], self.handle_facts)

        super(Facts, self).stop()

    def handle_facts(self, connection, event, match):
        """Respond to the facts command with desired fact."""

        category = match.group(1)
        regex = None
        if match.group(2) != '':
            regex = match.group(3)

        fact = Fact.objects.random_fact(category, regex)
        if fact:
            return self.bot.reply(event, fact.fact)


plugin = Facts