TGBotReffBook
82 строки · 4.0 Кб
1from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton2
3from app.data.keyspace import Separators4from app.data.urls import SCHEDULE_URL5
6
7class InitialKeyboard:8getScheduleTxt = 'schedule'9searchGroupTxt = 'search_grp'10searchTeacherTxt = 'search_teacher'11searchPlaceTxt = 'search_place'12toMenuTxt = 'menu'13
14"""Админские кнопки"""15clearCache = "clear_cache"16userCountBtn = "user_count"17writeToUsers = "write_to_users"18
19@staticmethod20def getKeyboard():21getScheduleBtn = InlineKeyboardButton('Найти расписание', callback_data=InitialKeyboard.getScheduleTxt)22searchGroupBtn = InlineKeyboardButton('Поиск по группе', callback_data=InitialKeyboard.searchGroupTxt)23searchTeacherBtn = InlineKeyboardButton('Поиск по преподавателю',24callback_data=InitialKeyboard.searchTeacherTxt)25searchPlaceBtn = InlineKeyboardButton('Поиск по аудитории',26callback_data=InitialKeyboard.searchPlaceTxt)27return InlineKeyboardMarkup(row_width=1).row(getScheduleBtn).row(searchGroupBtn).row(searchTeacherBtn).row(28searchPlaceBtn)29
30@staticmethod31def getAdminKeyboard():32getCacheBtn = InlineKeyboardButton('Очистить кэш', callback_data=InitialKeyboard.clearCache)33getUserCountBtn = InlineKeyboardButton('Количество пользователей в бд',34callback_data=InitialKeyboard.userCountBtn)35writeToUsers = InlineKeyboardButton('Написать всем пользователям',36callback_data=InitialKeyboard.writeToUsers)37return InlineKeyboardMarkup(row_width=1).row(getCacheBtn).row(getUserCountBtn).row(writeToUsers)38
39@staticmethod40def getToMenuKeyboard():41toMenuBtn = InlineKeyboardButton('Меню', callback_data=InitialKeyboard.toMenuTxt)42return InlineKeyboardMarkup(row_width=1).row(toMenuBtn)43
44
45class ModifyKeyboard:46@staticmethod47def addCacheGroupButton(markup: InlineKeyboardMarkup, main_data: int, group_name: str, key_word: str,48text: str = "Группа"):49getCachedScheduleBtn = InlineKeyboardButton(text + f' {group_name}',50callback_data=key_word + Separators.KEY_DATA51+ group_name + Separators.DATA_META + str(main_data))52markup.add(getCachedScheduleBtn)53
54@staticmethod55def addCacheTeacherButton(markup: InlineKeyboardMarkup, main_data: int, teacher_name: str, key_word: str,56text: str = "Преподаватель"):57getCachedScheduleBtn = InlineKeyboardButton(text + f' {teacher_name}',58callback_data=key_word + Separators.KEY_DATA + str(main_data))59markup.add(getCachedScheduleBtn)60
61@staticmethod62def addPolyLinkGroupButton(markup: InlineKeyboardMarkup):63getUrlScheduleBtn = InlineKeyboardButton("Сайт с расписанием", url=SCHEDULE_URL)64markup.add(getUrlScheduleBtn)65
66
67class ScheduleKeyboard:68@staticmethod69def createKeyboardRows(rows: dict, key_word: str, rows_count: int = 1):70rows_markup = InlineKeyboardMarkup(row_width=rows_count)71for row_key in rows.keys():72btn = InlineKeyboardButton(rows[row_key], callback_data=key_word + Separators.KEY_DATA + str(row_key))73rows_markup.insert(btn)74return rows_markup75
76@staticmethod77def createKeyboardListRows(rows: list, key_word: str):78rows_markup = InlineKeyboardMarkup(row_width=1)79for row in rows:80btn = InlineKeyboardButton(row, callback_data=key_word + Separators.KEY_DATA + str(row))81rows_markup.add(btn)82return rows_markup83