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
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 }, )
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
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, )
def cancel() -> Keyboard: """ Генерирует клавиатуру для отмены действия. Returns: Keyboard: клавиатура """ kb = Keyboard() kb.add_text_button("🚫 Отмена", payload={"button": "cancel"}) return kb
def cancel(): """ Генерирует клавиатуру для отмены действия. Returns: JSONStr: клавиатура """ kb = Keyboard() kb.add_text_button("Отмена", payload={"button": "cancel"}) return kb.get_keyboard()
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(), )
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()
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
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()
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()
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()
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
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
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
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(), )
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()
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()
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()
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()
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()
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()
def base_keyboard_instance() -> Keyboard: return Keyboard(one_time=True)
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)
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())
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()
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())
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()
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)
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()