1
0
Fork 0
This repository has been archived on 2024-02-17. You can view files and clone it, but cannot push or open issues or pull requests.
TelegramEDT/TelegramEDT/modules.py

77 lines
2.2 KiB
Python
Raw Normal View History

2019-12-26 13:05:45 +01:00
from importlib import import_module
from aiogram.types import Message
from TelegramEDT import ADMIN_ID, dp, logger, modules_active
2019-12-26 13:05:45 +01:00
2019-12-28 02:23:30 +01:00
module_name = "modules"
logger = logger.getChild(module_name)
2019-12-26 14:21:03 +01:00
2019-12-26 13:05:45 +01:00
def load_module(module: str) -> bool:
try:
module = import_module(f"TelegramEDT.{module}")
except ModuleNotFoundError:
logger.error(f"Fail to load module {module}, module not found !")
return False
else:
try:
module.load()
except AttributeError:
logger.error(f"Fail to load module {module}, no load function !")
return False
return True
def unload_module(module: str) -> bool:
try:
module = import_module(f"TelegramEDT.{module}")
except ModuleNotFoundError:
logger.error(f"Fail to unload module {module}, module not found !")
return False
else:
try:
module.unload()
except AttributeError:
logger.error(f"Fail to unload module {module}, no unload function !")
return False
return True
async def load_cmd(message: Message):
logger.info(f"{message.from_user.username} do load command")
if message.from_user.id == ADMIN_ID:
module = message.text[6:]
if load_module(module):
msg = f"Module {module} loaded !"
else:
msg = f"Fail to load module {module} !"
await message.reply(msg)
async def unload_cmd(message: Message):
logger.info(f"{message.from_user.username} do unload command")
if message.from_user.id == ADMIN_ID:
module = message.text[8:]
if unload_module(module):
msg = f"Module {module} unloaded !"
else:
msg = f"Fail to unload module {module} !"
await message.reply(msg)
2019-12-27 13:44:44 +01:00
def load():
2019-12-28 02:23:30 +01:00
logger.info(f"Load {module_name} module")
2019-12-27 13:44:44 +01:00
dp.register_message_handler(load_cmd, commands="load")
dp.register_message_handler(unload_cmd, commands="unload")
modules_active.append(module_name)
2019-12-27 13:44:44 +01:00
def unload():
2019-12-28 02:23:30 +01:00
logger.info(f"Unload {module_name} module")
2019-12-27 13:44:44 +01:00
dp.message_handlers.unregister(load_cmd)
dp.message_handlers.unregister(unload_cmd)
modules_active.remove(module_name)