fixes, chat handlers
Some checks reported errors
continuous-integration/drone/push Build encountered an error

This commit is contained in:
2025-11-16 14:53:23 +09:00
parent a0e6a385b6
commit 4e06e6296c
6 changed files with 292 additions and 71 deletions

View File

@@ -12,16 +12,12 @@ from src.core.chat_services import (
from src.core.services import UserService
from src.core.database import async_session_maker
from src.core.config import ADMIN_IDS
from src.core.permissions import admin_only
router = Router(name='admin_chat_router')
def is_admin(user_id: int) -> bool:
"""Проверка является ли пользователь админом"""
return user_id in ADMIN_IDS
def get_chat_mode_keyboard() -> InlineKeyboardMarkup:
"""Клавиатура выбора режима чата"""
return InlineKeyboardMarkup(inline_keyboard=[
@@ -34,11 +30,9 @@ def get_chat_mode_keyboard() -> InlineKeyboardMarkup:
@router.message(Command("chat_mode"))
@admin_only
async def cmd_chat_mode(message: Message):
"""Команда управления режимом чата"""
if not is_admin(message.from_user.id):
await message.answer("У вас нет прав для выполнения этой команды")
return
async with async_session_maker() as session:
settings = await ChatSettingsService.get_or_create_settings(session)
@@ -57,9 +51,6 @@ async def cmd_chat_mode(message: Message):
@router.callback_query(F.data.startswith("chat_mode:"))
async def process_chat_mode(callback: CallbackQuery):
"""Обработка выбора режима чата"""
if not is_admin(callback.from_user.id):
await callback.answer("У вас нет прав", show_alert=True)
return
mode = callback.data.split(":")[1]
@@ -78,11 +69,9 @@ async def process_chat_mode(callback: CallbackQuery):
@router.message(Command("set_forward"))
@admin_only
async def cmd_set_forward(message: Message):
"""Установить ID канала для пересылки"""
if not is_admin(message.from_user.id):
await message.answer("У вас нет прав для выполнения этой команды")
return
args = message.text.split(maxsplit=1)
if len(args) < 2:
@@ -112,11 +101,9 @@ async def cmd_set_forward(message: Message):
@router.message(Command("global_ban"))
@admin_only
async def cmd_global_ban(message: Message):
"""Включить/выключить глобальный бан чата"""
if not is_admin(message.from_user.id):
await message.answer("У вас нет прав для выполнения этой команды")
return
async with async_session_maker() as session:
settings = await ChatSettingsService.get_or_create_settings(session)
@@ -140,11 +127,9 @@ async def cmd_global_ban(message: Message):
@router.message(Command("ban"))
@admin_only
async def cmd_ban(message: Message):
"""Забанить пользователя"""
if not is_admin(message.from_user.id):
await message.answer("У вас нет прав для выполнения этой команды")
return
# Проверяем является ли это ответом на сообщение
if message.reply_to_message:
@@ -201,11 +186,9 @@ async def cmd_ban(message: Message):
@router.message(Command("unban"))
@admin_only
async def cmd_unban(message: Message):
"""Разбанить пользователя"""
if not is_admin(message.from_user.id):
await message.answer("У вас нет прав для выполнения этой команды")
return
# Проверяем является ли это ответом на сообщение
if message.reply_to_message:
@@ -244,11 +227,9 @@ async def cmd_unban(message: Message):
@router.message(Command("banlist"))
@admin_only
async def cmd_banlist(message: Message):
"""Показать список забаненных пользователей"""
if not is_admin(message.from_user.id):
await message.answer("У вас нет прав для выполнения этой команды")
return
async with async_session_maker() as session:
banned_users = await BanService.get_banned_users(session, active_only=True)
@@ -276,11 +257,9 @@ async def cmd_banlist(message: Message):
@router.message(Command("delete_msg"))
@admin_only
async def cmd_delete_message(message: Message):
"""Удалить сообщение из чата (пометить как удаленное)"""
if not is_admin(message.from_user.id):
await message.answer("У вас нет прав для выполнения этой команды")
return
if not message.reply_to_message:
await message.answer(
@@ -339,11 +318,9 @@ async def cmd_delete_message(message: Message):
@router.message(Command("chat_stats"))
@admin_only
async def cmd_chat_stats(message: Message):
"""Статистика чата"""
if not is_admin(message.from_user.id):
await message.answer("У вас нет прав для выполнения этой команды")
return
async with async_session_maker() as session:
settings = await ChatSettingsService.get_or_create_settings(session)