def money(user_id, data = None): print(data['payload']) if data['payload'] == '"Стипендия"': settings = dict(one_time=False, inline=True) keyboard = VkKeyboard(**settings) # pop-up кнопка keyboard.add_callback_button(label='Академическая', color=VkKeyboardColor.POSITIVE, payload='\"Академическая\"') keyboard.add_callback_button(label='Социальная', color=VkKeyboardColor.POSITIVE, payload='\"Социальная\"') app.send_message(user_id, message="Виды стипендии", keyboard=keyboard.get_keyboard()) if data['payload'] == 'Академическая': message="""Академическая стипендия зависит от успеваемости обучаегося. При получении образования степендия составляет 2200 рублей. Если по итогам сессии обучающийся имеет оценки «ХОРОШО» и «ОТЛИЧНО» или только «ХОРОШО», стипендия составляет 2200 рублей. Если обучающийся по итогам сессии имеет только оценки «ОТЛИЧНО», он может рассчитывать на повышенную стипендию в размере 3000 рублей.""" app.message_edit(data['peer_id'], message, data['conversation_message_id']) if data['payload'] == 'Социальная': message="""Социальная стипендия назначается студенту с даты предоставления документа, подтверждающего соответствие одной из категорий студентов, указанных в ФЗ № 273 «Об образовании в РФ» статья 36 пункт 5 по месяц прекращения действия основания её назначения. Государственная социальная стипендия назначается студентам: 1.распорядительным актом руководителя организации на основании документа, подтверждающего соответствие одной из категорий граждан, с даты его представления 2.В случае, если документ бессрочный назначается до конца обучения В РГЭУ РИНХ социальную стипендию могут получить: -студенты, из числа детей - сирот и детей, оставшихся без попечения родителей - 3800 руб -студенты - инвалиды 1 и 2 группы, дети - инвалиды и инвалидам с детства -3000 руб -студенты, подвергшиеся радиации вследствие катастрофы на Чернобыльской АЭС и иных радикальных катастроф - 3000 руб -студенты, инвалиды и ветераны боевых действий - 3000 руб -студенты, получающих государственную помощь - 3000 руб""" app.message_edit(data['peer_id'], message, data['conversation_message_id'])
def generate_answers_keyboard(answers: list) -> VkKeyboard: chars = ['a', 'b', 'c', 'd'] keyboard_answers = VkKeyboard(inline=True) for char, answer in zip(chars, answers): keyboard_answers.add_callback_button(label=char, color=VkKeyboardColor.PRIMARY, payload={ "type": "text", "answer": answer }) return keyboard_answers
def mailing_notifications_about_new_homework(db, user_id): '''Функция рассылки оповещения о новом домашнем задании на завтра людям, предварительно сегодня посмотревших ДЗ на завтрашний день.''' users = db.get_users_in_homework_f() # keyboard = VkKeyboard(one_time=False, inline=True) keyboard.add_callback_button( label="Посмотреть", color=VkKeyboardColor.POSITIVE, payload={"type": "show_homework_tomorrow"}, ) # msg = 'Внимание, на завтра было добавлено новое домашнее задание❗' # for user in users: if user_id != user[ 0]: # если пользователь не тот, кто добавил домашнее задание write_msg_withKeyboard(user[0], msg, keyboard)
def generate_bot_commands_keyboard() -> VkKeyboard: keyboard_commands = VkKeyboard() keyboard_commands.add_callback_button(label='Начать игру', color=VkKeyboardColor.PRIMARY, payload={"type": "text"}) keyboard_commands.add_callback_button(label='Завершить игру', color=VkKeyboardColor.PRIMARY, payload={"type": "text"}) keyboard_commands.add_line() keyboard_commands.add_callback_button(label='Об игре', color=VkKeyboardColor.PRIMARY, payload={"type": "text"}) keyboard_commands.add_callback_button(label='О боте', color=VkKeyboardColor.PRIMARY, payload={"type": "text"}) keyboard_commands.add_line() keyboard_commands.add_callback_button(label='Мои очки', color=VkKeyboardColor.PRIMARY, payload={"type": "text"}) return keyboard_commands
def list_delete_2(): """Список учеников группы""" keyboard = VkKeyboard(one_time=False, inline=True) keyboard.add_callback_button("Маматов", VkKeyboardColor.SECONDARY, {"type": "mamatov_del"}) keyboard.add_callback_button("Могучева", VkKeyboardColor.SECONDARY, {"type": "mogucheva_del"}) keyboard.add_line() keyboard.add_callback_button("Плиев", VkKeyboardColor.SECONDARY, {"type": "pliev_del"}) keyboard.add_line() keyboard.add_callback_button("Реута", VkKeyboardColor.SECONDARY, {"type": "reuta_del"}) keyboard.add_callback_button("Семкив", VkKeyboardColor.SECONDARY, {"type": "semkiv_del"}) return keyboard.get_keyboard()
def info(user_id, data=None): print(data['payload']) if data['payload'] == '"вузинфа"': settings = dict(one_time=False, inline=True) settings = dict(one_time=False, inline=True) keyboard = VkKeyboard(**settings) # pop-up кнопка keyboard.add_callback_button(label='Информация о вузе', color=VkKeyboardColor.POSITIVE, payload='\"Информация о вузе\"') keyboard.add_line() keyboard.add_callback_button(label='РГЭУ РИНХ Большая Садовая', color=VkKeyboardColor.POSITIVE, payload='\"РГЭУ РИНХ Большая Садовая\"') keyboard.add_line() keyboard.add_callback_button(label='РГЭУ РИНХ Буденовский', color=VkKeyboardColor.POSITIVE, payload='\"РГЭУ РИНХ Буденовский\"') keyboard.add_line() keyboard.add_callback_button(label='РГЭУ РИНХ Максима-Горького', color=VkKeyboardColor.POSITIVE, payload='\"РГЭУ РИНХ Максима-Горького\"') app.send_message(user_id, message="🏫", keyboard=keyboard.get_keyboard()) if data['payload'] == 'Информация о вузе': message = """В 1930—1931 годах в СССР были созданы финансово-экономические институты в Москве, Ленинграде, Харькове, Ташкенте, Иркутске, Казани, Киеве и в Ростове-на-Дону (1931). Ростовский финансово-экономический институт (РФЭИ) возник на базе экономического факультета Северо-Кавказского государственного университета (прежнее название РГУ). Именно на его кадровой, научно-исследовательской и учебно-методической базе развивался институт в предвоенное десятилетие. Постановлением Совета Народных Комиссаров СССР от 28 февраля 1933 года за № 330 РФЭИ был включен в список высших учебных заведений страны, 11 марта 1939 года приказом Всесоюзного комитета высшей школы был утвержден устав института. 13 октября 1964 года приказом Министерства высшего и среднего специального образования РСФСР № 718 РФЭИ был переименован в Ростовский институт народного хозяйства (РИНХ). В 1994 году институт стал академией, а 2000 году — университетом.""" app.send_message(user_id, message) #app.message_edit(data['peer_id'], message, data['conversation_message_id']) if data['payload'] == 'РГЭУ РИНХ Большая Садовая': message = """Факультеты: Факультет Торгового Дела Факультет Компьютерных технологий и информационной безопасности Учетно-экономический факультет Факультет Экономики и финансов Факультет Лингвистики и журналистики""" app.send_message(user_id, message, longi=39.739537, lat=47.223185) #app.message_edit(data['peer_id'], message, data['conversation_message_id']) if data['payload'] == 'РГЭУ РИНХ Буденовский': message = """Факультеты: Факультет Менеджмента и предпринимательства""" app.send_message(user_id, message, longi=39.705702, lat=47.221863) #app.message_edit(data['peer_id'], message, data['conversation_message_id']) if data['payload'] == 'РГЭУ РИНХ Максима-Горького': message = """Факультеты: Юридический факультет""" app.send_message(user_id, message, longi=39.724418, lat=47.228614)
keyboard.add_button("Отмена", color=VkKeyboardColor.SECONDARY) return keyboard.get_keyboard() def join_course_by_name(): keyboard = VkKeyboard(one_time=False) keyboard.add_button("Приcоединиться", color=VkKeyboardColor.POSITIVE) keyboard.add_button("Вернуться в главное меню", color=VkKeyboardColor.SECONDARY) return keyboard.get_keyboard() # №1. Клавиатура с 3 кнопками: "показать всплывающее сообщение", "открыть URL" и изменить меню (свой собственный тип) keyboard_1 = VkKeyboard(**dict(one_time=False, inline=True)) keyboard_1.add_callback_button(label='1 балл', color=VkKeyboardColor.POSITIVE, payload={"type": "1_point"}) keyboard_1.add_callback_button(label='2 балла', color=VkKeyboardColor.POSITIVE, payload={"type": "2_point"}) keyboard_1.add_callback_button(label='3 балла', color=VkKeyboardColor.POSITIVE, payload={"type": "3_point"}) keyboard_1.add_line() keyboard_1.add_callback_button(label='Отклонить достижение', color=VkKeyboardColor.PRIMARY, payload={"type": "Denied"}) def msg_send(user_id, text, keyboard=main_keyboard(), attachments=[]): max_len = 4092
def list_add_1(): """Список учеников группы""" keyboard = VkKeyboard(one_time=False, inline=True) keyboard.add_callback_button("Аветисян", VkKeyboardColor.SECONDARY, {"type": "avetysyan"}) keyboard.add_callback_button("Борзухин", VkKeyboardColor.SECONDARY, {"type": "borzuxin"}) keyboard.add_callback_button("Генхель", VkKeyboardColor.SECONDARY, {"type": "genhel"}) keyboard.add_line() keyboard.add_callback_button("Дятлова", VkKeyboardColor.SECONDARY, {"type": "dyatlova"}) keyboard.add_callback_button("Евдокимов", VkKeyboardColor.SECONDARY, {"type": "evdokimov"}) keyboard.add_callback_button("Егоров", VkKeyboardColor.SECONDARY, {"type": "egorov"}) keyboard.add_line() keyboard.add_callback_button("Еременко", VkKeyboardColor.SECONDARY, {"type": "eremenko"}) keyboard.add_callback_button("Каданчик", VkKeyboardColor.SECONDARY, {"type": "kadanchik"}) keyboard.add_callback_button("Маматов", VkKeyboardColor.SECONDARY, {"type": "mamatov"}) return keyboard.get_keyboard()
def list_delete_3(): """Список учеников группы""" keyboard = VkKeyboard(one_time=False, inline=True) keyboard.add_callback_button("Соловьев", VkKeyboardColor.SECONDARY, {"type": "soloviev_del"}) keyboard.add_callback_button("Тебеньков", VkKeyboardColor.SECONDARY, {"type": "tebenkov_del"}) keyboard.add_line() keyboard.add_callback_button("Ховрат", VkKeyboardColor.SECONDARY, {"type": "hovrat_del"}) keyboard.add_callback_button("Черняков", VkKeyboardColor.SECONDARY, {"type": "chernyakov_del"}) keyboard.add_callback_button("Чикинев", VkKeyboardColor.SECONDARY, {"type": "chykynev_del"}) keyboard.add_line() keyboard.add_callback_button("Шубарина", VkKeyboardColor.SECONDARY, {"type": "shubarina_del"}) return keyboard.get_keyboard()
def list_add_2(): """Список учеников группы""" keyboard = VkKeyboard(one_time=False, inline=True) keyboard.add_callback_button("Корнинский", VkKeyboardColor.SECONDARY, {"type": "korninsky"}) keyboard.add_callback_button("Могучева", VkKeyboardColor.SECONDARY, {"type": "mogucheva"}) keyboard.add_callback_button("Плиев", VkKeyboardColor.SECONDARY, {"type": "pliev"}) keyboard.add_line() keyboard.add_callback_button("Реута", VkKeyboardColor.SECONDARY, {"type": "reuta"}) keyboard.add_callback_button("Семкив", VkKeyboardColor.SECONDARY, {"type": "semkiv"}) keyboard.add_callback_button("Соловьев", VkKeyboardColor.SECONDARY, {"type": "soloviev"}) keyboard.add_line() keyboard.add_callback_button("Тебеньков", VkKeyboardColor.SECONDARY, {"type": "tebenkov"}) keyboard.add_callback_button("Ховрат", VkKeyboardColor.SECONDARY, {"type": "hovrat"}) keyboard.add_callback_button("Черняков", VkKeyboardColor.SECONDARY, {"type": "chernyakov"}) return keyboard.get_keyboard()
def main(): # Запускаем бот vk_session = VkApi(token=GROUP_TOKEN, api_version=API_VERSION) vk = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, group_id=GROUP_ID) # Создаем 2 клавиатуры # №1. Клавиатура с 3 кнопками: "показать всплывающее сообщение", "открыть URL" и изменить меню (свой собственный тип) keyboard_1 = VkKeyboard(one_time=False, inline=True) keyboard_1.add_callback_button( label="Покажи pop-up сообщение", color=VkKeyboardColor.SECONDARY, payload={ "type": "show_snackbar", "text": "Это исчезающее сообщение на экране" }, ) keyboard_1.add_line() keyboard_1.add_callback_button( label="Откртыть Url", color=VkKeyboardColor.POSITIVE, payload={ "type": "open_link", "link": "https://vk.com/dev/bots_docs_5" }, ) keyboard_1.add_line() keyboard_1.add_callback_button( label="Открыть приложение", color=VkKeyboardColor.NEGATIVE, payload={ "type": "open_app", "app_id": APP_ID, "owner_id": OWNER_ID, "hash": "anything_data_100500", }, ) keyboard_1.add_line() keyboard_1.add_callback_button( label="Добавить красного ", color=VkKeyboardColor.PRIMARY, payload={"type": "my_own_100500_type_edit"}, ) # №2. Клавиатура с одной красной callback-кнопкой. Нажатие изменяет меню на предыдущее. keyboard_2 = VkKeyboard(one_time=False, inline=True) keyboard_2.add_callback_button( "Назад", color=VkKeyboardColor.NEGATIVE, payload={"type": "my_own_100500_type_edit"}, ) # Запускаем пуллинг f_toggle: bool = False for event in longpoll.listen(): # отправляем меню 1го вида на любое текстовое сообщение от пользователя if event.type == VkBotEventType.MESSAGE_NEW: if event.obj.message["text"] != "": if event.from_user: # Если клиент пользователя не поддерживает callback-кнопки, нажатие на них будет отправлять текстовые # сообщения. Т.е. они будут работать как обычные inline кнопки. if "callback" not in event.obj.client_info[ "button_actions"]: print( f'Клиент user_id{event.obj.message["from_id"]} не поддерживает callback-кнопки.' ) vk.messages.send( user_id=event.obj.message["from_id"], random_id=get_random_id(), peer_id=event.obj.message["from_id"], keyboard=keyboard_1.get_keyboard(), message="Меню #1", ) # обрабатываем клики по callback кнопкам elif event.type == VkBotEventType.MESSAGE_EVENT: if event.object.payload.get("type") in CALLBACK_TYPES: r = vk.messages.sendMessageEventAnswer( event_id=event.object.event_id, user_id=event.object.user_id, peer_id=event.object.peer_id, event_data=json.dumps(event.object.payload), ) elif event.object.payload.get("type") == "my_own_100500_type_edit": last_id = vk.messages.edit( peer_id=event.obj.peer_id, message="Меню #2", conversation_message_id=event.obj.conversation_message_id, keyboard=(keyboard_1 if f_toggle else keyboard_2).get_keyboard(), ) f_toggle = not f_toggle
def sch(user_id, data=None): con = pymysql.connect(host='', user='', password='', db='', charset='utf8mb4') if datetime.today().strftime("%a") == 'Sat': currentW = 0 if data['payload'] == '"расписание"': settings = dict(one_time=False, inline=True) keyboard = VkKeyboard(**settings) print("button preesed") for row in range(0, 7): keyboard.add_callback_button(label=fakul[dictf[row]], color=VkKeyboardColor.POSITIVE, payload='\"' + dictf[row] + '\"') if row == 3: keyboard.add_line() app.send_message(user_id, "Факультеты", keyboard=keyboard.get_keyboard()) faculty = [] if data['payload'] in dictf: settings = dict(one_time=False, inline=True) keyboard = VkKeyboard(**settings) print("button preesed") for y in range(1, 5): keyboard.add_callback_button(label=y, color=VkKeyboardColor.POSITIVE, payload='\"' + data['payload'] + str(y) + '\"') #app.send_message(user_id, "Расписание", keyboard=keyboard.get_keyboard()) print(dictfy) app.message_edit(data['peer_id'], "Курс", data['conversation_message_id'], keyboard=keyboard.get_keyboard()) if data['payload'] in dictfy: print(data) fct = data['payload'][0:3] yaer = data['payload'][3] with con: cur = con.cursor() fac = cur.execute( "SELECT distinct schedule.group FROM schedule where faculty = '" + fakulfull[fct] + "' AND year = " + yaer + "") print(fac) res = cur.fetchall() print(res) m = [] for rw in res: print(rw) print(str(rw[0])) m += [str(rw[0])] print('next') settings = dict(one_time=False, inline=True) keyboard = VkKeyboard(**settings) print('keyboard') print(m) for row in range(0, len(m)): keyboard.add_button(label=m[row], color=VkKeyboardColor.POSITIVE, payload='\"group\"') print(m[row]) if row == 3: keyboard.add_line() print(m[row]) print(keyboard.get_keyboard()) print('edit') app.message_edit(data['peer_id'], "Группа", data['conversation_message_id'], keyboard=keyboard.get_keyboard()) print('end') if data['payload'] == '"group"': m = [[]] with con: cur = con.cursor() fetch = cur.execute( "select schedule.day,schedule.schedule from schedule where schedule.group = '" + data['text'] + "' and schedule.up_weak = '+app.up+'") res = cur.fetchall() m = res message = "" for row in m: for col in row: message += str(col) + "\n" app.send_message(user_id, message)