make skills async

This commit is contained in:
2026-02-18 01:10:25 +01:00
parent 3ee77ae1ea
commit 54754e7981
+5 -5
View File
@@ -31,7 +31,6 @@ class MatrixBot:
if self._load_config(): if self._load_config():
self.client = AsyncClient(self.homeserver, self.username) self.client = AsyncClient(self.homeserver, self.username)
self.helper = BotHelper(self.client) self.helper = BotHelper(self.client)
self._activate_skills()
else: else:
logging.critical('no config file was found') logging.critical('no config file was found')
exit(1) exit(1)
@@ -114,12 +113,12 @@ class MatrixBot:
if module.is_dir() and (module / "__init__.py").exists(): if module.is_dir() and (module / "__init__.py").exists():
importlib.import_module(f"skills.{module.name}") importlib.import_module(f"skills.{module.name}")
def _activate_skills(self): async def _activate_skills(self):
"""activate all skills which defined in config file""" """activate all skills which defined in config file"""
for skill in self._config['skills'].keys(): for skill in self._config['skills'].keys():
self.load_skill(skill_name=skill, config=self._config['skills'][skill]) await self.load_skill(skill_name=skill, config=self._config['skills'][skill])
def load_skill(self, skill_name: str, config: dict = None) -> bool: async def load_skill(self, skill_name: str, config: dict = None) -> bool:
"""load skill from skill registry """load skill from skill registry
Args: Args:
@@ -133,7 +132,7 @@ class MatrixBot:
return False return False
logging.info(f'load skill {skill_name} version {Skill.registry[skill_name].__VERSION__}') logging.info(f'load skill {skill_name} version {Skill.registry[skill_name].__VERSION__}')
skill = Skill.registry[skill_name](client=self.client, config=config) skill = Skill.registry[skill_name](client=self.client, config=config)
skill.load() await skill.load()
self.skills.append(skill) self.skills.append(skill)
return True return True
@@ -157,6 +156,7 @@ class MatrixBot:
async def run(self): async def run(self):
if await self._login(): if await self._login():
await self.send_status(f"{self.botname} Online!") await self.send_status(f"{self.botname} Online!")
await self._activate_skills()
await self.client.sync_forever(timeout=30000) await self.client.sync_forever(timeout=30000)