I add command /id and /dowmp3 for dowload video with Youtube and i improve code.
It's version 0.2.0
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
import importlib
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
class AddonManager:
|
||||
def __init__(self, dp, state, bot):
|
||||
self.dp = dp
|
||||
self.state = state
|
||||
self.bot = bot
|
||||
self.loaded = {}
|
||||
|
||||
def load(self, name: str):
|
||||
"""Загрузить аддон по имени"""
|
||||
if name in self.loaded:
|
||||
return f"Аддон {name} уже загружен"
|
||||
|
||||
module_path = f"addons.{name}"
|
||||
module = importlib.import_module(module_path)
|
||||
if hasattr(module, "register"):
|
||||
module.register(self.dp, self.state, self.bot)
|
||||
self.loaded[name] = module
|
||||
return f"✅ Аддон {name} подключен"
|
||||
return f"⚠️ У аддона {name} нет функции register"
|
||||
|
||||
def unload(self, name: str):
|
||||
"""Отключить аддон"""
|
||||
module = self.loaded.get(name)
|
||||
if not module:
|
||||
return f"Аддон {name} не загружен"
|
||||
|
||||
if hasattr(module, "unregister"):
|
||||
module.unregister(self.dp)
|
||||
|
||||
# Удаляем из sys.modules, чтобы можно было перезагрузить
|
||||
sys.modules.pop(f"addons.{name}", None)
|
||||
self.loaded.pop(name)
|
||||
return f"❌ Аддон {name} отключен"
|
||||
|
||||
def reload(self, name: str):
|
||||
"""Перезагрузить аддон"""
|
||||
self.unload(name)
|
||||
return self.load(name)
|
||||
|
||||
def list_addons(self):
|
||||
"""Возвращает список (имя, состояние) для всех аддонов"""
|
||||
addons_path = Path("addons")
|
||||
result = []
|
||||
for addon in addons_path.iterdir():
|
||||
if addon.is_dir() and (addon / "__init__.py").exists():
|
||||
name = addon.name
|
||||
status = "✅ Загружен" if name in self.loaded else "❌ Выключен"
|
||||
result.append((name, status))
|
||||
return result
|
||||
Reference in New Issue
Block a user