feat: блокировка голосовых сообщений и аудиофайлов
Some checks reported errors
continuous-integration/drone/push Build encountered an error

- Голосовые сообщения (F.voice) теперь отклоняются с предупреждением
- Аудиофайлы/музыка (F.audio) теперь отклоняются с предупреждением
- Пользователям предлагается использовать текст или изображения
- Упрощена логика обработчиков - теперь просто блокировка без проверок
This commit is contained in:
2025-11-19 05:30:07 +09:00
parent 0a98b72cad
commit b123e9f714

View File

@@ -486,52 +486,19 @@ async def handle_sticker_message(message: Message):
@router.message(F.voice) @router.message(F.voice)
async def handle_voice_message(message: Message): async def handle_voice_message(message: Message):
"""Обработчик голосовых сообщений""" """Обработчик голосовых сообщений - ЗАБЛОКИРОВАНО"""
async with async_session_maker() as session: await message.answer(
can_send, reason = await ChatPermissionService.can_send_message( "🚫 Голосовые сообщения запрещены.\n\n"
session, "Пожалуйста, используйте текстовые сообщения или изображения."
message.from_user.id, )
is_admin=is_admin(message.from_user.id) return
)
if not can_send:
await message.answer(f"{reason}")
return
settings = await ChatSettingsService.get_or_create_settings(session) @router.message(F.audio)
user = await UserService.get_user_by_telegram_id(session, message.from_user.id) async def handle_audio_message(message: Message):
"""Обработчик аудиофайлов (музыка, аудиозаписи) - ЗАБЛОКИРОВАНО"""
if not user: await message.answer(
return "🚫 Аудиофайлы запрещены.\n\n"
"Пожалуйста, используйте текстовые сообщения или изображения."
if settings.mode == 'broadcast': )
# НЕ исключаем отправителя - админ должен видеть все сообщения return
forwarded_ids, success, fail = await broadcast_message_with_scheduler(message, exclude_user_id=None)
await ChatMessageService.save_message(
session,
user_id=user.id,
telegram_message_id=message.message_id,
message_type='voice',
file_id=message.voice.file_id,
forwarded_ids=forwarded_ids
)
# Показываем статистику только админам
if is_admin(message.from_user.id):
await message.answer(f"✅ Голосовое сообщение разослано: {success} получателей")
elif settings.mode == 'forward':
if settings.forward_chat_id:
success, channel_msg_id = await forward_to_channel(message, settings.forward_chat_id)
if success:
await ChatMessageService.save_message(
session,
user_id=user.id,
telegram_message_id=message.message_id,
message_type='voice',
file_id=message.voice.file_id,
forwarded_ids={'channel': channel_msg_id} if channel_msg_id else None
)
await message.answer("✅ Голосовое сообщение переслано в канал")