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:
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']: