def create_keyboard(response): keyboard = VkKeyboard(one_time=True) if response == 'доступные команды': return keyboard.get_empty_keyboard() elif response == 'хватит': return keyboard.get_empty_keyboard() keyboard = keyboard.get_keyboard() return keyboard
def payload_determination(event): """ Determines and processes payload of the message """ payload = int(event.message.payload) if payload == 1: keyboard = VkKeyboard.get_empty_keyboard() Messages(peer_id=<AdminId>, message='Выход выполнен', keyboard=keyboard).send() if payload == 2: keyboard = VkKeyboard.get_empty_keyboard() text = session_api.messages.getHistory(peer_id=<AdminId>)['items'][1]['text'] Messages(peer_id=<AdminId>, message=f'Сообщение с текстом "{text}"' f' успешно отправлено в беседу СПИДИНФО', keyboard=keyboard).send() Messages(session=vk_session, text=text, num=1).resend()
def create_keyboard_for_which_yrok(response): keyboard = VkKeyboard(one_time=False) if response == 'какой урок будет первым в...?': # Создание кнопок keyboard.add_button('Понедельник', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Вторник', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Среда', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Четверг', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Пятница', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE) elif response == 'закрыть': print('закрываем клаву') return keyboard.get_empty_keyboard() keyboard = keyboard.get_keyboard() return keyboard
def create_keyboard(x): keyboard = VkKeyboard(one_time=False) if x == 'тест': keyboard = VkKeyboard(one_time=True) keyboard.add_button('Белая кнопка', color=VkKeyboardColor.DEFAULT) keyboard.add_button('Зелёная кнопка', color=VkKeyboardColor.POSITIVE) keyboard.add_line() # Переход на вторую строку keyboard.add_button('Красная кнопка', color=VkKeyboardColor.NEGATIVE) keyboard.add_line() keyboard.add_button('Синяя кнопка', color=VkKeyboardColor.PRIMARY) keyboard.add_button('Привет', color=VkKeyboardColor.PRIMARY) elif x == 'смех': keyboard.add_button("хочу смешную картинку!", color=VkKeyboardColor.POSITIVE) elif x == 'король здесь': keyboard = VkKeyboard(one_time=True) keyboard.add_button('Король здесь', color=VkKeyboardColor.POSITIVE) elif x == 'закрыть': print('закрываем клаву') return keyboard.get_empty_keyboard() keyboard = keyboard.get_keyboard() return keyboard
def create_keyboard(response): keyboard = VkKeyboard(one_time=False) if response == "/help" or response == "!начать" or response == "!старт" or response == "старт" or response == "начать" or response == "назад" or response == "/start" or response == "start" or response == "!start": keyboard.add_button('Купить', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Продать', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Пруфы', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Отключить бота', color=VkKeyboardColor.NEGATIVE) elif response == 'купить': keyboard.add_button('100к', color=VkKeyboardColor.POSITIVE) keyboard.add_button('500к', color=VkKeyboardColor.POSITIVE) keyboard.add_button('1кк', color=VkKeyboardColor.POSITIVE) keyboard.add_button('5кк', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Другое', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE) elif response == 'продать': keyboard.add_button('До 1кк', color=VkKeyboardColor.POSITIVE) keyboard.add_button('1кк-5кк', color=VkKeyboardColor.POSITIVE) keyboard.add_button('5кк-15кк', color=VkKeyboardColor.POSITIVE) keyboard.add_button('От 15кк', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE) elif response == 'отключить бота': print('Отключаю') return keyboard.get_empty_keyboard() keyboard = keyboard.get_keyboard() return keyboard
class Commands: def __init__(self, commands): self._commands = commands self._keyboard = VkKeyboard() def kb(self, params: list = None, one_time: bool = False): """ Makes buttons that used by keyboard of vk_api """ if not params: self._keyboard = VkKeyboard() return self._keyboard.get_empty_keyboard() self._keyboard = VkKeyboard(one_time=one_time) for param in params: if param is None: self._keyboard.add_line() continue btn = self.get(param, True) self._keyboard.add_button(btn[0], color=btn[1]) return self._keyboard.get_keyboard() def get(self, command_name: str, make_button=False): """ Gets command synonyms or getting corresponding button settings """ command = self._commands.get(command_name, None) if not command: return [] if make_button: return [command[0][0], command[1]] return [x.lower() for x in command[0]]
def main(): # Работа с сообщениями longpoll = VkBotLongPoll(vk, 169452609) for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW: print('Новое сообщение:') print('Для меня от: {}'.format(event.obj.from_id)) print('Текст:', event.obj.text) if event.obj.text == "Шалом": print('Клавиатура появилась') start("Всем шалом!","Definetively Not Button",VkKeyboardColor.NEGATIVE) elif event.obj.text == "[club169452609|@something_tasty] Definetively Not Button": write_msg("Теперь я буду жить тут вечно") print("Сообщение вроде как отправилось :/") elif event.obj.text == "[club169452609|@something_tasty] Definetively Button": write_msg("Не, я лентяй :Р") print("Сообщение вроде как отправилось :/") elif event.obj.text == "Давай другую": print('Клавиатура появилась') start("А теперь тут я!","Definetively Button",VkKeyboardColor.POSITIVE) elif event.obj.text == "Сворачиваемся": keyboard = VkKeyboard(one_time=False) vk.method('messages.send', {'chat_id': 1, 'message': "Ладно, мы пойдем уже", 'keyboard': keyboard.get_empty_keyboard() }) else: print(event.type) print()
def create_keyboard(response): keyboard = VkKeyboard(one_time=False) if response == 'меню' or response == 'начать' or response == 'назад' or response == 'ютуб анал' or response == 'донат или реклама' or ( 'разраб' in response and response != 'разраб') or ('ютубер' in response and response != 'ютубер'): keyboard.add_button('Мем', color=VkKeyboardColor.DEFAULT) keyboard.add_button('Видос', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Ютуб канал', color=VkKeyboardColor.NEGATIVE) keyboard.add_line() keyboard.add_button('Связь с админами', color=VkKeyboardColor.PRIMARY) keyboard.add_button('Донат или реклама', color=VkKeyboardColor.PRIMARY) elif response == 'связь с админами': keyboard.add_button('Ютубер', color=VkKeyboardColor.NEGATIVE) keyboard.add_button('Разраб', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('назад', color=VkKeyboardColor.DEFAULT) elif response == response == 'разраб' or response == 'ютубер': return keyboard.get_empty_keyboard() keyboard = keyboard.get_keyboard() return keyboard
def create_keyboard(response): keyboard = VkKeyboard(one_time=False) if response == 'сделать заказ': keyboard.add_button('1', color=VkKeyboardColor.POSITIVE) keyboard.add_button('2', color=VkKeyboardColor.POSITIVE) keyboard.add_button('3', color=VkKeyboardColor.POSITIVE) # keyboard.add_line() # Переход на вторую строку elif response == 'начать': keyboard.add_button('Сделать заказ', color=VkKeyboardColor.POSITIVE) elif response == '1' or response == '2' or response == '3': keyboard.add_button('24ч', color=VkKeyboardColor.POSITIVE) keyboard.add_button('12ч', color=VkKeyboardColor.POSITIVE) elif response == '24ч' or response == '12ч': keyboard.add_button('Забивка нужна', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Забивка не нужна', color=VkKeyboardColor.NEGATIVE) elif response == 'забивка нужна' or response == 'забивка не нужна': keyboard.add_button('Угли нужны', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Угли не нужны', color=VkKeyboardColor.NEGATIVE) elif response == 'угли нужны' or response == 'угли не нужны': return keyboard.get_empty_keyboard() elif is_adress(eval("x{}['adress']".format(event.object['from_id']))): keyboard.add_button('Отправить заказ', color=VkKeyboardColor.POSITIVE) keyboard = keyboard.get_keyboard() return keyboard
def create_keyboard(response): keyboard = VkKeyboard(one_time=False) if response == 'тест': keyboard.add_button('Белая кнопка', color=VkKeyboardColor.DEFAULT) keyboard.add_button('Зелёная кнопка', color=VkKeyboardColor.POSITIVE) keyboard.add_line() # Переход на вторую строку keyboard.add_button('Красная кнопка', color=VkKeyboardColor.NEGATIVE) keyboard.add_line() keyboard.add_button('Синяя кнопка', color=VkKeyboardColor.PRIMARY) keyboard.add_button('Привет', color=VkKeyboardColor.PRIMARY) elif response == 'привет': keyboard.add_button('Тест', color=VkKeyboardColor.POSITIVE) elif response == 'котики': keyboard.add_button('Котики!', color=VkKeyboardColor.POSITIVE) elif response == 'закрыть': print('закрываем клаву') return keyboard.get_empty_keyboard() keyboard = keyboard.get_keyboard() return keyboard
def create_keyboard(response): global status_buy keyboard = VkKeyboard(one_time=False) status_buy print(str(response == '/admin' or response == 'активировать закупку')) if response == "/help" or response == "!начать" or response == "!старт" or response == "старт" or response == "начать" or response == "назад" or response == "/start" or response == "start" or response == "!start" or response == "команды" or response == "!команды" or response == "/команды": keyboard.add_button('Купить', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Продать', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Пруфы', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Отключить бота', color=VkKeyboardColor.NEGATIVE) elif response == 'купить': keyboard.add_button('100к', color=VkKeyboardColor.POSITIVE) keyboard.add_button('500к', color=VkKeyboardColor.POSITIVE) keyboard.add_button('1кк', color=VkKeyboardColor.POSITIVE) keyboard.add_button('5кк', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Другое', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE) elif response == 'продать': keyboard.add_button('До 1кк', color=VkKeyboardColor.POSITIVE) keyboard.add_button('1кк-5кк', color=VkKeyboardColor.POSITIVE) keyboard.add_button('5кк-15кк', color=VkKeyboardColor.POSITIVE) keyboard.add_button('От 15кк', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE) elif response == '/admin' and not status_buy and (event.user_id==269593957 or event.user_id==299405534 or event.user_id==150297123): keyboard.add_button('Активировать закупку', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE) elif response == '/admin' and status_buy and (event.user_id==269593957 or event.user_id==299405534 or event.user_id==150297123): keyboard.add_button('Дезактивировать закупку', color=VkKeyboardColor.NEGATIVE) keyboard.add_line() keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE) elif (response == '/admin' or response == 'дезактивировать закупку') and status_buy and (event.user_id==269593957 or event.user_id==299405534 or event.user_id==150297123): if response == 'дезактивировать закупку': status_buy = False keyboard.add_button('Активировать закупку', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE) elif (response == '/admin' or response == 'активировать закупку') and not status_buy and (event.user_id==269593957 or event.user_id==299405534 or event.user_id==150297123): if response == 'активировать закупку': status_buy = True keyboard.add_button('Дезактивировать закупку', color=VkKeyboardColor.NEGATIVE) keyboard.add_line() keyboard.add_button('Назад', color=VkKeyboardColor.NEGATIVE) elif response == 'отключить бота': return keyboard.get_empty_keyboard() keyboard = keyboard.get_keyboard() return keyboard
def create_keyboard(response): keyboard = VkKeyboard(one_time=False) if response == 'начать': 'начать'.replace('н', 'Н') keyboard.add_button('Оплата и доставка', color=VkKeyboardColor.DEFAULT) keyboard.add_button('Выбрать размер', color=VkKeyboardColor.POSITIVE) keyboard.add_line() # Переход на вторую строку keyboard.add_button('Оформить заказ', color=VkKeyboardColor.PRIMARY) keyboard.add_button('Помощь', color=VkKeyboardColor.PRIMARY) elif response == 'привет': keyboard.add_button('Тест', color=VkKeyboardColor.POSITIVE) elif response == 'котики': keyboard.add_button('Котики!', color=VkKeyboardColor.POSITIVE) elif response == 'закрыть': print('закрываем клаву') return keyboard.get_empty_keyboard() keyboard = keyboard.get_keyboard() return keyboard
def __init__(self, text, user_id, attachment='', keyboard=None): self.text = text self.user_id = user_id self.attachment = attachment self.random_id = random.getrandbits(64) if keyboard: self.keyboard = keyboard else: self.keyboard = VkKeyboard.get_empty_keyboard()
def main(): vk_session = vk_api.VkApi( token='token', # Вынесено в .gitignore api_version='5.90') vk = vk_session.get_api() keyboard = VkKeyboard(one_time=None) keyboard.add_button('Купить', color=VkKeyboardColor.DEFAULT) keyboard.add_button('Продать', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Получить скидку', color=VkKeyboardColor.PRIMARY) longpoll = VkLongPoll(vk_session) vk = vk_session.get_api() for event in longpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: if event.text == 'Начать' and event.from_user: # Если написали в ЛС vk.messages.send( # Отправляем сообщениe user_id=event.user_id, random_id=get_random_id(), message='Выбери интересующую категорию', keyboard=keyboard.get_keyboard()) if event.text == 'Купить' and event.from_user: # Если написали в ЛС vk.messages.send( # Отправляем сообщениe user_id=event.user_id, random_id=get_random_id(), message= 'Здесь можно посмотреть товары по категориям: https://vk.com/market-73747588. Если тебя заинтересовал товар, то пришли его сюда, мы тебе ответим. Не нашёл нужного товара? Напиши нам об этом!', keyboard=keyboard.get_keyboard()) elif event.text == 'Продать' and event.from_user: vk.messages.send( # Отправляем собщение user_id=event.user_id, random_id=get_random_id(), message= 'Если надо продать вещь, заполни краткую анкету, и консультант свяжется с тобой в ближайшее время :) https://vk.com/app5708398_-73747588', keyboard=keyboard.get_keyboard()) elif event.text == 'Получить скидку' and event.from_user: vk.messages.send( # Отправляем собщение user_id=event.user_id, random_id=get_random_id(), message= 'Твой личный промокод, который даёт пожизненную скидку 5% на наши и так низкие цены: VK431Sk5. Всё, что нужно сделать - это приехать в любой из наших магазинов и продиктовать промокод менеджеру, чтобы получить приятную скидку 5%.', keyboard=keyboard.get_keyboard()) elif event.text == 'Убери кнопки' and event.from_user: vk.messages.send(user_id=event.user_id, random_id=get_random_id(), message='Окей', keyboard=keyboard.get_empty_keyboard())
def create_keyboard(response): keyboard = VkKeyboard(one_time = False) if str(response) == 'клавиатура': keyboard.add_button('пн', color=VkKeyboardColor.DEFAULT) keyboard.add_button('вт', color=VkKeyboardColor.DEFAULT) keyboard.add_button('ср', color=VkKeyboardColor.DEFAULT) keyboard.add_line() keyboard.add_button('чт', color=VkKeyboardColor.DEFAULT) keyboard.add_button('пт', color=VkKeyboardColor.DEFAULT) elif str(response) == 'закрыть': return keyboard.get_empty_keyboard() keyboard = keyboard.get_keyboard() return keyboard
def create_keyboard(response): keyboard = VkKeyboard(one_time=False) if response == 'тест': keyboard.add_button('Белая кнопка', color=VkKeyboardColor.DEFAULT) keyboard.add_button('Зелёная кнопка', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Синяя кнопка', color=VkKeyboardColor.PRIMARY) keyboard.add_button('Красная кнопка', color=VkKeyboardColor.NEGATIVE) keyboard.add_line() keyboard.add_button('Привет', color=VkKeyboardColor.PRIMARY) elif response == 'закрыть': return keyboard.get_empty_keyboard() keyboard = keyboard.get_keyboard() return keyboard
def generate_keyboard(self, buttons, inline=False, one_time=False): """ Structure buttons: [ [Button, Button], [Button, Button, Button], [Button] ... ] function return VkKeyboard """ if not buttons: return VkKeyboard.get_empty_keyboard() keyboard = VkKeyboard(inline=inline, one_time=one_time) for i in range(len(buttons)): for button in buttons[i]: keyboard.add_button(label=button.name, color=button.color) if i < len(buttons) - 1: keyboard.add_line() return keyboard.get_keyboard()
def create_keyboard(response): keyboard = VkKeyboard(one_time=False) if response == 'клава': keyboard.add_button('нажимай, чтобы управлять', color=VkKeyboardColor.NEGATIVE) elif response == 'нажимай, чтобы управлять': keyboard.add_button('Одежда', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Меню', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Секс', color=VkKeyboardColor.NEGATIVE) elif response == 'закрыть': print('закрываю клаву') return keyboard.get_empty_keyboard() keyboard = keyboard.get_keyboard() return keyboard
def create_keyboard(response): keyboard = VkKeyboard(one_time=False) if response == 'команды': keyboard.add_button('Привет', color=VkKeyboardColor.DEFAULT) 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.add_button('Тест', color=VkKeyboardColor.PRIMARY) elif response == 'как дела?': keyboard.add_button('Команды', color=VkKeyboardColor.DEFAULT) keyboard.add_button('Закрыть', color=VkKeyboardColor.PRIMARY) elif response == 'шутка': keyboard.add_button('Шутка', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Добавить шутку', color=VkKeyboardColor.DEFAULT) keyboard.add_button('Закрыть', color=VkKeyboardColor.PRIMARY) elif response == 'тест': keyboard.add_button('Привет', color=VkKeyboardColor.PRIMARY) keyboard.add_button('Закрыть', color=VkKeyboardColor.PRIMARY) elif response == 'привет': keyboard.add_button('Как дела?', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Закрыть', color=VkKeyboardColor.PRIMARY) elif response == 'ааааа': keyboard.add_button('Закрыть', color=VkKeyboardColor.PRIMARY) elif response == 'закрыть': print('закрываем клаву') return keyboard.get_empty_keyboard() keyboard = keyboard.get_keyboard() return keyboard
def create_keyboard(response): keyboard = VkKeyboard(one_time=False) if response == 'клава': keyboard.add_button('Нажми, чтобы управлять ', color=VkKeyboardColor.NEGATIVE) elif response == 'одежда': keyboard.add_button('Одежда', color=VkKeyboardColor.POSITIVE) elif response == 'меню': keyboard.add_button('Меню', color=VkKeyboardColor.POSITIVE) elif response == 'секс': keyboard.add_button('Тут будет секс', color=VkKeyboardColor.POSITIVE) elif response == 'закрыть': print('закрываю клаву') return keyboard.get_empty_keyboard() keyboard = keyboard.get_keyboard() return keyboard
def Create_board(state=None): # keyboard = VkKeyboard(one_time=True, inline=True) chat = 'chat' keyboard = VkKeyboard(one_time=False) if state is None: return keyboard.get_empty_keyboard() if state == '/start': keyboard.add_button(config.get(chat).get(state).get('ability'), color=VkKeyboardColor.PRIMARY, payload="{\"button:\": \"/ability\"}") keyboard.add_line() keyboard.add_button(config.get(chat).get(state).get('ask_admin'), color=VkKeyboardColor.PRIMARY, payload="{\"button:\": \"/ask_admin\"}") keyboard.add_line() keyboard.add_button(config.get(chat).get(state).get('help_list'), color=VkKeyboardColor.PRIMARY, payload="{\"button:\": \"/help_list\"}") keyboard = keyboard.get_keyboard() return keyboard elif state == '/ability': keyboard = VkKeyboard(one_time=True) keyboard.add_button(config.get(chat).get(state).get('search_photos'), color=VkKeyboardColor.POSITIVE, payload="{\"button:\": \"/search_photos\"}") keyboard.add_line() keyboard.add_button(config.get(chat).get(state).get('come_back'), color=VkKeyboardColor.NEGATIVE, payload="{\"button:\": \"/come_back\"}") keyboard = keyboard.get_keyboard() return keyboard elif state == '/ask_admin': keyboard.add_button(config.get(chat).get(state).get('come_back'), color=VkKeyboardColor.NEGATIVE, payload="{\"button:\": \"/come_back\"}") keyboard = keyboard.get_keyboard() return keyboard elif state == "/help_list": keyboard.add_button( config.get(chat).get(state).get('delete_user_data'), color=VkKeyboardColor.NEGATIVE, payload="{\"button:\": \"/delete_user_data\"}") keyboard.add_line() keyboard.add_button(config.get(chat).get(state).get('come_back'), color=VkKeyboardColor.NEGATIVE, payload="{\"button:\": \"/come_back\"}") keyboard = keyboard.get_keyboard() return keyboard elif state == '/search_photos': # keyboard.add_button(config.get(chat).get(state).get('identify'), color=VkKeyboardColor.POSITIVE, # payload="{\"button:\": \"/identify\"}") # keyboard.add_line() keyboard.add_button(config.get(chat).get(state).get('get_photos'), color=VkKeyboardColor.PRIMARY, payload="{\"button:\": \"/get_photos\"}") keyboard.add_line() keyboard.add_button( config.get(chat).get(state).get('help_search_photos'), color=VkKeyboardColor.PRIMARY, payload="{\"button:\": \"/help_search_photos\"}") keyboard.add_line() keyboard.add_button(config.get(chat).get(state).get('come_back'), color=VkKeyboardColor.NEGATIVE, payload="{\"button:\": \"/come_back\"}") keyboard.add_button(config.get(chat).get(state).get('start'), color=VkKeyboardColor.NEGATIVE, payload="{\"button:\": \"/start\"}") keyboard = keyboard.get_keyboard() return keyboard # elif state == "/ask_identify": # keyboard = VkKeyboard(one_time=False, inline=True) # keyboard.add_button(config.get(chat).get(state).get('yes'), color=VkKeyboardColor.PRIMARY, # payload="{\"button:\": \"/identify\"}") # keyboard.add_button(config.get(chat).get(state).get('no'), color=VkKeyboardColor.PRIMARY, # payload="{\"button:\": \"/search_photos\"}") # keyboard = keyboard.get_keyboard() # return keyboard # # elif state == "/identify": # keyboard = VkKeyboard(one_time=True) # keyboard.add_button(config.get(chat).get(state).get('come_back'), color=VkKeyboardColor.NEGATIVE, # payload="{\"button:\": \"/come_back\"}") # keyboard.add_line() # keyboard.add_button(config.get(chat).get(state).get('start'), color=VkKeyboardColor.NEGATIVE, # payload="{\"button:\": \"/start\"}") # keyboard = keyboard.get_keyboard() # return keyboard elif state == "/get_photos": keyboard.add_button(config.get(chat).get(state).get('come_back'), color=VkKeyboardColor.NEGATIVE, payload="{\"button:\": \"/come_back\"}") keyboard.add_line() keyboard.add_button(config.get(chat).get(state).get('start'), color=VkKeyboardColor.NEGATIVE, payload="{\"button:\": \"/start\"}") keyboard = keyboard.get_keyboard() return keyboard
def payload_determination(event): """ Determines and processes payload of the message """ payload = int(event.message.payload) if payload == 1: keyboard = VkKeyboard.get_empty_keyboard() Messages(peer_id=<AdminId>, message='Выход выполнен', keyboard=keyboard).send() if payload == 2: keyboard = VkKeyboard.get_empty_keyboard() text = session_api.messages.getHistory(peer_id=<AdminId>)['items'][1]['text'] Messages(peer_id=<AdminId>, message=f'Сообщение с текстом "{text}"' f' успешно отправлено в беседу СПИДИНФО', keyboard=keyboard).send() Messages(session=vk_session, text=text, num=1).resend() if payload == 3: keyboard = VkKeyboard.get_empty_keyboard() text = session_api.messages.getHistory(peer_id=<AdminId>)['items'][1]['text'] Messages(peer_id=<AdminId>, message=f'Сообщение с текстом "{text}"' f' успешно отправлено в беседу БАП1901', keyboard=keyboard).send() Messages(session=vk_session, text=text, num=2).resend() if payload == 4: keyboard = VkKeyboard.get_empty_keyboard() text = session_api.messages.getHistory(peer_id=<AdminId>)['items'][1]['text'] Messages(peer_id=<AdminId>, message=f'Сообщение с текстом "{text}"' f' успешно отправлено в тестовую беседу', keyboard=keyboard).send() Messages(session=vk_session, text=text, num=0).resend() @staticmethod def response_determination(admin, response, event, keyboard): """ Determines responses and processes incoming messages
def create_keyboard(response): keyboard = VkKeyboard(one_time=False) if response == 'заявка': keyboard.add_button('Неоновая вывеска', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Объёмные буквы', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Вывеска-короб', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Отменить', color=VkKeyboardColor.NEGATIVE) elif response == 'позвать администратора группы' or response == 'отправить заказ на почту': keyboard.add_button('Отменить', color=VkKeyboardColor.NEGATIVE) elif response == 'тест': keyboard.add_button('Белая кнопка', color=VkKeyboardColor.DEFAULT) keyboard.add_button('Зелёная кнопка', color=VkKeyboardColor.POSITIVE) keyboard.add_line() # Переход на вторую строку keyboard.add_button('Красная кнопка', color=VkKeyboardColor.NEGATIVE) keyboard.add_line() keyboard.add_button('Синяя кнопка', color=VkKeyboardColor.PRIMARY) keyboard.add_button('Привет', color=VkKeyboardColor.PRIMARY) elif response == 'закрыть': return keyboard.get_empty_keyboard() elif response == 'хочу связаться с вами': keyboard.add_button('Написать на почту', color=VkKeyboardColor.PRIMARY) keyboard.add_line() keyboard.add_button('Позвать администратора группы', color=VkKeyboardColor.PRIMARY) elif response == 'написать на почту': keyboard.add_button('Отправить', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Отменить', color=VkKeyboardColor.NEGATIVE) elif response == 'хочу сделать заказ': keyboard.add_button('Каталог', color=VkKeyboardColor.PRIMARY) keyboard.add_line() keyboard.add_button('Заявка', color=VkKeyboardColor.PRIMARY) elif response == 'каталог': keyboard.add_button('Отправить заказ на почту', color=VkKeyboardColor.PRIMARY) keyboard.add_line() keyboard.add_button('Вернуться', color=VkKeyboardColor.PRIMARY) else: keyboard.add_button('Хочу сделать заказ', color=VkKeyboardColor.PRIMARY) keyboard.add_line() keyboard.add_button('Кто вы?', color=VkKeyboardColor.PRIMARY) keyboard.add_button('Хочу связаться с вами', color=VkKeyboardColor.PRIMARY) keyboard.add_line() keyboard.add_button('Расскажи анекдот', color=VkKeyboardColor.PRIMARY) keyboard = keyboard.get_keyboard() return keyboard
def close_keys(): keyboard = VkKeyboard(one_time = True) return keyboard.get_empty_keyboard()
def create_empty_keyboard(): keyboardd = VkKeyboard.get_empty_keyboard() return keyboardd
def hide(): return VkKeyboard.get_empty_keyboard()
def main_dialog(): """Основной диалоговый цикл бота В бесконечном цикле передаются longpoll запросы от vk к программе :return: None """ pair_flag = True day_flag = True week_flag = True while True: try: now = datetime.now() time = str(now.time())[:5] if time in RING_SCHEDULE and pair_flag: everyPairSub() pair_flag = False if time not in RING_SCHEDULE and not pair_flag: pair_flag = True if time == '21:00' and day_flag and now.weekday() != 6: everyDaySub() day_flag = False if time == '21:01' and not day_flag: day_flag = True if time == '21:00' and now.weekday() == 6 and week_flag: everyWeekSub() week_flag = False if time == '21:01' and not week_flag: day_flag = True for event in longpoll.check(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: print('Someone text me.') cur_student = False if event.message.lower() == 'обама': for st in Students: sql.add_student(st) print('обама') # поиск в идентифицированных студентах flag = StudentState.group_unchecked for student in Students: if str(event.user_id) == str(student.user_id): cur_student = student flag = StudentState.group_checked # студент с найденной группой if flag is StudentState.group_checked: main_fork(event, cur_student) # студент с ненайденной группой elif flag is StudentState.group_unchecked: group = event.message.upper() file = check_group_in_group_file(group) if file: vk.messages.send(user_id=event.user_id, message='Я тебя запомнил', random_id=get_random_id(), keyboard=start.get_keyboard()) st = Student(group=group, user_id=str(event.user_id), file=file) Students.append(st) sql.add_student(st) else: vk.messages.send( user_id=event.user_id, message= 'Группа не найдена. Не забывайте тире и нули.', random_id=get_random_id(), keyboard=VkKeyboard.get_empty_keyboard()) except Exception as e: print(e)
def main_fork(event, cur_student: Student): message = event.message.upper() if message in FEATURES: # Диалог с расписанием if message == 'ОБНОВИТЬ' and event.user_id == ADMIN_ID: vk.messages.send(user_id=event.user_id, message='Обновление.', random_id=get_random_id(), keyboard=VkKeyboard.get_empty_keyboard()) main.init() vk.messages.send(user_id=event.user_id, message='Обновление завершено.', random_id=get_random_id(), keyboard=start.get_keyboard()) elif message == 'СМЕНИТЬ НЕДЕЛЮ' and event.user_id == ADMIN_ID: cur_student.week_is_even = not cur_student.week_is_even vk.messages.send(user_id=event.user_id, message='Неделя изменена.', random_id=get_random_id(), keyboard=start.get_keyboard()) elif message == 'СМЕНИТЬ ГРУППУ': sql.rm_student(cur_student.user_id) vk.messages.send(user_id=event.user_id, message='Введи новую группу.', random_id=get_random_id(), keyboard=start.get_empty_keyboard()) del Students[Students.index(cur_student)] elif message == 'СЕГОДНЯ': today = datetime.now().weekday() if today == 6: today = 0 vk.messages.send(user_id=event.user_id, message=cur_student.reformat_day_schedule( cur_student.get_this_week_schedule(), today), random_id=get_random_id(), keyboard=start.get_keyboard()) elif message == 'ЗАВТРА': today = datetime.now().weekday() if today >= 5: tomorrow = 0 else: tomorrow = today + 1 vk.messages.send(user_id=event.user_id, message=cur_student.reformat_day_schedule( cur_student.get_this_week_schedule(), tomorrow), random_id=get_random_id(), keyboard=start.get_keyboard()) elif message == 'КОМАНДЫ': vk.messages.send(user_id=event.user_id, message='Список навыков:\n', random_id=get_random_id(), keyboard=start.get_keyboard()) elif message == 'НЕДЕЛЯ': vk.messages.send(user_id=event.user_id, message=cur_student.reformat_week_schedule( cur_student.get_this_week_schedule(), True), random_id=get_random_id(), keyboard=start.get_keyboard()) elif message == 'ДЕНЬ НЕДЕЛИ': vk.messages.send(user_id=event.user_id, message='Выберите день недели.', random_id=get_random_id(), keyboard=weekdays.get_keyboard()) elif message == 'ПОДПИСКИ': sub = VkKeyboard(one_time=False, inline=False) if cur_student.everyDaySub: sub.add_button('ежедневно', color=VkKeyboardColor.NEGATIVE) else: sub.add_button('ежедневно', color=VkKeyboardColor.POSITIVE) sub.add_line() if cur_student.everyPairSub: sub.add_button('ежепарно', color=VkKeyboardColor.NEGATIVE) else: sub.add_button('ежепарно', color=VkKeyboardColor.POSITIVE) sub.add_line() if cur_student.everyWeekSub: sub.add_button('еженедельно', color=VkKeyboardColor.NEGATIVE) else: sub.add_button('еженедельно', color=VkKeyboardColor.POSITIVE) vk.messages.send( user_id=event.user_id, message='Кликайте на кнопки для управления подписками\n' '🍎 - выключить подписку\n' '🍏 - подключить подписку', random_id=get_random_id(), keyboard=sub.get_keyboard()) elif message == 'ЕЖЕНЕДЕЛЬНО': cur_student.everyWeekSub = not cur_student.everyWeekSub mess = 'Еженедельная подписка подключена' if cur_student.everyWeekSub else 'Еженедельная подписка отключена' vk.messages.send(user_id=event.user_id, message=mess, random_id=get_random_id(), keyboard=start.get_keyboard()) elif message == 'ЕЖЕДНЕВНО': cur_student.everyDaySub = not cur_student.everyDaySub mess = 'Ежедневная подписка подключена' if cur_student.everyDaySub else 'Ежедневная подписка отключена' vk.messages.send(user_id=event.user_id, message=mess, random_id=get_random_id(), keyboard=start.get_keyboard()) elif message == 'ЕЖЕПАРНО': cur_student.everyPairSub = not cur_student.everyPairSub mess = 'Ежепарная подписка подключена' if cur_student.everyPairSub else 'Ежепарная подписка отключена' vk.messages.send(user_id=event.user_id, message=mess, random_id=get_random_id(), keyboard=start.get_keyboard()) elif message in DAY_NUMBER: vk.messages.send(user_id=event.user_id, message=cur_student.reformat_day_schedule( cur_student.get_this_week_schedule(), DAY_NUMBER[message]), random_id=get_random_id(), keyboard=start.get_keyboard()) elif message in SHORT_DAY_NUMBER: vk.messages.send(user_id=event.user_id, message=cur_student.reformat_day_schedule( cur_student.get_this_week_schedule(), SHORT_DAY_NUMBER[message]), random_id=get_random_id(), keyboard=start.get_keyboard()) else: vk.messages.send(user_id=event.user_id, message='Такой команды нет.', random_id=get_random_id(), keyboard=start.get_keyboard())
def create_keyboard(response): keyboard = VkKeyboard(one_time=False) if response == 'начать': keyboard.add_button('Функции', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Старт', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Закрыть', color=VkKeyboardColor.NEGATIVE) elif response == 'привет': keyboard.add_button('Функции', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Старт', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Закрыть', color=VkKeyboardColor.NEGATIVE) elif response == 'старт': keyboard.add_button('Предсказание', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Мем', color=VkKeyboardColor.POSITIVE) keyboard.add_line() 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.NEGATIVE) elif response == 'мем': keyboard.add_button('Предсказание', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Мем', color=VkKeyboardColor.POSITIVE) keyboard.add_line() 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.NEGATIVE) elif response == 'предсказание': keyboard.add_button('Предсказание', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Мем', color=VkKeyboardColor.POSITIVE) keyboard.add_line() 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.NEGATIVE) elif response == 'стикеры': keyboard.add_button('Предсказание', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Мем', color=VkKeyboardColor.POSITIVE) keyboard.add_line() 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.NEGATIVE) elif response == '!шо поделать': keyboard.add_button('Предсказание', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Мем', color=VkKeyboardColor.POSITIVE) keyboard.add_line() 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.NEGATIVE) elif response == 'ясновидящий': keyboard.add_button('Предсказание', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Мем', color=VkKeyboardColor.POSITIVE) keyboard.add_line() 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.NEGATIVE) elif response == 'назад': keyboard.add_button('Функции', color=VkKeyboardColor.POSITIVE) keyboard.add_button('Начать', color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_button('Закрыть', color=VkKeyboardColor.NEGATIVE) elif response == 'закрыть': return keyboard.get_empty_keyboard() keyboard = keyboard.get_keyboard() return keyboard
def main(): if os.environ.get('RELOAD_IMG'): # img dowloading print('-' * 30, 'downloading imgs', '-' * 30) get_imgs() # auth # vk_session = vk_api.VkApi(token=open('config/token.txt', 'r').read()) vk_session = vk_api.VkApi( token=os.environ.get('VK_TOKEN', open('config/token.txt', 'r').read())) server = VkBotLongPoll(vk_session, 183487105) vk = vk_session.get_api() upload = VkUpload(vk_session) print('-' * 30, 'bot started', '-' * 30) # main loop for event in server.listen(): if event.type == VkBotEventType.MESSAGE_NEW: id = event.object.from_id msg = event.obj.text if id in users.keys(): txt, bnt, url = users[id].answer(msg, id) else: users[id] = Chat() txt, bnt, url = users[id].answer(msg, id) # keyboard keyboard = VkKeyboard(one_time=True) if bnt: for row in bnt[:-1]: for button in row: keyboard.add_button( button['txt'], color=button['color'] ) # NEGATIVE VkKeyboardColor.DEFAULT keyboard.add_line() for button in bnt[-1]: keyboard.add_button(button['txt'], color=button['color']) if url: try: photo = upload.photo_messages(photos='img/%s.jpg' % url)[0] except: try: photo = upload.photo_messages(photos='img/%s.png' % url)[0] except: photo = upload.photo_messages( photos='img/error.jpg')[0] vk.messages.send( random_id=get_random_id(), user_id=id, keyboard=keyboard.get_keyboard() if bnt else keyboard.get_empty_keyboard(), attachment='photo{}_{}'.format(photo['owner_id'], photo['id']) if url else None, message=txt) print('Username:'******'User msg:', msg) print('Bot msg:', txt, url) print('-' * 30)