Files
aoc/skills/skill.py
T
2026-02-16 18:19:17 +01:00

39 lines
1.3 KiB
Python

import logging
from .helper import BotHelper
logging.basicConfig(format='[%(asctime)s] %(process)s {%(filename)s:%(lineno)d} %(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()