Refactor imports across multiple files to improve code organization and readability.
All checks were successful
CI pipeline / Test & Code Quality (push) Successful in 34s

This commit is contained in:
2026-02-28 23:24:25 +03:00
parent d0c8dab24a
commit 3d6b4353f9
78 changed files with 141 additions and 53 deletions

View File

@@ -1,6 +1,7 @@
from aiogram import F, Router, types
from aiogram.filters import Command, MagicData, StateFilter
from aiogram.fsm.context import FSMContext
from helper_bot.filters.main import ChatTypeFilter
from helper_bot.handlers.admin.dependencies import AdminAccessMiddleware
from helper_bot.handlers.admin.exceptions import (
@@ -138,7 +139,9 @@ async def get_banned_users(
keyboard = create_keyboard_with_pagination(
1, len(buttons_list), buttons_list, "unlock"
)
await message.answer(text=message_text, reply_markup=keyboard, parse_mode="HTML")
await message.answer(
text=message_text, reply_markup=keyboard, parse_mode="HTML"
)
else:
await message.answer(
text="В списке заблокированных пользователей никого нет"
@@ -217,12 +220,8 @@ async def get_ml_stats(message: types.Message, state: FSMContext, **kwargs):
lines.append(f" • API URL: {rag.get('api_url', 'N/A')}")
if "enabled" in rag:
if rag.get("enabled"):
lines.append(
f" • Статус: ⚠️ Включен, но API не отвечает"
)
lines.append(
f" • Проверьте доступность сервиса и API ключ"
)
lines.append(f" • Статус: ⚠️ Включен, но API не отвечает")
lines.append(f" • Проверьте доступность сервиса и API ключ")
else:
lines.append(f" • Статус: ❌ Отключен")
@@ -460,8 +459,7 @@ async def process_publish_threshold(
except ValueError as e:
await message.answer(
f"❌ Неверное значение: {e}\n"
"Введите число от 0.0 до 1.0 (например: 0.8)"
f"❌ Неверное значение: {e}\n" "Введите число от 0.0 до 1.0 (например: 0.8)"
)
except Exception as e:
logger.error(f"Ошибка изменения порога публикации: {e}")
@@ -503,8 +501,7 @@ async def process_decline_threshold(
except ValueError as e:
await message.answer(
f"❌ Неверное значение: {e}\n"
"Введите число от 0.0 до 1.0 (например: 0.4)"
f"❌ Неверное значение: {e}\n" "Введите число от 0.0 до 1.0 (например: 0.4)"
)
except Exception as e:
logger.error(f"Ошибка изменения порога отклонения: {e}")

View File

@@ -7,6 +7,7 @@ except ImportError:
from aiogram import BaseMiddleware
from aiogram.types import TelegramObject
from helper_bot.utils.base_dependency_factory import get_global_instance
from helper_bot.utils.helper_func import check_access
from logs.custom_logger import logger

View File

@@ -6,6 +6,7 @@ from aiogram import F, Router, types
from aiogram.filters import Command, MagicData
from aiogram.fsm.context import FSMContext
from aiogram.types import FSInputFile
from helper_bot.filters.main import ChatTypeFilter
from helper_bot.middlewares.dependencies_middleware import DependenciesMiddleware

View File

@@ -3,6 +3,7 @@ from typing import Optional
from aiogram import types
from aiogram.fsm.context import FSMContext
from helper_bot.handlers.admin.exceptions import AdminError
from helper_bot.keyboards.keyboards import get_reply_keyboard_admin
from logs.custom_logger import logger

View File

@@ -7,6 +7,7 @@ from aiogram import F, Router
from aiogram.filters import MagicData
from aiogram.fsm.context import FSMContext
from aiogram.types import CallbackQuery
from helper_bot.handlers.admin.utils import format_user_info
from helper_bot.handlers.voice.constants import CALLBACK_DELETE, CALLBACK_SAVE
from helper_bot.handlers.voice.services import AudioFileService

View File

@@ -3,6 +3,7 @@ from typing import Callable
from aiogram import Bot
from aiogram.client.default import DefaultBotProperties
from aiogram.fsm.context import FSMContext
from helper_bot.utils.base_dependency_factory import get_global_instance
from .services import BanService, PostPublishService

View File

@@ -4,6 +4,7 @@ from typing import Any, Dict
from aiogram import Bot, types
from aiogram.types import CallbackQuery
from helper_bot.keyboards.keyboards import create_keyboard_for_ban_reason
from helper_bot.utils.helper_func import (
delete_user_blacklist,

View File

@@ -12,6 +12,7 @@ from typing import Any, Callable, Dict, Protocol, Union
# Third-party imports
from aiogram import types
from aiogram.types import FSInputFile
from database.models import TelegramPost, User
from helper_bot.keyboards import get_reply_keyboard_for_post
@@ -171,7 +172,9 @@ class UserService:
Returns:
Отформатированное сообщение для админов
"""
safe_full_name = html.escape(full_name) if full_name else "Неизвестный пользователь"
safe_full_name = (
html.escape(full_name) if full_name else "Неизвестный пользователь"
)
safe_username = html.escape(username) if username else None
safe_message_text = html.escape(message_text) if message_text else ""
@@ -198,7 +201,9 @@ class UserService:
# Получаем дату регистрации
user_info = await self.db.get_user_by_id(user_id)
if user_info and user_info.date_added:
date_added = datetime.fromtimestamp(user_info.date_added).strftime("%d.%m.%Y")
date_added = datetime.fromtimestamp(user_info.date_added).strftime(
"%d.%m.%Y"
)
else:
date_added = "Неизвестно"
@@ -332,9 +337,7 @@ class PostService:
if self.scoring_manager:
await self.scoring_manager.add_submitted_post(text, post_id, rag_score)
except Exception as e:
logger.warning(
f"PostService: Ошибка добавления поста в submitted: {e}"
)
logger.warning(f"PostService: Ошибка добавления поста в submitted: {e}")
async def _get_scores_with_error_handling(self, text: str) -> tuple:
"""
@@ -526,7 +529,9 @@ class PostService:
# Сохраняем скоры если есть
if ml_scores_json:
asyncio.create_task(
self._save_scores_background(sent_message.message_id, ml_scores_json)
self._save_scores_background(
sent_message.message_id, ml_scores_json
)
)
# Индексируем пост в RAG
@@ -544,7 +549,9 @@ class PostService:
text="Твой пост был выложен🥰",
)
except Exception as e:
logger.warning(f"PostService: Не удалось уведомить автора {author_id}: {e}")
logger.warning(
f"PostService: Не удалось уведомить автора {author_id}: {e}"
)
logger.info(
f"PostService: Пост авто-опубликован в {self.settings.main_public}, "
@@ -562,7 +569,9 @@ class PostService:
try:
await self.scoring_manager.on_post_declined(original_text)
except Exception as e:
logger.warning(f"PostService: Ошибка обучения RAG на отклоненном посте: {e}")
logger.warning(
f"PostService: Ошибка обучения RAG на отклоненном посте: {e}"
)
# Уведомляем автора
try:
@@ -1471,8 +1480,6 @@ class AutoModerationService:
text=message_text,
parse_mode="HTML",
)
logger.info(
f"AutoModeration: Лог отправлен в IMPORTANT_LOGS ({action})"
)
logger.info(f"AutoModeration: Лог отправлен в IMPORTANT_LOGS ({action})")
except Exception as e:
logger.error(f"AutoModeration: Ошибка отправки лога: {e}")

View File

@@ -7,6 +7,7 @@ from pathlib import Path
from typing import List, Optional, Tuple
from aiogram.types import FSInputFile
from helper_bot.handlers.voice.constants import (
MESSAGE_DELAY_1,
MESSAGE_DELAY_2,

View File

@@ -6,6 +6,7 @@ from aiogram import F, Router, types
from aiogram.filters import Command, MagicData, StateFilter
from aiogram.fsm.context import FSMContext
from aiogram.types import FSInputFile
from helper_bot.filters.main import ChatTypeFilter
from helper_bot.handlers.private.constants import BUTTON_TEXTS, FSM_STATES
from helper_bot.handlers.voice.constants import *

View File

@@ -6,6 +6,7 @@ from aiogram import Bot, Dispatcher
from aiogram.client.default import DefaultBotProperties
from aiogram.fsm.storage.memory import MemoryStorage
from aiogram.fsm.strategy import FSMStrategy
from helper_bot.handlers.admin import admin_router
from helper_bot.handlers.callback import callback_router
from helper_bot.handlers.group import group_router

View File

@@ -4,6 +4,7 @@ from typing import Any, Dict
from aiogram import BaseMiddleware, types
from aiogram.types import CallbackQuery, Message, TelegramObject
from helper_bot.utils.base_dependency_factory import get_global_instance
from logs.custom_logger import logger

View File

@@ -2,6 +2,7 @@ from typing import Any, Dict
from aiogram import BaseMiddleware
from aiogram.types import TelegramObject
from helper_bot.utils.base_dependency_factory import get_global_instance
from logs.custom_logger import logger

View File

@@ -7,6 +7,7 @@ from typing import Any, Awaitable, Callable, Dict, Union
from aiogram import BaseMiddleware
from aiogram.exceptions import TelegramAPIError, TelegramRetryAfter
from aiogram.types import CallbackQuery, ChatMemberUpdated, InlineQuery, Message, Update
from helper_bot.utils.rate_limiter import telegram_rate_limiter
from logs.custom_logger import logger

View File

@@ -9,6 +9,7 @@ import json
from typing import List, Optional
import httpx
from helper_bot.utils.metrics import track_errors, track_time
from logs.custom_logger import logger

View File

@@ -8,6 +8,7 @@ from dataclasses import dataclass
from typing import Any, Dict, List, Optional
import httpx
from helper_bot.utils.metrics import track_errors, track_time
from logs.custom_logger import logger
@@ -483,7 +484,10 @@ class RagApiClient:
@track_time("add_submitted_post", "rag_client")
async def add_submitted_post(
self, text: str, post_id: Optional[int] = None, rag_score: Optional[float] = None
self,
text: str,
post_id: Optional[int] = None,
rag_score: Optional[float] = None,
) -> bool:
"""
Добавляет пост в коллекцию submitted для поиска похожих.

View File

@@ -244,7 +244,10 @@ class ScoringManager:
@track_time("add_submitted_post", "scoring_manager")
async def add_submitted_post(
self, text: str, post_id: Optional[int] = None, rag_score: Optional[float] = None
self,
text: str,
post_id: Optional[int] = None,
rag_score: Optional[float] = None,
) -> bool:
"""
Добавляет пост в коллекцию submitted для поиска похожих.

View File

@@ -4,6 +4,7 @@ from typing import Optional
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.triggers.cron import CronTrigger
from helper_bot.utils.base_dependency_factory import get_global_instance
from logs.custom_logger import logger

View File

@@ -2,8 +2,9 @@ import os
import sys
from typing import Optional
from database.async_db import AsyncBotDB
from dotenv import load_dotenv
from database.async_db import AsyncBotDB
from helper_bot.utils.s3_storage import S3StorageService
from logs.custom_logger import logger

View File

@@ -24,6 +24,7 @@ from aiogram.types import (
InputMediaPhoto,
InputMediaVideo,
)
from database.models import TelegramPost
from helper_bot.utils.base_dependency_factory import (
BaseDependencyFactory,
@@ -1065,7 +1066,9 @@ async def get_banned_users_list(offset: int, bot_db):
user_ids - лист кортежей [(user_name: user_id)]
"""
items_per_page = 9
users = await bot_db.get_banned_users_from_db_with_limits(limit=items_per_page, offset=offset)
users = await bot_db.get_banned_users_from_db_with_limits(
limit=items_per_page, offset=offset
)
message = "Список заблокированных пользователей:\n"
for user in users:

View File

@@ -8,6 +8,7 @@ from dataclasses import dataclass
from typing import Any, Callable, Dict, Optional
from aiogram.exceptions import TelegramAPIError, TelegramRetryAfter
from logs.custom_logger import logger
from .metrics import metrics

View File

@@ -8,6 +8,7 @@ from pathlib import Path
from typing import Optional
import aioboto3
from logs.custom_logger import logger