Exemple #1
0
def list_of_lists(group_id: int) -> JSONStr:
    kb = Keyboard()

    with orm.db_session:
        lists_of_group = lists.get_lists_of_group(group_id)

    for lst in lists_of_group:
        if len(kb.buttons[-1]) == 2:
            kb.add_row()
        kb.add_text_button(lst.name,
                           payload={
                               "button": "list",
                               "list": lst.id
                           })

    if kb.buttons[-1]:
        kb.add_row()

    kb.add_text_button(
        text="➕ Создать список",
        payload={"button": "create_list"},
    )
    kb.add_row()
    kb.add_text_button(
        text="◀️ Назад",
        payload={"button": "group_mgmt"},
    )

    return kb.get_keyboard()
Exemple #2
0
def list_of_groups(admin_id: int) -> JSONStr:
    """
    Генерирует клавиатуру с группами, доступных пользователю для администрирования.

    Args:
        admin_id: идентификатор администратора

    Returns:
        JSONStr: Строка с клавиатурой
    """
    kb = Keyboard()

    groups = admin.get_admin_feud(admin_id)
    for group in groups:
        if len(kb.buttons[-1]) == 2:
            kb.add_row()
        kb.add_text_button(
            group.group_num,
            payload={
                "button": "group",
                "group_id": group.id
            },
        )

    return kb.get_keyboard()
Exemple #3
0
def list_of_fin_categories(admin_id: int) -> JSONStr:
    """
    Генерирует клавитуру со списком финансовых категорий.

    Args:
        admin_id: Идентификатор администратора

    Returns:
        JSONStr: клавиатура
    """
    kb = Keyboard()
    with orm.db_session:
        categories = finances.get_fin_categories(
            admin.get_active_group(admin_id))
        for category in categories:
            if len(kb.buttons[-1]) == 2:
                kb.add_row()
            kb.add_text_button(
                category.name,
                payload={
                    "button": "fin_category",
                    "category": category.id
                },
            )
    if kb.buttons[-1]:
        kb.add_row()
    kb.add_text_button(
        "➕ Создать категорию",
        payload={"button": "create_finances_category"},
    )
    kb.add_row()
    kb.add_text_button("◀️ Назад", payload={"button": "main_menu"})

    return kb.get_keyboard()
Exemple #4
0
    def students(self, letter: str) -> str:
        data = db.students.get_list_of_students_by_letter(
            self.admin_id, letter)
        selected = db.shortcuts.get_list_of_calling_students(self.admin_id)
        half_index = self._find_half_index_of_letter(letter)
        kb = Keyboard()
        for item in data:
            if len(kb.buttons[-1]) == 2:
                kb.add_row()
            label = " "
            if item.id in selected:
                label = "✅ "
            kb.add_text_button(
                text=f"{label}{item.second_name} {item.first_name}",
                payload={
                    "button": "student",
                    "student_id": item.id,
                    "letter": letter,
                    "name": f"{item.second_name} {item.first_name}",
                },
            )
        if kb.buttons[-1]:
            kb.add_row()
        kb.add_text_button(
            text="◀️ Назад",
            payload={
                "button": "half",
                "half": half_index
            },
        )

        return kb.get_keyboard()
Exemple #5
0
def group_privacy(group_id: int) -> JSONStr:
    kb = Keyboard()

    privacy = groups.get_privacy_of_group(group_id)

    if privacy:
        kb.add_text_button(
            "🔓 Публичная",
            payload={
                "button": "change_group_privacy",
                "value": False,
            },
        )
    else:
        kb.add_text_button(
            "🔒 Приватная",
            payload={
                "button": "change_group_privacy",
                "value": True,
            },
        )

    kb.add_row()
    kb.add_text_button(
        "◀️ Назад",
        payload={"button": "main_menu"},
    )

    return kb.get_keyboard()
Exemple #6
0
def configure_chat(chat_id: int):
    """
    Меню настройки чата.

    Args:
        chat_id: Идентфикатор чата

    Returns:
        JSONStr: клавиатура
    """
    kb = Keyboard()
    kb.add_text_button(
        "🗑 Отключить чат",
        payload={
            "button": "remove_chat",
            "chat": chat_id
        },
    )
    kb.add_row()
    kb.add_text_button(
        "🗂 Индексировать чат",
        payload={
            "button": "index_chat",
            "chat": chat_id
        },
    )
    kb.add_row()
    kb.add_text_button(
        "◀️ Назад",
        payload={"button": "configure_chats"},
    )
    return kb.get_keyboard()
