"""
ВЗАИМОВЫРУЧКА ЛКМ37
Локальный шеринг и помощь соседям.
"""
from aiogram import Router, F
from aiogram.types import Message, CallbackQuery, InlineKeyboardButton
from aiogram.utils.keyboard import InlineKeyboardBuilder
from aiogram.filters import Command
from aiogram.fsm.state import State, StatesGroup
from aiogram.fsm.context import FSMContext
from utils.ui_styles import fmt_msg
import config
router = Router()
class HelpState(StatesGroup):
waiting_for_text = State()
@router.callback_query(F.data == "mutual_aid")
async def start_help(callback: CallbackQuery):
kb = InlineKeyboardBuilder()
kb.row(InlineKeyboardButton(text="🆘 МНЕ НУЖНА ПОМОЩЬ", callback_data="need_help"))
kb.row(InlineKeyboardButton(text="🤝 Я МОГУ ПОМОЧЬ", callback_data="can_help"))
text = (
f"{fmt_msg('ВЗАИМОВЫРУЧКА ЛКМ37', 'resident')}\n\n"
"Соседи — это сила! Здесь вы можете попросить о помощи или предложить свою.\n"
"Например: одолжить дрель, соль, помочь с тяжелыми сумками."
)
await callback.message.answer(text, reply_markup=kb.as_markup())
await callback.answer()
@router.callback_query(F.data == "need_help")
async def need_help_start(callback: CallbackQuery, state: FSMContext):
await callback.message.answer("Опишите коротко, что вам нужно:\nНапример: 'Нужна дрель на 10 минут'")
await state.set_state(HelpState.waiting_for_text)
await callback.answer()
@router.message(HelpState.waiting_for_text)
async def process_help_request(message: Message, state: FSMContext):
help_text = message.text
user_id = message.from_user.id
# Публикуем в общий чат
alert_text = (
f"🆘 НУЖНА ПОМОЩЬ СОСЕДЕЙ!\n\n"
f"👤 Субъект: ID{user_id}\n"
f"💬 Запрос: {help_text}\n\n"
f"Если можете помочь, напишите соседу в личку!"
)
try:
await message.bot.send_message(
chat_id=config.ADMIN_CHAT_ID,
text=alert_text,
parse_mode='HTML',
reply_markup=InlineKeyboardBuilder().row(
InlineKeyboardButton(text="🤝 Помочь", url=f"tg://user?id={user_id}")
).as_markup()
)
await message.answer(f"{fmt_msg('Запрос отправлен в чат дома!', 'system')}")
except Exception as e:
await message.answer("❌ Ошибка при отправке. Попробуйте позже.")
await state.clear()