Files
muha-bot/keyboards.py
T
2026-07-09 23:34:34 +03:00

229 lines
5.2 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.
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
)