Exemple #7
0
def main_menu(admin_id: int) -> JSONStr:
    """
    Генерирует клавиатуру главного меню.

    Args:
        admin_id: Идентификатор пользователя

    Returns:
        JSONStr: Строка с клавиатурой

    """
    is_admin = db.admin.is_user_admin(admin_id)
    logger.debug(f"{is_admin=}")
    kb = Keyboard()
    if is_admin:
        kb.add_text_button(text="📢 Призыв", payload={"button": "call"})
        kb.add_text_button(text="💰 Финансы", payload={"button": "finances"})
        kb.add_row()
    kb.add_text_button(text="📅 Расписание", payload={"button": "schedule"})
    if is_admin:
        kb.add_text_button(text="📕 Контакты", payload={"button": "contacts"})
        kb.add_row()
        kb.add_text_button(text="⚙ Настройки", payload={"button": "settings"})
        kb.add_text_button(text="🌐 Веб", payload={"button": "web"})
        kb.add_row()
        kb.add_text_button(
            text="⚠ Сообщить об ошибке",
            payload={"button": "report_error"},
        )
    return kb.get_keyboard()
Exemple #8
0
def public_groups(university: typing.Optional[int]):
    kb = Keyboard()

    if university is None:
        raise TypeError("Значение university не может быть пустым")

    with orm.db_session:
        groups = uni.get_public_groups(university)

        for group in groups:
            if len(kb.buttons[-1]) == 2:
                kb.add_row()

            kb.add_text_button(
                group.group_num,
                payload={
                    "button": "group",
                    "group": group.id
                },
            )

    if kb.buttons[-1]:
        kb.add_row()

    kb.add_text_button("🚫 Отмена", payload={"button": "cancel"})

    return kb.get_keyboard()
Exemple #9
0
def preferences(admin_id: int) -> JSONStr:
    """
    Возвращает клавиатуру главного окна настроек.

    Args:
        admin_id: Идентификатор администратора

    Returns:
        JSONStr: клавиатура
    """
    kb = Keyboard()
    kb.add_text_button("💬 Настроить чаты",
                       payload={"button": "configure_chats"})
    kb.add_row()

    with orm.db_session:
        feud = admin.get_admin_feud(admin_id)
        if len(feud) > 1:
            kb.add_text_button("Выбрать группу",
                               payload={"button": "select_group"})
            kb.add_row()

    kb.add_text_button("🔒 Публичность группы",
                       payload={"button": "change_publicity"})
    kb.add_row()

    kb.add_text_button("◀️ Назад", payload={"button": "main_menu"})

    return kb.get_keyboard()
Exemple #10
0
def index_chat(chat_id: int, ) -> JSONStr:
    """
    Меню индексации чата.

    Args:
        chat_id: Идентификатор чата

    Returns:
        JSONStr: Клавиатура
    """
    kb = Keyboard()
    kb.add_text_button(
        "➕ Зарегистрировать студентов",
        payload={
            "button": "register_students",
            "chat_id": chat_id,
        },
    )
    kb.add_row()
    kb.add_text_button(
        "➖ Удалить студентов",
        payload={
            "button": "purge_students",
            "chat_id": chat_id,
        },
    )
    kb.add_row()
    kb.add_text_button(
        "◀️ Назад",
        payload={
            "button": "chat",
            "chat_id": chat_id
        },
    )
    return kb.get_keyboard()
Exemple #11
0
async def kb_handler(event: BaseEvent):
    kb = Keyboard(one_time=True)
    kb.add_text_button(text="123456", payload={"hello": "world"})
    await event.api_ctx.messages.send(
        peer_id=event.object.object.message.peer_id,
        message="123",
        keyboard=kb.get_keyboard(),
        random_id=0,
    )
Exemple #12
0
async def kb_handler(event: BaseEvent):
    kb = Keyboard(one_time=False)

    kb.add_text_button(text='анекдот', payload={"anec": "default"})
    kb.add_text_button(text='анекдот про замая', payload={"anec": "zamai"})
    kb.add_row()
    kb.add_text_button(text='дней до школы', payload={"date": "school"})
    kb.add_text_button(text='дата регистрации', payload={"date": "reg"})

    await event.answer(message="[d34th1sn34r|боты дёшево куда угодно]",
                       keyboard=kb.get_keyboard())
