import logging from .helper import BotHelper logging.basicConfig(format='[%(asctime)s] %(levelname)s: %(message)s', level=logging.INFO) class Skill: """abstract class for bot skills""" __AUTHOR__ = 'anima' __VERSION__ = '0.1.0' __NAME__ = 'Example Skill' registry: dict[str, Skill] = {} def __init_subclass__(cls, **kwargs): """add loaded subclasses to regestry""" super().__init_subclass__(**kwargs) if cls.__name__ != "Skill" and issubclass(cls, Skill): logging.info(f"add skill {cls.__name__} to regestry") Skill.registry[cls.__name__] = cls def __init__(self, client: type, config: dict = None): """minimal init for a skill class Args: client (AsyncClient): bot client handler config (dict, optional): additional configs from config file. Defaults to None. """ self.client = client self.config = config self.helper = BotHelper(self.client) def load(self): """if skill activate it will run this class""" raise NotImplementedError() if __name__ == '__main__': skill = Skill(None) print(f"Load {skill.__NAME__} version {skill.__VERSION__}") skill.load()