feat: блокировка голосовых сообщений и аудиофайлов
Some checks reported errors
continuous-integration/drone/push Build encountered an error
Some checks reported errors
continuous-integration/drone/push Build encountered an error
- Голосовые сообщения (F.voice) теперь отклоняются с предупреждением - Аудиофайлы/музыка (F.audio) теперь отклоняются с предупреждением - Пользователям предлагается использовать текст или изображения - Упрощена логика обработчиков - теперь просто блокировка без проверок
This commit is contained in:
@@ -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("✅ Голосовое сообщение переслано в канал")
|
|
||||||
|
|||||||
Reference in New Issue
Block a user