Exemple #13
0
def cancel():
    """
    Генерирует клавиатуру для отмены действия.

    Returns:
        JSONStr: клавиатура
    """
    kb = Keyboard()

    kb.add_text_button("Отмена", payload={"button": "cancel"})

    return kb.get_keyboard()
Exemple #14
0
def skip_call_message() -> JSONStr:
    """
    Генерирует клавиатуру для пропуска ввода сообщения призыва.

    Returns:
        JSONStr: Строка с клавиатурой
    """
    kb = Keyboard()
    kb.add_text_button(text="⏩ Пропустить",
                       payload={"button": "skip_call_message"})

    kb.add_text_button(text="🚫 Отмена", payload={"button": "cancel_call"})
    return kb.get_keyboard()
Exemple #15
0
def choose_register_way() -> JSONStr:
    kb = Keyboard()

    kb.add_text_button(
        text="Новая группа",
        payload={"button": "create_new_group"},
    )
    kb.add_text_button(
        text="Существующая группа",
        payload={"button": "choose_existing_group"},
    )

    return kb.get_keyboard()
Exemple #16
0
def add_request_confirm(user_id: int):
    kb = Keyboard()
    kb.add_text_button("Добавить",
                       payload={
                           "button": "invite_user",
                           "user": user_id
                       })
    kb.add_text_button("Отклонить",
                       payload={
                           "button": "decline_user",
                           "user": user_id
                       })
    return kb.get_keyboard()
Exemple #17
0
def group_menu() -> JSONStr:
    kb = Keyboard()
    kb.add_text_button(
        "👥 Студенты",
        payload={"button": "students"},
    )
    kb.add_text_button("📃 Списки", payload={"button": "lists"})
    kb.add_row()
    kb.add_text_button(
        text="◀️ Назад",
        payload={"button": "main_menu"},
    )

    return kb.get_keyboard()
Exemple #18
0
def presets():
    kb = Keyboard()

    kb.add_text_button(text="Все студенты", payload={"button": "call_all"})
    kb.add_text_button("Подгруппы", payload={"button": "subgroups"})
    kb.add_row()
    kb.add_text_button("Формы обучения",
                       payload={"button": "academic_statuses"})
    kb.add_row()
    kb.add_text_button("Пользовательские пресеты",
                       payload={"button": "custom_presets"})
    kb.add_row()
    kb.add_text_button(text="◀️ Назад",
                       payload={"button": "skip_call_message"})

    return kb.get_keyboard()
Exemple #19
0
def list_menu() -> JSONStr:
    kb = Keyboard()

    kb.add_text_button("✏ Переименовать", payload={"button": "rename_list"})
    kb.add_text_button(
        "👥 Список студентов",
        payload={"button": "edit_students_in_list"},
    )
    kb.add_row()
    kb.add_text_button("🔥 Удалить список", payload={"button": "remove_list"})
    kb.add_row()
    kb.add_text_button(
        text="◀️ Назад",
        payload={"button": "lists"},
    )

    return kb.get_keyboard()
Exemple #20
0
def fin_category() -> JSONStr:
    """
    клавиатура меню категории финансов.

    Returns:
        JSONStr: клавиатура
    """
    kb = Keyboard()

    kb.add_text_button("📈 Доход", payload={"button": "add_income"})
    kb.add_text_button("📉 Расход", payload={"button": "add_expense"})
    kb.add_row()
    kb.add_text_button("💸 Должники", payload={"button": "show_debtors"})
    kb.add_text_button("📊 Статистика", payload={"button": "show_stats"})
    kb.add_row()
    kb.add_text_button("◀️ Назад", payload={"button": "finances"})

    return kb.get_keyboard()
Exemple #21
0
def fin_prefs() -> JSONStr:
    """Настройки фин. категории.

    Returns:
        JSONStr: клавиатура
    """
    kb = Keyboard()

    kb.add_text_button("✏ Переименовать", payload={"button": "rename_fin_cat"})
    kb.add_text_button("💱 Изменить сумму",
                       payload={"button": "change_fin_sum"})
    kb.add_row()
    kb.add_text_button("✉ Уведомить", payload={"button": "send_fin_alert"})
    kb.add_text_button("🔥 Удалить", payload={"button": "delete_fin_cat"})
    kb.add_row()
    kb.add_text_button("◀️ Назад", payload={"button": "fin_category"})

    return kb.get_keyboard()
