# bot/handlers/commands/union_cmd.py
from aiogram import Router, F
from aiogram.filters import Command
from aiogram.types import Message, CallbackQuery, InlineKeyboardButton
from aiogram.utils.keyboard import InlineKeyboardBuilder

from aiogram.fsm.context import FSMContext

from bot.core import BotInfo
from bot.states.union_states import UnionStates
from bot.templates import msg
from middleware import log

# Настройка экспорта и роутера
__all__ = ("router",)


router: Router = Router(name="union_cmd_router")



@router.callback_query(F.data == "union")
@router.message(Command('union','гтшщт', 'союз', prefix=BotInfo.prefix, ignore_case=True))
@log(level='INFO', log_type='Start', text="использовал(а) команду /union")
async def create_cmd(message: Message|CallbackQuery, state: FSMContext) -> None:
    """
    Обработчик команды /union.
    """
    # Сбросим все состояния (отменим создание поста, если оно было)
    #await state.clear()

    # Создание инлайн-клавиатуры
    ikb: InlineKeyboardBuilder = InlineKeyboardBuilder()
    ikb.row(InlineKeyboardButton(text="Правила❗️", url='https://teletype.in/@velli_arsaan/XxUiHcB4Puj'))
    ikb.row(InlineKeyboardButton(text="Назад↪️", callback_data='start'))

    # Создание базовых переменных сообщения
    caption: str = f"""
Приветствуем! Это бот для связи по вопросам союзов проекта ˚₊· ‌‌‌‌➳ 𝑆𝑦𝑠𝑡𝑒𝑚 𝑅𝑒𝑠𝑒𝑡 ·₊˚.
Задайте свой вопрос, и мы постараемся ответить вам в ближайшее время — в некотором случае можем попроосить вас дать юз/ссылку на ваш проект.

Предложение о заключении союзов должно выглядеть вот так:
– Название
– Юз и ссылка на инфо
– Юз и ссылка на лайф
– Условия союзов
– Юзер следящего с вашей стороны
– Желаемый следящий с нашей стороны (мы будем в праве поставить вам другого, но тот, которого вы назовёте, будет в приоритете)
– Кодовое предложение из условий союзов. Оно состоит из 4 слов, которые расположены в верном порядке в статье о наших условиях сотрудничества. 

Имейте ввиду, что мы можем отказаться от союза без объяснения причин!
"""

    # Обработчик ответа на сообщение
    await msg(message=message, text=caption, markup=ikb)

    # Установим состояние ожидания анкеты
    await state.set_state(UnionStates.waiting_for_union)
