fix: исправлены импорты и добавлен планировщик рассылки
Some checks reported errors
continuous-integration/drone/push Build encountered an error
Some checks reported errors
continuous-integration/drone/push Build encountered an error
- Исправлены импорты: database → src.core.database, config → src.core.config - Заменены async for get_session() на async with async_session_maker() - Добавлен планировщик для пакетной рассылки сообщений (BATCH_SIZE=20, BATCH_DELAY=1.0s) - Исправлено использование is_registered вместо is_active для фильтрации пользователей - Реализована защита от блокировки Telegram при массовой рассылке Изменения: - src/handlers/chat_handlers.py: добавлен broadcast_message_with_scheduler - src/handlers/admin_chat_handlers.py: исправлены импорты и использование сессий
This commit is contained in:
@@ -10,8 +10,8 @@ from src.core.chat_services import (
|
||||
ChatMessageService
|
||||
)
|
||||
from src.core.services import UserService
|
||||
from database import get_session
|
||||
from config import ADMIN_IDS
|
||||
from src.core.database import async_session_maker
|
||||
from src.core.config import ADMIN_IDS
|
||||
|
||||
|
||||
router = Router(name='admin_chat_router')
|
||||
@@ -40,7 +40,7 @@ async def cmd_chat_mode(message: Message):
|
||||
await message.answer("❌ У вас нет прав для выполнения этой команды")
|
||||
return
|
||||
|
||||
async for session in get_session():
|
||||
async with async_session_maker() as session:
|
||||
settings = await ChatSettingsService.get_or_create_settings(session)
|
||||
|
||||
mode_text = "📢 Рассылка всем пользователям" if settings.mode == 'broadcast' else "➡️ Пересылка в канал"
|
||||
@@ -63,7 +63,7 @@ async def process_chat_mode(callback: CallbackQuery):
|
||||
|
||||
mode = callback.data.split(":")[1]
|
||||
|
||||
async for session in get_session():
|
||||
async with async_session_maker() as session:
|
||||
settings = await ChatSettingsService.set_mode(session, mode)
|
||||
|
||||
mode_text = "📢 Рассылка всем пользователям" if mode == 'broadcast' else "➡️ Пересылка в канал"
|
||||
@@ -100,7 +100,7 @@ async def cmd_set_forward(message: Message):
|
||||
|
||||
chat_id = args[1].strip()
|
||||
|
||||
async for session in get_session():
|
||||
async with async_session_maker() as session:
|
||||
settings = await ChatSettingsService.set_forward_chat(session, chat_id)
|
||||
|
||||
await message.answer(
|
||||
@@ -118,7 +118,7 @@ async def cmd_global_ban(message: Message):
|
||||
await message.answer("❌ У вас нет прав для выполнения этой команды")
|
||||
return
|
||||
|
||||
async for session in get_session():
|
||||
async with async_session_maker() as session:
|
||||
settings = await ChatSettingsService.get_or_create_settings(session)
|
||||
|
||||
# Переключаем состояние
|
||||
@@ -169,7 +169,7 @@ async def cmd_ban(message: Message):
|
||||
await message.answer("❌ Неверный ID пользователя")
|
||||
return
|
||||
|
||||
async for session in get_session():
|
||||
async with async_session_maker() as session:
|
||||
# Получаем пользователя
|
||||
user = await UserService.get_user_by_telegram_id(session, target_user_id)
|
||||
|
||||
@@ -228,7 +228,7 @@ async def cmd_unban(message: Message):
|
||||
await message.answer("❌ Неверный ID пользователя")
|
||||
return
|
||||
|
||||
async for session in get_session():
|
||||
async with async_session_maker() as session:
|
||||
# Разбаниваем
|
||||
success = await BanService.unban_user(session, target_user_id)
|
||||
|
||||
@@ -250,7 +250,7 @@ async def cmd_banlist(message: Message):
|
||||
await message.answer("❌ У вас нет прав для выполнения этой команды")
|
||||
return
|
||||
|
||||
async for session in get_session():
|
||||
async with async_session_maker() as session:
|
||||
banned_users = await BanService.get_banned_users(session, active_only=True)
|
||||
|
||||
if not banned_users:
|
||||
@@ -290,7 +290,7 @@ async def cmd_delete_message(message: Message):
|
||||
)
|
||||
return
|
||||
|
||||
async for session in get_session():
|
||||
async with async_session_maker() as session:
|
||||
# Получаем админа
|
||||
admin = await UserService.get_user_by_telegram_id(session, message.from_user.id)
|
||||
|
||||
@@ -345,7 +345,7 @@ async def cmd_chat_stats(message: Message):
|
||||
await message.answer("❌ У вас нет прав для выполнения этой команды")
|
||||
return
|
||||
|
||||
async for session in get_session():
|
||||
async with async_session_maker() as session:
|
||||
settings = await ChatSettingsService.get_or_create_settings(session)
|
||||
banned_users = await BanService.get_banned_users(session, active_only=True)
|
||||
recent_messages = await ChatMessageService.get_recent_messages(session, limit=100)
|
||||
|
||||
Reference in New Issue
Block a user