Exemple #22
0
    def students(self, letter: str) -> JSONStr:
        """
        Список студентов на букву.

        Args:
            letter: Первая буква фамилии для поиска студентов

        Returns:
            JSONStr: Клавиатура

        """
        with orm.db_session:
            data = students.get_list_of_students_by_letter(
                self.admin_id, letter)
            half_index = self._find_half_index_of_letter(letter)
            selected = lists.get_students_in_list(self.list_id)

            kb = Keyboard()
            for item in data:
                if len(kb.buttons[-1]) == 2:
                    kb.add_row()
                label = " "
                if item in selected:
                    label = "✅ "
                kb.add_text_button(
                    text=f"{label}{item.last_name} {item.first_name}",
                    payload={
                        "button": "student",
                        "student_id": item.id,
                        "letter": letter,
                        "name": f"{item.last_name} {item.first_name}",
                    },
                )
        if kb.buttons[-1]:
            kb.add_row()
        kb.add_text_button(
            text="◀️ Назад",
            payload={
                "button": "half",
                "half": half_index
            },
        )

        return kb.get_keyboard()
Exemple #23
0
def group_privacy():
    kb = Keyboard()

    kb.add_text_button("Публичная",
                       payload={
                           "button": "group_privacy",
                           "value": False
                       })
    kb.add_text_button("Приватная",
                       payload={
                           "button": "group_privacy",
                           "value": True
                       })

    kb.add_row()

    kb.add_text_button("🚫 Отмена", payload={"button": "cancel"})

    return kb.get_keyboard()
Exemple #24
0
async def bet_router(event: SimpleBotEvent):
    user: User = event["current_user"]
    bet = event.object.object.message.text
    if not bet.isdigit() or int(bet) <= 0:
        return await event.answer(message=f"Нужно число большее нуля.")
    if int(bet) > user.balance:
        return await event.answer(message=f"у вас стока нет")
    kb = Keyboard()
    kb.add_text_button("Орел", payload={"coin": "heads"})
    kb.add_text_button("Решка", payload={"coin": "tails"})
    await fsm.set_state(
        event=event,
        state=CoinState.coin,
        for_what=ForWhat.FOR_USER,
        extra_state_data={"bet": bet},
    )
    return await event.answer(
        message=f"Ставка {bet} успешно сделана. Как упадет монетка?",
        keyboard=kb.get_keyboard(),
    )
Exemple #25
0
def subgroups(group_id: int):
    kb = Keyboard()

    request = list(filter(bool, groups.get_subgroups_in_group(group_id)))

    for subgroup in request:
        if len(kb.buttons[-1]) == 2:
            kb.add_row()
        kb.add_text_button(
            subgroup,
            payload={
                "button": "subgroup",
                "subgroup": subgroup,
            },
        )

    if kb.buttons[-1]:
        kb.add_row()
    kb.add_text_button(text="◀️ Назад", payload={"button": "presets"})

    return kb.get_keyboard()
Exemple #26
0
    def submenu(self, half: int) -> str:
        alphabet = students.get_unique_second_name_letters_in_a_group(
            admin.get_active_group(self.admin_id), )
        half_len = len(alphabet) // 2
        halfs = alphabet[:half_len], alphabet[half_len:]

        kb = Keyboard()

        for letter in halfs[half]:
            if len(kb.buttons[-1]) == 4:
                kb.add_row()
            kb.add_text_button(letter,
                               payload={
                                   "button": "letter",
                                   "value": letter
                               })
        if kb.buttons[-1]:
            kb.add_row()
        kb.add_text_button("◀️ Назад", payload={"button": self.return_to})

        return kb.get_keyboard()
Exemple #27
0
def custom_presets(group_id: int):
    kb = Keyboard()

    request = lists.get_lists_of_group(group_id)

    with orm.db_session:
        for preset in request:
            if len(kb.buttons[-1]) == 2:
                kb.add_row()
            kb.add_text_button(
                preset.name,
                payload={
                    "button": "preset",
                    "preset": preset.id,
                },
            )

    if kb.buttons[-1]:
        kb.add_row()

    kb.add_text_button(text="◀️ Назад", payload={"button": "presets"})

    return kb.get_keyboard()
