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_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_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
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
예제 #5
0
 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_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_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
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
예제 #9
0
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(
        [
            [
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
예제 #11
0
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)