make skills async
This commit is contained in:
@@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user