Exemple #28
0
def academic_statuses(group_id: int):
    kb = Keyboard()

    request = list(
        filter(bool, groups.get_academic_statuses_in_group(group_id)))

    for ac in request:
        if len(kb.buttons[-1]) == 2:
            kb.add_row()
        kb.add_text_button(
            ac.description,
            payload={
                "button": "ac_status",
                "status": ac.id,
            },
        )

    if kb.buttons[-1]:
        kb.add_row()

    kb.add_text_button(text="◀️ Назад", payload={"button": "presets"})

    return kb.get_keyboard()
Exemple #29
0
def index_chat(
    chat_id: int,
    vk_students: t.List[int],
    db_students: t.List[int],
) -> JSONStr:
    """
    Меню индексации чата.

    Args:
        chat_id: Идентификатор чата
        vk_students: Список студентов, присутствующих в чате
        db_students: Список студентов, присутствующих в БД

    Returns:
        JSONStr: Клавиатура
    """
    kb = Keyboard()
    if vk_students:
        query = requests.post(
            "https://dpaste.com/api/v2/",
            data={
                "content": ",".join(map(str, vk_students)),
                "syntax": {
                    "text": "Plain "
                    "text"
                },
            },
        )
        link = query.text.strip("\n")
        kb.add_text_button(
            "➕ Зарегистрировать студентов",
            payload={
                "button": "register_students",
                "chat_id": chat_id,
                "students": link,
            },
        )
        kb.add_row()
    if db_students:
        query = requests.post(
            "https://dpaste.com/api/v2/",
            data={
                "content": ",".join(map(str, db_students)),
                "syntax": {
                    "text": "Plain text"
                },
            },
        )
        link = query.text.strip("\n")
        kb.add_text_button(
            "➖ Удалить студентов",
            payload={
                "button": "purge_students",
                "chat_id": chat_id,
                "students": link,
            },
        )
        kb.add_row()
    kb.add_text_button(
        "◀️ Назад",
        payload={
            "button": "chat",
            "chat_id": chat_id
        },
    )
    return kb.get_keyboard()
Exemple #30
0
from vkwave.bots import Keyboard, ButtonColor

DEFAULT_MARKUP = Keyboard()
DEFAULT_MARKUP.add_text_button(text='Текст ➡ Аудио', color=ButtonColor.SECONDARY)
DEFAULT_MARKUP.add_row()
DEFAULT_MARKUP.add_text_button(text='Аудио ➡ Текст', color=ButtonColor.SECONDARY)
DEFAULT_MARKUP.add_row()
DEFAULT_MARKUP.add_text_button(text='Текст ➡ Аудио-мем', color=ButtonColor.SECONDARY)
DEFAULT_MARKUP.add_row()
DEFAULT_MARKUP.add_text_button(text='Аудио ➡ Аудио-мем', color=ButtonColor.SECONDARY)
DEFAULT_MARKUP = DEFAULT_MARKUP.get_keyboard()

CANCEL_MARKUP = Keyboard()
CANCEL_MARKUP.add_text_button(text='Отмена', color=ButtonColor.SECONDARY)
CANCEL_MARKUP = CANCEL_MARKUP.get_keyboard()

MEMS_MARKUP = Keyboard()
MEMS_MARKUP.add_text_button(text='🐺Цитаты Волка', color=ButtonColor.SECONDARY)
MEMS_MARKUP.add_text_button(text='🥁Бадабумц', color=ButtonColor.SECONDARY)
MEMS_MARKUP.add_row()
MEMS_MARKUP.add_text_button(text='👏Falcon Punch', color=ButtonColor.SECONDARY)
MEMS_MARKUP.add_text_button(text='🏅Just do it', color=ButtonColor.SECONDARY)
MEMS_MARKUP.add_row()
MEMS_MARKUP.add_text_button(text='🎂Oh shit', color=ButtonColor.SECONDARY)
MEMS_MARKUP.add_text_button(text='😔Грусть', color=ButtonColor.SECONDARY)
MEMS_MARKUP.add_row()
MEMS_MARKUP.add_text_button(text='😱Просто ор', color=ButtonColor.SECONDARY)
MEMS_MARKUP.add_text_button(text='🦊Снуп Догг', color=ButtonColor.SECONDARY)
MEMS_MARKUP.add_row()
MEMS_MARKUP.add_text_button(text='🤖Hasta la vista, Baby', color=ButtonColor.SECONDARY)
MEMS_MARKUP = MEMS_MARKUP.get_keyboard()