def request_confirmed(vk, event, type): keyboard = vk_api.keyboard.VkKeyboard(one_time=True) keyboard.add_button("Ок", vk_api.keyboard.VkKeyboardColor.DEFAULT, { "section": "services", "command": "del cache", "cache": "extend" }) type_text = '' if type == "extend": type_text = "на продление книги" if type == "delivery": type_text = "на доставку книги" if type == "availability": type_text = "о наличии книги" vk.messages.send( user_id=event.object.message['from_id'], random_id=get_random_id(), message=f"Ваш запрос {type_text} принят. Ожидайте уведомления.\n" f"Обратите внимание! Если Вы отправите новый запрос, то этот будет удалён", keyboard=keyboard.get_keyboard())
def mailing(user, conn, c, user_from_db, vk_session): keyboard = vk_api.keyboard.VkKeyboard(inline=True) c.execute('''SELECT * FROM mailing WHERE id=:id''', {'id': user['id']}) user_mailing = c.fetchone() if user_mailing[1]: keyboard.add_button('first', vk_api.keyboard.VkKeyboardColor.POSITIVE) else: keyboard.add_button('first', vk_api.keyboard.VkKeyboardColor.NEGATIVE) if user_mailing[2]: keyboard.add_button('second', vk_api.keyboard.VkKeyboardColor.POSITIVE) else: keyboard.add_button('second', vk_api.keyboard.VkKeyboardColor.NEGATIVE) if user_mailing[3]: keyboard.add_button('third', vk_api.keyboard.VkKeyboardColor.POSITIVE) else: keyboard.add_button('third', vk_api.keyboard.VkKeyboardColor.NEGATIVE) message_id = vk_session.method( 'messages.send', { 'user_id': user['id'], 'random_id': random.getrandbits(64), 'message': 'Выберите на какую рассылку вы хотите подписаться.\n(Зелёный цвет означает что вы подписаны на эту рассылку)', 'keyboard': keyboard.get_keyboard() }) with conn: c.execute('''UPDATE people SET message_id=:message_id WHERE id=:id''', { 'id': user_from_db[0], 'message_id': message_id })
def confirmation(): keyboard = VkKeyboard(one_time=True) keyboard.add_button('Ok', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Отмена', color=VkKeyboardColor.NEGATIVE) keyboard = keyboard.get_keyboard() return keyboard
def business_selling_keyboard(): keyboard = vk_api.keyboard.VkKeyboard(one_time=True) keyboard.add_button("продать 1", color=vk_api.keyboard.VkKeyboardColor.SECONDARY) keyboard.add_button("продать 2", color=vk_api.keyboard.VkKeyboardColor.SECONDARY) keyboard.add_button("продать 3", color=vk_api.keyboard.VkKeyboardColor.SECONDARY) keyboard.add_line() keyboard.add_button("продать 4", color=vk_api.keyboard.VkKeyboardColor.SECONDARY) keyboard.add_button("продать 5", color=vk_api.keyboard.VkKeyboardColor.SECONDARY) keyboard.add_button("продать 6", color=vk_api.keyboard.VkKeyboardColor.SECONDARY) keyboard.add_line() keyboard.add_button("продать 7", color=vk_api.keyboard.VkKeyboardColor.SECONDARY) keyboard.add_button("продать 8", color=vk_api.keyboard.VkKeyboardColor.SECONDARY) keyboard.add_button("продать 9", color=vk_api.keyboard.VkKeyboardColor.SECONDARY) return keyboard.get_keyboard()
def invalid_value(user, vk_session, end=False): if not end: vk_session.method( 'messages.send', { 'user_id': user['id'], 'message': 'Проверьте корректность введённых Вами данных🙅🙇.', 'random_id': random.getrandbits(64) }) else: keyboard = vk_api.keyboard.VkKeyboard() keyboard.add_button('Подать ещё одну заявку🆕', vk_api.keyboard.VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('К предыдущему вопросу🔙', vk_api.keyboard.VkKeyboardColor.NEGATIVE) keyboard.add_line() keyboard.add_button('Рассылка📫', vk_api.keyboard.VkKeyboardColor.PRIMARY) vk_session.method( 'messages.send', { 'user_id': user['id'], 'message': 'Проверьте корректность введённых Вами данных🙅🙇.', 'random_id': random.getrandbits(64), 'keyboard': keyboard.get_keyboard() })
def services(vk, event): keyboard = vk_api.keyboard.VkKeyboard(one_time=True) keyboard.add_button("Узнать о наличии книги", vk_api.keyboard.VkKeyboardColor.PRIMARY, {"section": "availability"}) keyboard.add_line() keyboard.add_button("Продлить срок", vk_api.keyboard.VkKeyboardColor.PRIMARY, {"section": "extend"}) # keyboard.add_line() keyboard.add_button("Доставить книгу", vk_api.keyboard.VkKeyboardColor.PRIMARY, {"section": "delivery"}) keyboard.add_line() keyboard.add_button("Назад", vk_api.keyboard.VkKeyboardColor.DEFAULT, {"command": "start"}) vk.messages.send( user_id=event.object.message['from_id'], random_id=get_random_id(), message=f"Через бота Вы можете воспользоваться следущими услугами:\n" f"• Узнать о наличии книги в наших библиотеках\n" f"• Продлить книгу в нашей библиотеке\n" f"• Доставить нужную книгу в удобную библиотеку\n\n" f"С остальными услугами можно ознакомиться на нашем сайте: " f"https://моб.екатеринбург.рф/about/services/", keyboard=keyboard.get_keyboard(), dont_parse_links=1)
def create_keyboard(buttons: list, one_time=False, inline=False): # Buttons = [[text, color, new_line], [...], ] keyboard = vk_api.keyboard.VkKeyboard(one_time=one_time, inline=inline) for i, button in enumerate(buttons): if button[2]: keyboard.add_line() keyboard.add_button(button[0], color=B_COLORS[button[1]]) return keyboard.get_keyboard()
def mailout(): keyboard = VkKeyboard(one_time=False) keyboard.add_button('Откликнуться', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Меню', color=VkKeyboardColor.PRIMARY) keyboard = keyboard.get_keyboard() return keyboard
def accept(): keyboard = VkKeyboard(one_time=False) keyboard.add_button('Принять', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Назад', color=VkKeyboardColor.PRIMARY) keyboard.add_button('Меню', color=VkKeyboardColor.PRIMARY) keyboard = keyboard.get_keyboard() return keyboard
def start(vk, adminID, requests, **data): greeting = '' greetings = { "morning": "Доброе утро", "day": "Добрый день", "afternoon": "Добрый вечер", "night": "Доброй ночи" } if 4 <= int(strftime("%H")) <= 12: greeting = greetings['morning'] if 13 <= int(strftime("%H")) <= 16: greeting = greetings['day'] if 17 <= int(strftime("%H")) <= 23: greeting = greetings['afternoon'] if 0 <= int(strftime("%H")) <= 3: greeting = greetings['night'] keyboard = vk_api.keyboard.VkKeyboard(one_time=True) DNDstatus = "" DNDbutton = "" color = vk_api.keyboard.VkKeyboardColor.DEFAULT if data: if data['DND']: DNDstatus = "Уведомления выключены" DNDbutton = "Включить уведомления" color = vk_api.keyboard.VkKeyboardColor.PRIMARY else: DNDstatus = "Уведомления о новых запросах включены" DNDbutton = "Выключить уведомления" if requests['count'] > 0: req_txt = f"Количество запросов для библиотеки: {requests['count']}" keyboard.add_button("Рассмотреть запросы", vk_api.keyboard.VkKeyboardColor.PRIMARY, {"command": "send requests", "requestID": requests['requests'][-1]} ) else: keyboard.add_button("Расмотреть запросы", vk_api.keyboard.VkKeyboardColor.DEFAULT, {"command": "send requests", "requestID": "None"}) req_txt = "На данный момент запросов нет. Вам придет уведомление, если что-то появится" keyboard.add_line() keyboard.add_button(f"{DNDbutton}", color, {"command": "switch DND"}) vk.messages.send( user_id=adminID, random_id=get_random_id(), message=f"{greeting}, " f"{vk.users.get(user_ids=adminID, name_case='Nom')[0]['first_name']}\n\n" + f"{req_txt}\n\n{DNDstatus}", keyboard=keyboard.get_keyboard() )
def which_offers(): keyboard = VkKeyboard(one_time=False) keyboard.add_button('Уроки', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Коллеги', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Меню', color=VkKeyboardColor.PRIMARY) keyboard = keyboard.get_keyboard() return keyboard
def get_big_keyboard(buttonlist): keyboard = vk_api.keyboard.VkKeyboard(one_time=True) len_buttons_list = len(buttonlist) if len_buttons_list % 3 == 0: flag = 0 for buttongroupind in range(len_buttons_list): if flag != 0 and flag % 3 == 0: keyboard.add_line() keyboard.add_button(buttonlist[buttongroupind]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) flag += 1 if len_buttons_list == 4: keyboard.add_button(buttonlist[0]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) keyboard.add_button(buttonlist[1]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) keyboard.add_line() keyboard.add_button(buttonlist[2]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) keyboard.add_button(buttonlist[3]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) if len_buttons_list == 5: keyboard.add_button(buttonlist[0]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) keyboard.add_button(buttonlist[1]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) keyboard.add_line() keyboard.add_button(buttonlist[2]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) keyboard.add_button(buttonlist[3]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) keyboard.add_line() keyboard.add_button(buttonlist[4]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) if len_buttons_list == 7: keyboard.add_button(buttonlist[0]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) keyboard.add_button(buttonlist[1]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) keyboard.add_line() keyboard.add_button(buttonlist[2]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) keyboard.add_button(buttonlist[3]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) keyboard.add_line() keyboard.add_button(buttonlist[4]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) keyboard.add_button(buttonlist[5]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) keyboard.add_line() keyboard.add_button(buttonlist[6]['action']['label'], color=vk_api.keyboard.VkKeyboardColor.PRIMARY) return keyboard.get_keyboard()
def keyboardCreater(*args, count: int): keyboard = VkKeyboard(one_time=False) keyboard.add_button(args[0]) args[1:] for label in args[1:]: keyboard.add_line() keyboard.add_button(label) keyboard = keyboard.get_keyboard() return keyboard
def find_author(vk, event): keyboard = vk_api.keyboard.VkKeyboard(one_time=True) keyboard.add_button("Отмена", vk_api.keyboard.VkKeyboardColor.DEFAULT, {"section": "services", "command": "del cache", "cache": "find author"}) vk.messages.send( user_id=event.object.message['from_id'], random_id=get_random_id(), message=f"Книги какого автора Вы хотите найти?", keyboard=keyboard.get_keyboard() )
def help(vk, event): keyboard = vk_api.keyboard.VkKeyboard(one_time=False) keyboard.add_button("Вернуться к боту", vk_api.keyboard.VkKeyboardColor.DEFAULT, {"command": "start"}) vk.messages.send( user_id=event.message.from_id, random_id=get_random_id(), message= "Сейчас вы общаетесь с библиотекарем, если захотите вернуться в режим бота, просто нажмите " "кнопку ниже. Напишите свое первое сообщение", keyboard=keyboard.get_keyboard())
def availability(vk, event): keyboard = vk_api.keyboard.VkKeyboard(one_time=True) keyboard.add_button("Отмена", vk_api.keyboard.VkKeyboardColor.DEFAULT, {"section": "services", "command": "del cache", "cache": "availability"}) vk.messages.send( user_id=event.object.message['from_id'], random_id=get_random_id(), message=f"Пожалуйста, пришлите название книги, которая Вам нужна\nЗапрос будет отправлен библиотекарю, и Вы получите уведомление о его " f"результате", keyboard=keyboard.get_keyboard() )
def events(vk, event, post, groupID, site): keyboard = vk_api.keyboard.VkKeyboard(one_time=True) keyboard.add_button("Назад", vk_api.keyboard.VkKeyboardColor.DEFAULT, {"command": "start"}) vk.messages.send(user_id=event.message.from_id, random_id=get_random_id(), message=f"Последнее новое мероприятие:\n" f"{site}?w=wall-{groupID}_{post}\n\n" f"Все мероприятия МОБ:\n" f"https://моб.екатеринбург.рф/663/", keyboard=keyboard.get_keyboard(), attachments=[f"wall{groupID}_{post}"], dont_parse_links=1)
def main_menu(): keyboard = VkKeyboard(one_time=False) keyboard.add_button('Запросить урок', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Найти коллег', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Посмотреть актуальные предложения', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('На сайт', color=VkKeyboardColor.PRIMARY) keyboard = keyboard.get_keyboard() return keyboard
def main_menu_keyboard(): keyboard = vk_api.keyboard.VkKeyboard(one_time=True) keyboard.add_button("деньги", color=vk_api.keyboard.VkKeyboardColor.SECONDARY) keyboard.add_button("бизнесы", color=vk_api.keyboard.VkKeyboardColor.SECONDARY) keyboard.add_line() keyboard.add_button("купить", color=vk_api.keyboard.VkKeyboardColor.POSITIVE) keyboard.add_button("продать", color=vk_api.keyboard.VkKeyboardColor.NEGATIVE) return keyboard.get_keyboard()
def delivery(vk, event): keyboard = vk_api.keyboard.VkKeyboard(one_time=True) keyboard.add_button("Отмена", vk_api.keyboard.VkKeyboardColor.DEFAULT, {"section": "services", "command": "del cache", "cache": "delivery"}) vk.messages.send( user_id=event.object.message['from_id'], random_id=get_random_id(), message="Пожалуйста, пришлите название книги, которая Вам нужна\n" "Узнать о наличии книги в МОБ можно в соответствующем пункте\n" "Запрос будет отправлен библиотекарю, и Вы получите уведомление о его результате", keyboard=keyboard.get_keyboard() )
def mob(vk, event, list): keyboard = vk_api.keyboard.VkKeyboard(one_time=True) keyboard.add_button("назад", vk_api.keyboard.VkKeyboardColor.DEFAULT, {"section": "about us"}) vk.messages.send(user_id=event.object.message['from_id'], random_id=get_random_id(), message=f"Наши библиотеки:\n" f"{list}\n\n" f"Условные обозначения:\n" f"ПБ - президентская библиотека\n" f"НБ - национальная библиотека\n" f"НДБ - национальная детская библиотека", keyboard=keyboard.get_keyboard(), dont_parse_links=1)
def done(user, vk_session): keyboard = vk_api.keyboard.VkKeyboard() keyboard.add_button('Подать ещё одну заявку🆕', vk_api.keyboard.VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('К предыдущему вопросу🔙', vk_api.keyboard.VkKeyboardColor.NEGATIVE) keyboard.add_line() keyboard.add_button('Рассылка📫', vk_api.keyboard.VkKeyboardColor.PRIMARY) vk_session.method( 'messages.send', { 'user_id': user['id'], 'random_id': random.getrandbits(64), 'message': 'Успех!', 'keyboard': keyboard.get_keyboard() })
def thanq(user, vk_session): keyboard = vk_api.keyboard.VkKeyboard() keyboard.add_button('Подать ещё одну заявку🆕', vk_api.keyboard.VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('К предыдущему вопросу🔙', vk_api.keyboard.VkKeyboardColor.NEGATIVE) keyboard.add_line() keyboard.add_button('Рассылка📫', vk_api.keyboard.VkKeyboardColor.PRIMARY) vk_session.method( 'messages.send', { 'user_id': user['id'], 'random_id': random.getrandbits(64), 'message': 'Спасибо за обращение, наш преподаватель свяжется с Вами в ближайшее время😊.', 'keyboard': keyboard.get_keyboard() })
def send_request(vk, event, msg, requestID): keyboard = vk_api.keyboard.VkKeyboard(one_time=True) keyboard.add_button("Да", vk_api.keyboard.VkKeyboardColor.POSITIVE, {"command": "request accepted", "requestID": requestID}) keyboard.add_button("Нет", vk_api.keyboard.VkKeyboardColor.NEGATIVE, {"command": "request denied", "requestID": requestID}) keyboard.add_line() keyboard.add_button("Назад", vk_api.keyboard.VkKeyboardColor.DEFAULT, {"command": "del cache", "cache": "admin DND"}) vk.messages.send( user_id=event.object.message['from_id'], random_id=get_random_id(), message=f"{msg}", keyboard=keyboard.get_keyboard() )
def del_keyboard(message_id, vk_session): message = vk_session.method('messages.getById', {'message_ids': message_id})['items'][0] keyboard = vk_api.keyboard.VkKeyboard() keyboard.add_button('Подать ещё одну заявку🆕', vk_api.keyboard.VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('К предыдущему вопросу🔙', vk_api.keyboard.VkKeyboardColor.NEGATIVE) keyboard.add_line() keyboard.add_button('Рассылка📫', vk_api.keyboard.VkKeyboardColor.PRIMARY) vk_session.method( 'messages.edit', { 'message': message['text'], 'message_id': message_id, 'keyboard': keyboard.get_keyboard(), 'peer_id': message['peer_id'] })
def about_us(vk, event, data): keyboard = vk_api.keyboard.VkKeyboard(one_time=True) keyboard.add_button("Муниципальное Объединение Библиотек", vk_api.keyboard.VkKeyboardColor.PRIMARY, {"section": "mob"}) keyboard.add_line() keyboard.add_button("Назад", vk_api.keyboard.VkKeyboardColor.DEFAULT, {"command": "start"}) president = "" national = "" national_kids = "" if data['president']: president = "• Президентская библиотека\n" if data['national']: national = "• Национальная электронная библиотека\n" if data['national_kids']: national_kids = "• Национальная электронная детская библиотека\n" vk.messages.send( user_id=event.object.message['from_id'], random_id=get_random_id(), message=f"{data['title']}\n\n" f"Адрес: {data['location']}\n" f"Телефон: {data['phone']}\n" f"e-mail: {data['email']}\n" f"Сайт: {data['site']}\n\n" f"Часы работы:\n{data['time']}\n\n" f"Услуги:\n" f"{president}{national}{national_kids}\n" f"{data['services']}\n\n" f"Транспорт:\n{data['transport']}", keyboard=keyboard.get_keyboard(), lat=data['lat'], long=data['long'], dont_parse_links=1 )
def catalogue(item_list, per_line=1, more=False): keyboard = VkKeyboard(one_time=True) i = 0 for item in item_list: keyboard.add_button(item, color=VkKeyboardColor.POSITIVE) i += 1 if i % per_line == 0: keyboard.add_line() if i % per_line != 0: keyboard.add_line() if more: keyboard.add_button('Далее', color=VkKeyboardColor.PRIMARY) keyboard.add_button('Меню', color=VkKeyboardColor.PRIMARY) keyboard = keyboard.get_keyboard() return keyboard
def ask_for_exam(user, conn, c, user_from_db, vk_session): keyboard = vk_api.keyboard.VkKeyboard(inline=True) keyboard.add_button("Базу", color=vk_api.keyboard.VkKeyboardColor.POSITIVE) keyboard.add_button("Профиль", color=vk_api.keyboard.VkKeyboardColor.POSITIVE) message_id = vk_session.method( 'messages.send', { 'user_id': user['id'], 'random_id': random.getrandbits(64), 'message': 'Какой вид экзамена по математике Вы планируете сдавать?', 'keyboard': keyboard.get_keyboard() }) with conn: c.execute('''UPDATE people SET message_id=:message_id WHERE id=:id''', { 'id': user_from_db[0], 'message_id': message_id })
def start(vk, event): greeting = '' greetings = { "morning": "Доброе утро", "day": "Добрый день", "afternoon": "Добрый вечер", "night": "Доброй ночи" } if 4 <= int(strftime("%H")) <= 12: greeting = greetings['morning'] if 13 <= int(strftime("%H")) <= 16: greeting = greetings['day'] if 17 <= int(strftime("%H")) <= 23: greeting = greetings['afternoon'] if 0 <= int(strftime("%H")) <= 3: greeting = greetings['night'] keyboard = vk_api.keyboard.VkKeyboard(one_time=True) keyboard.add_button("Наша библиотека", vk_api.keyboard.VkKeyboardColor.PRIMARY, {"section": "about us"}) keyboard.add_line() keyboard.add_button("Мероприятия", vk_api.keyboard.VkKeyboardColor.PRIMARY, {"section": "events"}) keyboard.add_button("Услуги", vk_api.keyboard.VkKeyboardColor.PRIMARY, {"section": "services"}) keyboard.add_line() keyboard.add_button("Мне нужна помощь человека", vk_api.keyboard.VkKeyboardColor.DEFAULT, {"command": "help"}) vk.messages.send( user_id=event.object.message['from_id'], random_id=get_random_id(), message=f"{greeting}, " f"{vk.users.get(user_ids=event.object.message['from_id'],name_case='Nom')[0]['first_name']}\n" + f"Для получения необходимой информации выберите кнопку с интересующим разделом", keyboard=keyboard.get_keyboard())
def ask_for_kind(user, conn, c, user_from_db, vk_session): keyboard = vk_api.keyboard.VkKeyboard(inline=True) keyboard.add_button("Индивидуальные", color=vk_api.keyboard.VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button("Групповые", color=vk_api.keyboard.VkKeyboardColor.POSITIVE) message_id = vk_session.method( 'messages.send', { 'user_id': user['id'], 'random_id': random.getrandbits(64), 'message': 'Какой тип занятий Вы предпочитаете?', 'keyboard': keyboard.get_keyboard() }) with conn: c.execute('''UPDATE people SET message_id=:message_id WHERE id=:id''', { 'id': user_from_db[0], 'message_id': message_id })