Files
LawBot/bot/keyboards/reply_keyboards.py
T
2026-05-25 01:12:43 +03:00

133 lines
4.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Aiogram imports
from aiogram.types import InlineKeyboardMarkup, KeyboardButton, ReplyKeyboardMarkup
from aiogram.utils.keyboard import InlineKeyboardBuilder, ReplyKeyboardBuilder
from decouple import config
import pytz
QUESTION_CATEGORIES = [
("💼 Работа", "labor"),
("🛒 Защита прав потребителей", "consumer"),
("🏠 Жилье / аренда", "housing"),
("👪 Семья", "family"),
("💰 Долги / займы", "civil"),
("📄 Договоры", "civil"),
("⚖️ Суд / процесс", "procedural"),
("❓ Другое", "other"),
]
USER_TYPES = [
("Физлицо", "physical_person"),
("ИП", "individual_entrepreneur"),
("ООО", "company"),
]
CATEGORY_BY_TEXT = {text: code for text, code in QUESTION_CATEGORIES}
USER_TYPE_BY_TEXT = {text: code for text, code in USER_TYPES}
USER_TYPE_LABEL_BY_CODE = {code: text for text, code in USER_TYPES}
TZ = pytz.timezone(config("TIMEZONE"))
def get_main_menu_kb() -> ReplyKeyboardMarkup:
builder = ReplyKeyboardBuilder()
builder.row(KeyboardButton(text="⚖️ Задать вопрос"))
builder.row(
KeyboardButton(text="📚 Мои консультации"),
KeyboardButton(text="👤 Профиль"),
)
builder.row(KeyboardButton(text="️ Помощь"))
return builder.as_markup(resize_keyboard=True, is_persistent=True)
def get_categories_kb() -> ReplyKeyboardMarkup:
builder = ReplyKeyboardBuilder()
for text, _ in QUESTION_CATEGORIES:
builder.add(KeyboardButton(text=text))
builder.add(KeyboardButton(text="↩️ В меню"))
builder.adjust(1)
return builder.as_markup(resize_keyboard=True, is_persistent=True)
def get_back_to_menu_kb() -> ReplyKeyboardMarkup:
builder = ReplyKeyboardBuilder()
builder.row(KeyboardButton(text="↩️ В меню"))
return builder.as_markup(resize_keyboard=True)
def get_profile_kb() -> ReplyKeyboardMarkup:
builder = ReplyKeyboardBuilder()
builder.row(KeyboardButton(text="🌍 Изменить регион"))
builder.row(KeyboardButton(text="👔 Изменить тип пользователя"))
builder.row(KeyboardButton(text="🗑 Удалить мои данные"))
builder.row(KeyboardButton(text="↩️ В меню"))
return builder.as_markup(resize_keyboard=True, is_persistent=True)
def get_user_types_kb() -> ReplyKeyboardMarkup:
builder = ReplyKeyboardBuilder()
for text, _ in USER_TYPES:
builder.add(KeyboardButton(text=text))
builder.add(KeyboardButton(text="↩️ В меню"))
builder.adjust(1)
return builder.as_markup(resize_keyboard=True)
def get_delete_profile_kb() -> ReplyKeyboardMarkup:
builder = ReplyKeyboardBuilder()
builder.row(KeyboardButton(text="✅ Да, удалить"))
builder.row(KeyboardButton(text="↩️ В меню"))
return builder.as_markup(resize_keyboard=True)
def get_consultations_ikb(consultations: list) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
for consultation in consultations:
title = consultation.title or consultation.category
updated_at = consultation.updated_at.astimezone(TZ).strftime("%d.%m.%Y")
builder.row(
ai_button(
text=f"{title[:48]}{updated_at}",
callback_data=f"consultation:open:{consultation.id}",
)
)
return builder.as_markup()
def get_consultation_actions_ikb(consultation_id: int) -> InlineKeyboardMarkup:
builder = InlineKeyboardBuilder()
builder.row(
ai_button(
text="🔁 Продолжить",
callback_data=f"consultation:continue:{consultation_id}",
)
)
builder.row(
ai_button(
text="🗑 Удалить",
callback_data=f"consultation:delete:{consultation_id}",
)
)
return builder.as_markup()
def ai_button(text: str, callback_data: str):
from aiogram.types import InlineKeyboardButton
return InlineKeyboardButton(text=text, callback_data=callback_data)