def make_inline_keyboard_notifications(): """Кнопка 'Настройка уведомлений'""" keyboard = Keyboard(one_time=False) keyboard.row() keyboard.add(Text(label='Настройки ⚙'), color=KeyboardButtonColor.PRIMARY) keyboard.row() keyboard.add(Text(label='<==Назад'), color=KeyboardButtonColor.SECONDARY) return keyboard
def make_keyboard_commands(): """Создаём кнопки команд""" keyboard = Keyboard(one_time=False) keyboard.row() # keyboard.add(Text(label="about"), color=KeyboardButtonColor.PRIMARY) keyboard.add(Text(label="Авторы"), color=KeyboardButtonColor.PRIMARY) keyboard.row() keyboard.add(Text(label="Регистрация"), color=KeyboardButtonColor.SECONDARY) keyboard.add(Text(label="Карта"), color=KeyboardButtonColor.SECONDARY) keyboard.row() keyboard.add(Text(label="<==Назад"), color=KeyboardButtonColor.SECONDARY) return keyboard
def _generate_keyboard(self, peer_id, chat_flg=False) -> str: admin_flg = peer_id in self._admins keyboard = Keyboard(one_time=not admin_flg and chat_flg) if not self._timetable_work_flg and admin_flg: keyboard.row() keyboard.add(Text("Включить уведомления."), color=KeyboardButtonColor.POSITIVE) keyboard.row() keyboard.add(Text("Расписание на сегодня."), color=KeyboardButtonColor.POSITIVE) keyboard.row() keyboard.add(Text("Да или нет?"), color=KeyboardButtonColor.PRIMARY) keyboard.row() keyboard.add(Text("Поддержать.")) return keyboard.get_json()
def make_keyboard_nearlesson(): """Создаём основные кнопки""" keyboard = Keyboard(one_time=False) keyboard.row() keyboard.add(Text(label="Текущая"), color=KeyboardButtonColor.PRIMARY) keyboard.add(Text(label="Следующая"), color=KeyboardButtonColor.PRIMARY) keyboard.row() keyboard.add(Text(label="<==Назад"), color=KeyboardButtonColor.SECONDARY) return keyboard
def make_inline_keyboard_set_notifications(time=0): """кнопки настройки уведомлений""" if time != 0: text_check = f'{time} мин' else: text_check = 'off' keyboard = Keyboard(one_time=False) keyboard.row() keyboard.add(Text(label="-"), color=KeyboardButtonColor.PRIMARY) keyboard.add(Text(label=text_check), color=KeyboardButtonColor.PRIMARY) keyboard.add(Text(label='+'), color=KeyboardButtonColor.PRIMARY) keyboard.row() keyboard.add(Text(label="Сохранить"), color=KeyboardButtonColor.SECONDARY) return keyboard
def make_keyboard_extra(): keyboard = Keyboard(one_time=False) keyboard.row() keyboard.add(Text(label="Список команд"), color=KeyboardButtonColor.PRIMARY) keyboard.row() keyboard.add(Text(label="Поиск 🔎"), color=KeyboardButtonColor.SECONDARY) keyboard.row() keyboard.add(Text(label="<==Назад"), color=KeyboardButtonColor.SECONDARY) return keyboard
def make_keyboard_choose_schedule(): '''Создаёт клавиатуру для выбора недели''' keyboard = Keyboard(one_time=False) keyboard.row() keyboard.add(Text(label="На текущую неделю"), color=KeyboardButtonColor.PRIMARY) keyboard.add(Text(label="На следующую неделю"), color=KeyboardButtonColor.PRIMARY) keyboard.row() keyboard.add(Text(label="Основное меню"), color=KeyboardButtonColor.SECONDARY) return keyboard
from vkbottle import Keyboard, Text, KeyboardButtonColor # Simplest way of generating keyboard is non-builder interface # Use <.raw()> to add raw # Use <.add(Action(...), COLOR)> to add button to the last raw # Use <.get_json()> to make keyboard sendable KEYBOARD_STANDARD = Keyboard(one_time=True, inline=False) KEYBOARD_STANDARD.add(Text("Button 1"), color=KeyboardButtonColor.POSITIVE) KEYBOARD_STANDARD.add(Text("Button 2")) KEYBOARD_STANDARD.row() KEYBOARD_STANDARD.add(Text("Button 3")) KEYBOARD_STANDARD = KEYBOARD_STANDARD.get_json() # add and row methods returns the instance of Keyboard # so you can use it as builder KEYBOARD_WITH_BUILDER = ( Keyboard(one_time=True, inline=False) .add(Text("Button 1"), color=KeyboardButtonColor.POSITIVE) .add(Text("Button 2")) .row() .add(Text("Button 3")) .get_json() ) # Schema is another way to create keyboard # all fields except of color are read as action fields KEYBOARD_WITH_SCHEMA = ( Keyboard(one_time=True, inline=False) .schema( [ [
def make_keyboard_start_menu(): """Создаём основные кнопки""" keyboard = Keyboard(one_time=False) keyboard.row() keyboard.add(Text(label="Расписание 🗓"), color=KeyboardButtonColor.PRIMARY) keyboard.add(Text(label="Ближайшая пара ⏱"), color=KeyboardButtonColor.PRIMARY) keyboard.row() keyboard.add(Text(label="Расписание на сегодня 🍏"), color=KeyboardButtonColor.SECONDARY) keyboard.row() keyboard.add(Text(label="Расписание на завтра 🍎"), color=KeyboardButtonColor.SECONDARY) keyboard.row() keyboard.add(Text(label="Напоминание 📣"), color=KeyboardButtonColor.PRIMARY) keyboard.add(Text(label="Другое ⚡"), color=KeyboardButtonColor.PRIMARY) return keyboard
async def reg_prep(bot: Bot, ans: Message, storage): """Регистрация преподавателя""" chat_id = ans.from_id message = ans.text page = 1 if message == "Назад к институтам": await ans.answer('Назад к институтам', keyboard=keyboards.make_keyboard_institutes( storage.get_institutes())) storage.delete_vk_user_or_userdata(chat_id) await bot.state_dispenser.delete(ans.peer_id) return prep_list = storage.get_prep(message) if prep_list: prep_name = prep_list[0]['prep'] storage.save_or_update_vk_user(chat_id=chat_id, group=prep_name, course='None') await bot.state_dispenser.delete(ans.peer_id) await ans.answer( f'Приветствую Вас, Пользователь! Вы успешно зарегистрировались, как {prep_name}!😊\n\n' "Я чат-бот для просмотра расписания занятий в Иркутском Политехе.🤖\n\n" "С помощью меня можно не только смотреть свое расписание на день или неделю, но и осуществлять поиск расписания по группам, аудиториям и преподавателям (кнопка [Поиск]).\n" "А еще можно настроить уведомления о парах (в разделе [Другое] кнопка [Напоминания]).\n\n" "Следующие советы помогут раскрыть мой функционал на 💯 процентов:\n" "⏭Используйте кнопки, так я буду Вас лучше понимать!\n\n" "🌄Подгружайте расписание утром и оно будет в нашем чате до скончания времен!\n\n" "📃Чтобы просмотреть список доступных команд и кнопок, напишите в чате [Помощь]\n\n" "🆘Чтобы вызвать эту подсказку снова, напиши в чат [Подсказка] \n\n" "Надеюсь, что Вам будет удобно меня использовать. Для того чтобы пройти регистрацию повторно, напишите сообщение [Регистрация]\n\n" "Если Вы столкнетесь с технической проблемой, то Вы можете:\n" "- обратиться за помощью в официальную группу ВКонтакте [https://vk.com/smartschedule]\n" "- написать одному из моих создателей (команда Авторы)🤭\n", keyboard=keyboards.make_keyboard_start_menu()) return # Если преподавателя не нашли elif not prep_list and not prep_reg[chat_id]: # Делим введенное фио на части и ищем по каждой в базе prep_list = [] prep_list_2 = [] for name_unit in message.split(): for i in storage.get_register_list_prep(name_unit): prep_list.append(i['prep']) if prep_list and prep_list_2: prep_list_2 = list(set(prep_list) & set(prep_list_2)) elif prep_list and not prep_list_2: prep_list_2 = prep_list prep_list = [] if not prep_list_2: prep_list_2 = None prep_list_reg = [page, prep_list_2] prep_reg[chat_id] = prep_list_reg if prep_reg[chat_id][1]: prep_list_2 = prep_reg[chat_id][1] keyboard = Keyboard(one_time=False) for i in prep_list_2[:8]: keyboard.row() keyboard.add(Text(label=i), color=KeyboardButtonColor.PRIMARY) keyboard.row() keyboard.add(Text(label='Назад к институтам'), color=KeyboardButtonColor.PRIMARY) if len(prep_list_2) > 8: keyboard.add(Text(label='Далее'), color=KeyboardButtonColor.PRIMARY) await ans.answer('Возможно Вы имели в виду', keyboard=keyboard) return else: storage.delete_vk_user_or_userdata(chat_id) await ans.answer( 'Мы не смогли найти вас в базе преподавателей.\n' 'Возможно вы неверно ввели своё ФИО.', keyboard=keyboards.make_keyboard_institutes( storage.get_institutes())) await bot.state_dispenser.delete(ans.peer_id) if message == 'Далее': prep_reg[chat_id][0] += 1 page = prep_reg[chat_id][0] prep_list_2 = prep_reg[chat_id][1] keyboard = Keyboard(one_time=False) if len(prep_list_2) - (page - 1) * 8 >= 8: for i in prep_list_2[(page - 1) * 8:(page - 1) * 8 + 8]: keyboard.row() keyboard.add(Text(label=i['prep']), color=KeyboardButtonColor.PRIMARY) keyboard.row() keyboard.add(Text(label='Назад'), color=KeyboardButtonColor.PRIMARY) keyboard.add(Text(label='Далее'), color=KeyboardButtonColor.PRIMARY) keyboard.row() keyboard.add(Text(label='Назад к институтам'), color=KeyboardButtonColor.PRIMARY) else: for i in prep_list_2[(page - 1) * 8:len(prep_list_2)]: keyboard.row() keyboard.add(Text(label=i), color=KeyboardButtonColor.PRIMARY) keyboard.row() keyboard.add(Text(label='Назад'), color=KeyboardButtonColor.PRIMARY) keyboard.add(Text(label='Назад к институтам'), color=KeyboardButtonColor.PRIMARY) await ans.answer(f'Страница {page}', keyboard=keyboard) elif message == 'Назад': prep_reg[chat_id][0] -= 1 page = prep_reg[chat_id][0] prep_list_2 = prep_reg[chat_id][1] keyboard = Keyboard(one_time=False) for i in prep_list_2[(page - 1) * 8:page * 8]: keyboard.row() keyboard.add(Text(label=i), color=KeyboardButtonColor.PRIMARY) keyboard.row() if page != 1: keyboard.add(Text(label='Назад'), color=KeyboardButtonColor.PRIMARY) keyboard.add(Text(label='Далее'), color=KeyboardButtonColor.PRIMARY) keyboard.row() keyboard.add(Text(label='Назад к институтам'), color=KeyboardButtonColor.PRIMARY) elif page == 1: keyboard.add(Text(label='Назад к институтам'), color=KeyboardButtonColor.PRIMARY) keyboard.add(Text(label='Далее'), color=KeyboardButtonColor.PRIMARY) await ans.answer(f'Страница {page}', keyboard=keyboard) return
from vkbottle import Text, Keyboard, KeyboardButtonColor keyboard = Keyboard(one_time=False, inline=False) keyboard.add(Text("Создать"), color=KeyboardButtonColor.POSITIVE) keyboard.add(Text("Посмотреть все"))
from vkbottle import Keyboard, KeyboardButtonColor, Text from src.commands import * KEYBOARD_ENTRYPOINT = Keyboard(inline=False, one_time=True) KEYBOARD_ENTRYPOINT.add(Text(AdminOpenLock.button_name, payload={'cmd': AdminOpenLock.key}), color=KeyboardButtonColor.PRIMARY) KEYBOARD_ENTRYPOINT.add(Text(AdminCloseLock.button_name, payload={'cmd': AdminCloseLock.key}), color=KeyboardButtonColor.PRIMARY) KEYBOARD_ENTRYPOINT.row() for command in [GetPasswordCommand, HelpCommand]: KEYBOARD_ENTRYPOINT.add(Text(command.button_name, payload={'cmd': command.key}), color=KeyboardButtonColor.SECONDARY)