Example #1
0
async def list_of_chats(api_context, admin_id: int):
    """
    Генерирует фрагмент клавиатуры со списком подключенных чатов.

    Args:
        api_context: Объект API ВК.
        admin_id: идентификатор пользователя

    Returns:
        Keyboard: Фрагмент клавиатуры
    """
    kb = Keyboard()
    with orm.db_session:
        chat_objects = chats.get_list_of_chats_by_group(
            admin.get_active_group(admin_id), )
        for chat in chat_objects:
            chat_title = await chat_utils.get_chat_name(
                api_context,
                chat.vk_id,
            )
            kb.add_text_button(
                chat_title,
                payload={
                    "button": "chat",
                    "chat_id": chat.id,
                },
            )
    return kb
Example #2
0
 def students(self, letter: str) -> str:
     data = students.get_list_of_students_by_letter(self.admin_id, letter)
     selected = managers.MentionStorageManager(
         self.admin_id, ).get_mentioned_students()
     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.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
         },
     )
Example #3
0
async def list_of_chats(admin_id: int):
    """
    Генерирует фрагмент клавиатуры со списком подключенных чатов.

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

    Returns:
        Keyboard: Фрагмент клавиатуры
    """
    kb = Keyboard()

    chats = db.chats.get_list_of_chats_by_group(
        db.admin.get_active_group(admin_id), )
    for chat in chats:
        chat_object = await api.messages.get_conversations_by_id(
            peer_ids=chat.chat_id,
            group_id=os.getenv("GROUP_ID"),
        )
        try:
            chat_title = chat_object.response.items[0].chat_settings.title
        except (AttributeError, IndexError):
            chat_title = "???"
        kb.add_text_button(
            chat_title,
            payload={
                "button": "chat",
                "chat_id": chat.id,
            },
        )
    return kb
Example #4
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,
    )
Example #5
0
def cancel() -> Keyboard:
    """
    Генерирует клавиатуру для отмены действия.

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

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

    return kb
Example #6
0
def cancel():
    """
    Генерирует клавиатуру для отмены действия.

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

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

    return kb.get_keyboard()
Example #7
0
async def start_coin_flip(event: SimpleBotEvent):
    await fsm.set_state(event=event,
                        state=CoinState.bet,
                        for_what=ForWhat.FOR_USER)
    return await event.answer(
        message=f"Введите ставку, если передумали пишите /exit ",
        keyboard=Keyboard.get_empty_keyboard(),
    )
Example #8
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()
Example #9
0
def alphabet(admin_id: int) -> Keyboard:
    """
    Генерирует фрагмент клавиатуры с половинами алфавита фамилиий студентов.

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

    Returns:
        Keyboard: Фрагмент клавиатуры
    """
    kb = Keyboard()
    alphabet = db.students.get_unique_second_name_letters_in_a_group(
        db.admin.get_active_group(admin_id), )
    half_len = len(alphabet) // 2
    f_alphabet, s_alphabet = alphabet[:half_len], alphabet[half_len:]
    index = 0
    for half in f_alphabet, s_alphabet:
        title = f"{half[0]}..{half[-1]}"
        kb.add_text_button(title, payload={"button": "half", "half": index})
        index += 1

    return kb
Example #10
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()
Example #11
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()
Example #12
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()
Example #13
0
def prompt() -> Keyboard:
    """
    Генерирует клавиатуру с подтверждением действия.

    Returns:
        Keyboard: Объект клавиатуры
    """
    kb = Keyboard()
    kb.add_text_button(text="✅ Подтвердить", payload={"button": "confirm"})
    kb.add_text_button(text="🚫 Отменить", payload={"button": "deny"})
    return kb
Example #14
0
async def create_current_kb(days: DAYS) -> Keyboard:
    kb = Keyboard(inline=True)
    year = datetime.datetime.now().year
    for i, day in enumerate(days, start=1):
        if i % 2 == 0:
            kb.add_row()
        kb.add_text_button(
            text=format_day(day, year),
            color=ButtonColor.SECONDARY,
            payload={"day": day},
        )
    return kb
Example #15
0
def universities() -> Keyboard:
    kb = Keyboard()

    unies = uni.get_all()

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

        kb.add_text_button(
            media.get_university_abbreviation(university.name),
            payload={
                "button": "university",
                "university": university.id,
            },
        )

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

    return kb
Example #16
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(),
    )
Example #17
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_pref"})
    kb.add_row()
    kb.add_text_button("◀️ Назад", payload={"button": "finances"})

    return kb.get_keyboard()
Example #18
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()
Example #19
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()
Example #20
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()
Example #21
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()
Example #22
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()
Example #23
0
def base_keyboard_instance() -> Keyboard:
    return Keyboard(one_time=True)
Example #24
0
        for nam in datear:
            if int(timer) >= int(nam[3]):
                vk.messages.send(random_id=0,
                                 peer_id=int(nam[0]),
                                 message="✏НАПОМИНАНИЕ!\n" + nam[3] + ":00\n" +
                                 nam[1])
                dba.delete(dba, nam[0], 'alarms', nam[1])
                print('-отправлено-напоминание-' + str(nam[0]) + '-' +
                      str(datetime.now().time()))
        time.sleep(2)


job_thread = threading.Thread(target=jobe)
job_thread.start()

kbdate = Keyboard()
kbdate.add_text_button(text="Сегодня", color=ButtonColor.POSITIVE)
kbdate.add_text_button(text="Завтра", color=ButtonColor.POSITIVE)
kbdate.add_text_button(text="Послезавтра", color=ButtonColor.POSITIVE)
kbdate.add_row()
kbdate.add_text_button(text='Назад', color=ButtonColor.PRIMARY)

kbald = Keyboard()
kbald.add_text_button(text="09:00", color=ButtonColor.POSITIVE)
kbald.add_text_button(text="12:00", color=ButtonColor.POSITIVE)
kbald.add_text_button(text="15:00", color=ButtonColor.POSITIVE)
kbald.add_text_button(text="18:00", color=ButtonColor.POSITIVE)
kbald.add_row()
kbald.add_text_button(text="21:00", color=ButtonColor.POSITIVE)
kbald.add_text_button(text="23:00", color=ButtonColor.POSITIVE)
kbald.add_text_button(text="03:00", color=ButtonColor.POSITIVE)
Example #25
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())
Example #26
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()
Example #27
0
async def simple(event: bot.SimpleBotEvent):
    kb = Keyboard()
    kb.add_callback_button(payload={"21321": 123}, text="123")
    await event.answer("HELLO", keyboard=kb.get_keyboard())
Example #28
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()
Example #29
0
from vkwave.bots import Keyboard, ButtonColor

MENU_KB = Keyboard()
MENU_KB.add_text_button(text="Игры",
                        payload={"command": "games"},
                        color=ButtonColor.POSITIVE)
MENU_KB.add_row()
MENU_KB.add_text_button(text="Профиль",
                        payload={"command": "profile"},
                        color=ButtonColor.SECONDARY)
MENU_KB.add_row()
MENU_KB.add_text_button(text="Бонус",
                        payload={"command": "bonus"},
                        color=ButtonColor.POSITIVE)

GAMES_KB = Keyboard()
GAMES_KB.add_text_button(text="Орел или Решка",
                         payload={"command": "coin_flip"},
                         color=ButtonColor.SECONDARY)
GAMES_KB.add_row()
GAMES_KB.add_text_button(text="Меню", color=ButtonColor.NEGATIVE)
Example #30
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()