Refactor imports across multiple files to improve code organization and readability.
All checks were successful
CI pipeline / Test & Code Quality (push) Successful in 34s
All checks were successful
CI pipeline / Test & Code Quality (push) Successful in 34s
This commit is contained in:
@@ -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}")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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}")
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 *
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 для поиска похожих.
|
||||
|
||||
@@ -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 для поиска похожих.
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -8,6 +8,7 @@ from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
import aioboto3
|
||||
|
||||
from logs.custom_logger import logger
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user