Ejemplo n.º 1
0
from helga import settings
from helga.extensions.base import (HelgaExtension, CommandExtension)
from helga.extensions.core import (ControlExtension, HelpExtension,
                                   IgnoreExtension)
from helga.log import setup_logger

logger = setup_logger(__name__)


class ExtensionRegistry(object):
    def __init__(self, bot, load=True):
        self.bot = bot
        self.extensions = {'commands': set(), 'contexts': set()}
        self.extension_names = set()
        self.disabled_extensions = {}  # Per-channel blacklist
        self.core = set()

        if load:
            self.load()

    def _make_import_args(self, path):
        return path, {}, {}, [path.split('.')[-1]]

    def _get_possible_extensions(self, mod):
        return filter(lambda x: not x.startswith('__'), dir(mod))

    def load_module_members(self, module):
        # See if there are any HelgaExtensions
        for member in self._get_possible_extensions(module):
            cls = getattr(module, member)
            if cls == HelgaExtension:
Ejemplo n.º 2
0
import random
import time

from datetime import datetime

import pytz

from helga.db import db
from helga.extensions.base import (ContextualExtension,
                                   CommandExtension)
from helga.log import setup_logger


logger = setup_logger(__name__)


class FactExtension(CommandExtension, ContextualExtension):

    NAME = 'facts'

    # contextual
    context = r'^([\w\s]+)\?$'
    allow_many = False
    response_fmt = '%(response)s'

    # commands
    usage = '[BOTNICK] forget (<thing> ...) | (<thing> ...) (is|are) [REPLY] (INPUT ...)'

    def should_handle_message(self, opts, message):
        # If we match 'forget', see what super() says about it
        if opts and opts['forget']: