229 lines
5.2 KiB
Python
229 lines
5.2 KiB
Python
from aiogram.types import (
|
||
ReplyKeyboardMarkup,
|
||
KeyboardButton,
|
||
InlineKeyboardMarkup,
|
||
InlineKeyboardButton,
|
||
)
|
||
from aiogram.types import KeyboardButton, ReplyKeyboardMarkup
|
||
import calendar
|
||
from datetime import date
|
||
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
|
||
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||
|
||
|
||
def main_keyboard():
|
||
|
||
return ReplyKeyboardMarkup(
|
||
keyboard=[
|
||
[
|
||
KeyboardButton(text="📅 Расписание"),
|
||
KeyboardButton(text="🔍 Сменить группу")
|
||
],
|
||
[
|
||
KeyboardButton(text="✉️ Поддержка")
|
||
]
|
||
],
|
||
resize_keyboard=True
|
||
)
|
||
def start_keyboard():
|
||
|
||
return ReplyKeyboardMarkup(
|
||
keyboard=[
|
||
[
|
||
KeyboardButton(text="🔍 Выбрать группу")
|
||
]
|
||
],
|
||
resize_keyboard=True
|
||
)
|
||
|
||
def date_keyboard():
|
||
|
||
kb = InlineKeyboardBuilder()
|
||
|
||
kb.button(
|
||
text="📅 Сегодня",
|
||
callback_data="date:today"
|
||
)
|
||
|
||
kb.button(
|
||
text="🗓 Календарь",
|
||
callback_data="date:calendar"
|
||
)
|
||
|
||
kb.adjust(2)
|
||
|
||
return kb.as_markup()
|
||
|
||
|
||
def groups_keyboard(groups):
|
||
|
||
keyboard = []
|
||
|
||
for group in groups:
|
||
|
||
keyboard.append(
|
||
[
|
||
InlineKeyboardButton(
|
||
text=f"{group['groupName']} (курс {group['course']})",
|
||
callback_data=f"select_group:{group['groupID']}"
|
||
)
|
||
]
|
||
)
|
||
|
||
return InlineKeyboardMarkup(
|
||
inline_keyboard=keyboard
|
||
)
|
||
|
||
def calendar_keyboard(year: int, month: int):
|
||
|
||
kb = []
|
||
|
||
months = [
|
||
"",
|
||
"Январь",
|
||
"Февраль",
|
||
"Март",
|
||
"Апрель",
|
||
"Май",
|
||
"Июнь",
|
||
"Июль",
|
||
"Август",
|
||
"Сентябрь",
|
||
"Октябрь",
|
||
"Ноябрь",
|
||
"Декабрь",
|
||
]
|
||
|
||
kb.append([
|
||
InlineKeyboardButton(
|
||
text=f"{months[month]} {year}",
|
||
callback_data="ignore"
|
||
)
|
||
])
|
||
|
||
kb.append([
|
||
InlineKeyboardButton(text="Пн", callback_data="ignore"),
|
||
InlineKeyboardButton(text="Вт", callback_data="ignore"),
|
||
InlineKeyboardButton(text="Ср", callback_data="ignore"),
|
||
InlineKeyboardButton(text="Чт", callback_data="ignore"),
|
||
InlineKeyboardButton(text="Пт", callback_data="ignore"),
|
||
InlineKeyboardButton(text="Сб", callback_data="ignore"),
|
||
InlineKeyboardButton(text="Вс", callback_data="ignore"),
|
||
])
|
||
|
||
cal = calendar.monthcalendar(year, month)
|
||
|
||
for week in cal:
|
||
|
||
row = []
|
||
|
||
for day in week:
|
||
|
||
if day == 0:
|
||
row.append(
|
||
InlineKeyboardButton(
|
||
text=" ",
|
||
callback_data="ignore"
|
||
)
|
||
)
|
||
else:
|
||
row.append(
|
||
InlineKeyboardButton(
|
||
text=str(day),
|
||
callback_data=f"calendar:{year}:{month}:{day}"
|
||
)
|
||
)
|
||
|
||
kb.append(row)
|
||
|
||
prev_month = month - 1
|
||
prev_year = year
|
||
|
||
if prev_month == 0:
|
||
prev_month = 12
|
||
prev_year -= 1
|
||
|
||
next_month = month + 1
|
||
next_year = year
|
||
|
||
if next_month == 13:
|
||
next_month = 1
|
||
next_year += 1
|
||
|
||
kb.append([
|
||
InlineKeyboardButton(
|
||
text="⬅️",
|
||
callback_data=f"month:{prev_year}:{prev_month}"
|
||
),
|
||
InlineKeyboardButton(
|
||
text="🏠 Сегодня",
|
||
callback_data="calendar_today"
|
||
),
|
||
InlineKeyboardButton(
|
||
text="➡️",
|
||
callback_data=f"month:{next_year}:{next_month}"
|
||
),
|
||
])
|
||
|
||
return InlineKeyboardMarkup(
|
||
inline_keyboard=kb
|
||
)
|
||
|
||
def subgroup_keyboard():
|
||
|
||
kb = InlineKeyboardBuilder()
|
||
|
||
kb.button(text="Общая", callback_data="sub:0")
|
||
|
||
for i in range(1, 5):
|
||
kb.button(text=f"{i}А", callback_data=f"sub:{i}А")
|
||
kb.button(text=f"{i}Б", callback_data=f"sub:{i}Б")
|
||
|
||
kb.adjust(1, 2, 2, 2, 2)
|
||
|
||
return kb.as_markup()
|
||
|
||
def support_keyboard():
|
||
|
||
return ReplyKeyboardMarkup(
|
||
keyboard=[
|
||
[
|
||
KeyboardButton(
|
||
text="✉️ Поддержка"
|
||
)
|
||
]
|
||
],
|
||
resize_keyboard=True
|
||
)
|
||
|
||
def ticket_keyboard(ticket_id: int):
|
||
|
||
return InlineKeyboardMarkup(
|
||
inline_keyboard=[
|
||
[
|
||
InlineKeyboardButton(
|
||
text="💬 Ответить",
|
||
callback_data=f"reply_ticket:{ticket_id}"
|
||
),
|
||
InlineKeyboardButton(
|
||
text="✅ Закрыть",
|
||
callback_data=f"close_ticket:{ticket_id}"
|
||
)
|
||
]
|
||
]
|
||
)
|
||
|
||
def phone_keyboard():
|
||
|
||
return ReplyKeyboardMarkup(
|
||
keyboard=[
|
||
[
|
||
KeyboardButton(
|
||
text="📱 Отправить телефон",
|
||
request_contact=True
|
||
)
|
||
]
|
||
],
|
||
resize_keyboard=True,
|
||
one_time_keyboard=True
|
||
) |