Enhance bot functionality with new features and improvements
- Added a new `/status` endpoint in `server_prometheus.py` to provide process status information, including uptime and resource usage metrics. - Implemented a PID manager in `run_helper.py` to track the bot's process, improving monitoring capabilities. - Introduced a method to delete audio moderation records in `audio_repository.py`, enhancing database management. - Updated voice message handling in callback handlers to ensure proper deletion of audio moderation records. - Improved error handling and logging in various services, ensuring better tracking of media processing and file downloads. - Refactored media handling functions to streamline operations and improve code readability. - Enhanced metrics tracking for file downloads and media processing, providing better insights into bot performance.
This commit is contained in:
@@ -13,9 +13,42 @@ from helper_bot.utils.base_dependency_factory import get_global_instance
|
||||
from helper_bot.utils.auto_unban_scheduler import get_auto_unban_scheduler
|
||||
from logs.custom_logger import logger
|
||||
|
||||
# Импортируем PID менеджер из инфраструктуры (если доступен)
|
||||
import sys
|
||||
import os
|
||||
|
||||
def get_pid_manager():
|
||||
"""Получение PID менеджера из инфраструктуры проекта"""
|
||||
try:
|
||||
# Пытаемся импортировать из инфраструктуры проекта
|
||||
infra_path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), 'infra', 'monitoring')
|
||||
if infra_path not in sys.path:
|
||||
sys.path.insert(0, infra_path)
|
||||
|
||||
from pid_manager import get_bot_pid_manager
|
||||
return get_bot_pid_manager
|
||||
|
||||
except ImportError:
|
||||
# В изолированном запуске PID менеджер не нужен
|
||||
logger.info("PID менеджер недоступен (изолированный запуск), PID файл не создается")
|
||||
return None
|
||||
|
||||
# Получаем функцию создания PID менеджера
|
||||
get_bot_pid_manager = get_pid_manager()
|
||||
|
||||
|
||||
async def main():
|
||||
"""Основная функция запуска"""
|
||||
# Создаем PID менеджер для отслеживания процесса (если доступен)
|
||||
pid_manager = None
|
||||
if get_bot_pid_manager:
|
||||
pid_manager = get_bot_pid_manager("helper_bot")
|
||||
if not pid_manager.create_pid_file():
|
||||
logger.error("Не удалось создать PID файл, завершаем работу")
|
||||
return
|
||||
else:
|
||||
logger.info("PID менеджер недоступен, запуск без PID файла")
|
||||
|
||||
bdf = get_global_instance()
|
||||
|
||||
# Создаем бота для автоматического разбана
|
||||
@@ -78,6 +111,10 @@ async def main():
|
||||
# Отменяем задачу бота
|
||||
bot_task.cancel()
|
||||
|
||||
# Очищаем PID файл (если PID менеджер доступен)
|
||||
if pid_manager:
|
||||
pid_manager.cleanup_pid_file()
|
||||
|
||||
# Ждем завершения задачи бота и получаем результат main bot
|
||||
try:
|
||||
results = await asyncio.gather(bot_task, return_exceptions=True)
|
||||
|
||||
Reference in New Issue
Block a user