def main(): """ Пример использования bots longpoll https://vk.com/dev/bots_longpoll """ vk_session = vk_api.VkApi(token='your_group_token') longpoll = VkBotLongPoll(vk_session, 'your_group_id') for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW: print('Новое сообщение:') print('Для меня от: ', end='') print(event.obj.from_id) print('Текст:', event.obj.text) print() elif event.type == VkBotEventType.MESSAGE_REPLY: print('Новое сообщение:') print('От меня для: ', end='') print(event.obj.peer_id) print('Текст:', event.obj.text) print() elif event.type == VkBotEventType.MESSAGE_TYPING_STATE: print('Печатает ', end='') print(event.obj.from_id, end=' ') print('для ', end='') print(event.obj.to_id) print() elif event.type == VkBotEventType.GROUP_JOIN: print(event.obj.user_id, end=' ') print('Вступил в группу!') print() elif event.type == VkBotEventType.GROUP_LEAVE: print(event.obj.user_id, end=' ') print('Покинул группу!') print() else: print(event.type) print()
while True: try: for event in self.check(): yield event except Exception as e: pass #--------------- CONNECT --------------------------- print(colorama.Fore.CYAN + '***************\n\n[*]Соеденение с сервером VK API..') try: # пробуем подключиться vk_session = vk_api.VkApi(token=config.TOKEN_GROUP) print(colorama.Fore.CYAN + '[*]Отправка данных для подключения..') longpoll = VkBotLongPoll(vk_session, config.ID_GROUP) vk_group = vk_session.get_api() print(colorama.Fore.CYAN + '[*]Сессия создана') print(colorama.Fore.CYAN + '[*]Успешной подключение!\n\n***************') except: # если получаем ошибку завершаем работу print(colorama.Fore.RED + '\n[*]Ошибка соединения с API VK') sys.exit() #-------------------------------------------------- print(colorama.Fore.BLUE + '\nПрослушиваю сервер на заявки в группу\n') for event in longpoll.listen(): # получаем события if event.type == VkBotEventType.GROUP_JOIN: first_name = vk_group.users.get( user_ids=event.obj.user_id, name_case='gen')[0]['first_name'] # сохраняем имя last_name = vk_group.users.get(
import vk_api from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType from vk_api.keyboard import VkKeyboard, VkKeyboardColor from vk_api import VkUpload import settings from multiprocessing import Process from datetime import datetime import traceback session = vk_api.VkApi(token=settings.key) session.get_api() longpoll = VkBotLongPoll(session, 193803197) methods = session.get_api() import psycopg2 import sql import time import menu from vkcoinapi import * from vk_api import VkUpload from vkcoinapi import * import random #methods.messages.send(peer_id=peer_id,random_id=0,message='#.',keyboard=interface()) #refflink = https://vk.me/public189535455?ref=123 rooms_choicez = [ 'Заходим в беседу https://vk.me/join/AJQ1d_8XWhe8Tcs6LCcaZXDF' ] def get_username(userid): name = methods.users.get(user_ids=userid) name = name[0]['first_name'] + ' ' + name[0]['last_name'] return name
def main(window): """ Основная функция """ global TOKEN global vk_session global vk global session longpoll = VkBotLongPoll(vk_session, '203031537') with open('session_data.json') as file: confidants = json.load(file)["confidants"] for index in confidants: for user_id in confidants[index]: try: vk.messages.send(user_id=user_id, message="Сессия {} запущена, время: {}".format( get_session_name(), datetime.datetime.now()), random_id=random.randint(0, 2 ** 64)) except vk_api.exceptions.ApiError: pass for event in longpoll.listen(): if not session.is_run: # Это нужно для прекращения функции и корректного закрытия программы break if event.type == VkBotEventType.MESSAGE_NEW: with open('session_data.json') as file: confidants = json.load(file)["confidants"] if event.obj.message['from_id'] in confidants['Users'] + \ confidants['Administrators']: text = event.obj.message['text'].split() command, session_name, *arguments = text + [''] user = vk.users.get(user_id=event.obj.message['from_id']) if session_name == get_session_name() and command != '/slist': if command in commands: try: if command != '/stop': if commands[command]: exec('session.{}(event, True, {})'.format( command[1:], arguments)) else: exec('session.{}(event, {})'.format( command[1:], arguments)) window.listWidget.addItem( '[{}] {}: {} {}'.format( datetime.datetime.now(), ' '.join( [user[0]['first_name'], user[0]['last_name']]), command, ' '.join(arguments))) window.reinit() else: session.stop(event, False, arguments) except Exception as exc: vk.messages.send( user_id=event.obj.message['from_id'], message="ОШИБКА: {}".format(str(exc)), random_id=random.randint(0, 2 ** 64)) window.listWidget.addItem( '[{}] {}: Попытка: {} {}, ошибка: {}'.format( datetime.datetime.now(), ' '.join( [user[0]['first_name'], user[0]['last_name']]), command, ' '.join(arguments), str(exc))) else: vk.messages.send(user_id=event.obj.message['from_id'], message="Не существует такой команды.", random_id=random.randint(0, 2 ** 64)) window.listWidget.addItem( '[{}] {}: Попытка: {} {}, ошибка: несуществующая команда.'.format( datetime.datetime.now(), ' '.join( [user[0]['first_name'], user[0]['last_name']]), command, ' '.join(arguments))) elif command == '/slist': session.slist(event)
import requests import vk_api from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType import random as r vk_group = ( '187556970', '71fa6a50dd64673ca6fa833bedaa62d73fc76fa627615a20e1f1a046f4270bf27706d28b07aadaa9fce25' ) YaTrans_api_key = 'trnsl.1.1.20191015T124414Z.d5eba00fc9a975a3.3e23c9466d0f149ae3972f4ebb85d17abde6864f' vk = vk_api.VkApi(token=vk_group[1]) longpoll = VkBotLongPoll(vk, vk_group[0]) def Translate(text, lang): url = 'https://translate.yandex.net/api/v1.5/tr.json/translate?key=' + YaTrans_api_key + '&lang=' + lang + '&text=' + str( text) result = requests.post(url).json() return result for event in longpoll.listen(): msg = {} if event.type == VkBotEventType.MESSAGE_NEW: msg['text'] = event.obj.text msg['user'] = str(event.obj.from_id) randomnum = r.randint(-2147483648, 2147483647) try: answer = Translate(msg['text'], lang='ru')
class VkBot(): """Класс бота для соц. сети vk.com""" def __init__(self, authorization_data, database, function_dict, measuring_system): """Выполняет инициализацию класса""" self.__database = database self.__room_list = self.__database.get_room_list() self.__token = authorization_data.get_token() self.__function_dict = function_dict self.__measuring_system = measuring_system # Создание экземпляров клавиатуры self.__function_keyboard = VkKeyboard(one_time=True) self.__rooms_keyboard = VkKeyboard(one_time=True) # Определение переменных для работы с vk-api self.__vk_session = vk_api.VkApi(token=self.__token) self.__vk = self.__vk_session.get_api() self.__upload = VkUpload(self.__vk_session) self.__longpoll = VkBotLongPoll(self.__vk_session, authorization_data.get_group_id()) def create_rooms_keyboard(self, room_buttons_on_line=2): """Создание клавиатуры помещений""" # Получение списка помещений max_col = 0 max_row = 10 for room in self.__room_list: if max_col == room_buttons_on_line: max_col = 0 self.__rooms_keyboard.add_line() self.__rooms_keyboard.add_button( room, color=VkKeyboardColor.DEFAULT, ) max_col += 1 max_row -= max_row if max_row == -1: break def create_function_keyboard(self, function_buttons_on_line=2): """Создание клавиатуры функций""" max_col = 0 max_row = 8 for func in self.__function_dict: if func == 'Получить текущие данные': self.__function_keyboard.add_button( func, color=VkKeyboardColor.POSITIVE, ) self.__function_keyboard.add_line() elif max_col == function_buttons_on_line: max_col = 0 self.__function_keyboard.add_line() self.__function_keyboard.add_button( func, color=VkKeyboardColor.DEFAULT, ) else: self.__function_keyboard.add_button( func, color=VkKeyboardColor.DEFAULT, ) max_col += 1 max_row -= max_row if max_row == -1: break self.__function_keyboard.add_line() self.__function_keyboard.add_button("Назад", color=VkKeyboardColor.POSITIVE) def bot_work(self): """Основной алгоритм работы бота""" # В цикле производится проверка longpool api room_name = '' for event in self.__longpoll.listen(): # Событие "Добавление участника в группу" if event.type == VkBotEventType.GROUP_JOIN: self.__vk.messages.send( user_id=event.obj.user_id, random_id=get_random_id(), keyboard=self.__rooms_keyboard.get_keyboard(), message= ('Привет, я помогу тебе узнать температуру, влажность и давление воздуха.' + '\nВоспользуйся клавиатурой для взаимодействия со мной.'), ) # Событие "Новое сообщение" if event.type == VkBotEventType.MESSAGE_NEW: # Проверка на пустое сообщение if event.obj.text != '': # Если сообщение пришло от пользователя if event.from_user: # Производится форматирование строки, удаляются знаки препинания transtab = str.maketrans( {key: None for key in string.punctuation}) message_text = event.obj.text.translate(transtab) # Если текст сообщения - это название комнаты if message_text in self.__room_list: room_name = message_text self.__vk.messages.send( user_id=event.obj.from_id, random_id=get_random_id(), keyboard=self.__function_keyboard.get_keyboard( ), message='Выберите функцию', ) # Если текст сообщения - это название функции elif message_text in self.__function_dict: if room_name != '': climate_data = self.__database.get_climate_data( room_name, self.__function_dict.get(message_text)) # Проверка данных для определения дальнейших действий if not climate_data: # Если данных нет self.__vk.messages.send( user_id=event.obj.from_id, random_id=get_random_id(), keyboard=self.__rooms_keyboard. get_keyboard(), message= 'Нет данных по этому помещению\nВыберите другое' ) else: # Если данные по помещению есть - проверяем полученные данные и определяем дальнейшие действия for cd in climate_data: if isinstance(climate_data.get(cd), dict): print("dict") # Если функция требовала отчет - создаем график self.__vk.messages.send( user_id=event.obj.from_id, random_id=get_random_id(), message= 'Минутку, надо найти фломастеры...', ) title = room_name + ' - ' + message_text graph_file_name = graph.get_graph( climate_data, self.__measuring_system, title) if os.path.exists(graph_file_name): photo = self.__upload.photo_messages( photos=graph_file_name)[0] self.__vk.messages.send( user_id=event.obj.from_id, random_id=get_random_id(), keyboard=self. __function_keyboard. get_keyboard(), message= 'Вот график за заданный интервал\nКрасивый, правда?', attachment='photo{}_{}'. format( photo['owner_id'], photo['id'])) else: self.__vk.messages.send( user_id=event.obj.from_id, random_id=get_random_id(), message= ('Я нарисовал график, но кто-то его украл, пока я убирал фломастеры...\n' + 'Простите, пожалуйста... :(' ), ) break # Прерываем цикл начатый для проверки elif isinstance( climate_data.get(cd), float or str): # Если функция требовала вывести последние данные msg_text = '' print(climate_data) for table in climate_data: if table == 'Температура': msg_text += 'Температура: ' + str( climate_data[table] ) + ' °C \n' elif table == 'Влажность': msg_text += 'Влажность: ' + str( climate_data[table] ) + ' %\n' elif table == 'Давление': if self.__measuring_system == 'мм.рт.ст.': msg_text += 'Давление: ' + str( climate_data[table] ) + ' мм.рт.ст.\n' else: msg_text += 'Давление: ' + str( climate_data[table] ) + ' гПа\n' else: msg_text += str( table) + ': ' + str( climate_data[table] ) self.__vk.messages.send( user_id=event.obj.from_id, random_id=get_random_id(), keyboard=self. __function_keyboard. get_keyboard(), message=msg_text, ) break # Прерываем цикл начатый для проверки else: self.__vk.messages.send( user_id=event.obj.from_id, random_id=get_random_id(), keyboard=self.__rooms_keyboard. get_keyboard(), message= 'Что-то пошло не так... :(\n Давайте попробуем сначала', ) break # Прерываем цикл начатый для проверки elif message_text == 'Назад': self.__vk.messages.send( user_id=event.obj.from_id, random_id=get_random_id(), keyboard=self.__rooms_keyboard.get_keyboard(), message='Выберите помещение', ) else: self.__vk.messages.send( user_id=event.obj.from_id, random_id=get_random_id(), keyboard=self.__rooms_keyboard.get_keyboard(), message= 'Простите, я не понимаю. Воспользуйтесь клавиатурой, пожалуйста', )
class Bot: """ Echo bot лля vk.com Use python3.8 """ def __init__(self, group_id, token): """ param group_id: group_id из vk param token: секретный ключ """ self.group_id = group_id self.token = token self.vk = VkApi(token=token) self.long_poller = VkBotLongPoll(self.vk, self.group_id) self.api = self.vk.get_api() def run(self): """Запуск бота""" for event in self.long_poller.listen(): try: self.on_event(event) except Exception: log.error('Ошибка в обработке события') @db_session def on_event(self, event): """Отправляет сообщение назад, если это текст :param event: VkBotMessageEvent object :return: None """ if event.type != VkBotEventType.MESSAGE_NEW: log.info('Пока не умеем обрабатывать %s', event.type) return user_id = event.object.message['peer_id'] text = event.object.message['text'] state = UserState.get(user_id=str(user_id)) if state is not None: # continue scenario text_to_send = self.continue_scenario(text, state) else: # search intent for intent in settings.TICKETS_INTENTS: log.debug(f'User got {intent}') if any(token in text.lower() for token in intent['tokens']): if intent['answer']: text_to_send = intent['answer'] else: text_to_send = self.start_scenario( user_id, intent['scenario']) break else: text_to_send = settings.DEFAULT_ANSWER self.api.messages.send( message=text_to_send, random_id=random.randint(0, 2**20), peer_id=user_id, ) def start_scenario(self, user_id, scenario_name): scenario = settings.TICKET_SCENARIOS[scenario_name] first_step = scenario['first_step'] step = scenario['steps'][first_step] text_to_send = step['text'] UserState(user_id=str(user_id), scenario_name=scenario_name, step_name=first_step, context={}) return text_to_send def continue_scenario(self, text, state): steps = settings.TICKET_SCENARIOS[state.scenario_name]['steps'] step = steps[state.step_name] handler = getattr(handlers, step['handler']) if handler(text=text, context=state.context, state=state): if type(handler(text=text, context=state.context, state=state)) is str: next_step = steps[handler(text=text, context=state.context, state=state)] else: next_step = steps[step['next_step']] text_to_send = next_step['text'].format(**state.context) if next_step['next_step']: state.step_name = step['next_step'] else: if next_step == steps['step8']: log.info( 'Оформлен билет {point_1}-{point_2} на рейс {flight_number}' ' {out_date}.'.format(**state.context)) Ticket(city_out=state.context['point_1'], city_in=state.context['point_2'], flight_date=state.context['out_date'], flight_number=state.context['flight_number']) else: log.info('Билет не оформлен.'.format(**state.context)) # finish scenario state.delete() else: text_to_send = step['failure_text'].format(**state.context) return text_to_send
import vk_api import random import time import re import sqlite3 import unicodedata from vk_api.utils import get_random_id from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType vk = vk_api.VkApi( token= "288a049bde237888b0eaaedaf76d0c9020b2e349181ab64825d8c10d3d4f9e8da4f85351e6394b33f8d08" ) vk._auth_token() vk.get_api() longpoll = VkBotLongPoll(vk, 192963552) #Пикчи kap = [ 'photo-192963552_457239028', 'photo-192963552_457239029', 'photo-192963552_457239037' ] ziga = [ 'photo-192963552_457239027', 'photo-192963552_457239026', 'photo-192963552_457239054', 'photo-192963552_457239053' ] kurwab = ['photo-192963552_457239034', 'photo-192963552_457239024'] bent = [ 'photo-192963552_457239022', 'photo-192963552_457239033', 'photo-192963552_457239041', 'photo-192963552_457239045' ]
class Bot: def __init__(self, group_id, token): self.group_id = group_id self.token = token self.vk = vk_api.VkApi(token=token) self.long_poller = VkBotLongPoll(self.vk, self.group_id) self.api = self.vk.get_api() def run(self): for event in self.long_poller.listen(): try: self.on_event(event) except Exception as err: log.exception("Ошибка обработки") @db_session def on_event(self, event): if event.type != VkBotEventType.MESSAGE_NEW: return user_id = event.object.message['peer_id'] text = event.object.message['text'] if int(user_id) - 2 * 10**9 < 0: state = UserState.get(user_id=str(user_id)) if state is not None: text_to_send = self.continue_scenario(text=text, state=state) else: for intent in settings.INTENTS: if any(token in text.lower() for token in intent['tokens']): if intent['answer']: text_to_send = intent['answer'] else: text_to_send = self.start_scenario( user_id, intent['scenario']) break else: text_to_send = settings.DEFAULT_ANSWER self.send_message(text_to_send, user_id) else: for intent in settings.INTENTS: if any(token in text.lower() for token in intent['tokens']): if intent['answer']: text_to_send = intent['answer'] self.send_message(text_to_send, user_id) if intent['group_handler']: handler = getattr(handlers, intent['group_handler']) text_to_send = handler(text) if text_to_send: self.send_message(text_to_send, user_id) if text == '/Семен': print('ok') self.api.messages.send(random_id=random.randint(0, 2**20), peer_id=user_id, attachment='photo-197891905_457239039') def start_scenario(self, user_id, scenario_name): scenario = settings.SCENARIOS[scenario_name] first_step = scenario['first_step'] step = scenario['steps'][first_step] text_to_send = step['text'] first_name = self.get_user_info(user_id)[0]['first_name'] last_name = self.get_user_info(user_id)[0]['last_name'] UserState(user_id=str(user_id), scenario_name=scenario_name, step_name=first_step, context={ 'first_name': first_name, 'last_name': last_name }) return text_to_send def continue_scenario(self, text, state): steps = settings.SCENARIOS[state.scenario_name]['steps'] step = steps[state.step_name] handler = getattr(handlers, step['handler']) if handler(text=text, context=state.context): next_step = steps[step['next_step']] text_to_send = next_step['text'].format(**state.context) if next_step['next_step']: state.step_name = step['next_step'] else: state.delete() else: text_to_send = step['failure_text'] return text_to_send def get_user_info(self, user_id): return self.vk.method('users.get', {'user_ids': user_id}) def send_message(self, text, user_id=None): self.api.messages.send( message=text, random_id=random.randint(0, 2**20), peer_id=user_id, )
class Bot: """ Бот-переводчик VK Python version 3.7 """ def __init__(self, GROUP_ID, TOKEN, to_lang='en', from_lang='ru'): """ :param GROUP_ID: ID группы VK :param TOKEN: секретный токен :param from_lang: исходный язык, по умолчанию RU :param to_lang: язык перевода, по умолчанию EN """ self.group_id = GROUP_ID self.token = TOKEN self.vk = vk_api.VkApi(token=TOKEN) self.long_poller = VkBotLongPoll(self.vk, self.group_id) self.api = self.vk.get_api() self.user_states = dict() def run(self): """ Запуск бота """ for event in self.long_poller.listen(): try: self.on_event(event) except Exception: log.exception('Ошибка обработки') def on_event(self, event): """ Обработка события: принтмат сообжение, переводит и отправляет сообщение назад :param event: VkBotMessageEvent :return: None """ if event.type != VkBotEventType.MESSAGE_NEW: log.info('Сообщения такого типа не обрабатываются %s', event.type) return user_id = event.object.peer_id text = event.object.text if user_id in self.user_states: text_to_send = self.continue_scenario(user_id, text) else: # search intevt for intent in settings.INTENTS: log.debug(f'user get {intent}') if any(token in text.lower() for token in intent['tokens']): if intent['answer']: text_to_send = intent['answer'] else: text_to_send = self.start_scenario(user_id, intent['scenario']) break else: text_to_send = settings.DEFAULT_ANSWER self.api.messages.send( message=text_to_send, random_id=random.randint(0, 2 ** 20), peer_id=event.object.peer_id, ) def start_scenario(self, user_id, scenario_name): scenario = settings.SCENARIOS[scenario_name] first_step = scenario['first_step'] step = scenario['steps'][first_step] text_to_send = step['text'] self.user_states[user_id] = UserState(scenario_name=scenario_name, step_name=first_step) return text_to_send def continue_scenario(self, user_id, text): state = self.user_states[user_id] steps = settings.SCENARIOS[state.scenario_name]['steps'] step = steps[state.step_name] handler = getattr(handlers, step['handler']) if handler(text=text, context=state.context): next_step = steps[step['next_step']] text_to_send = next_step['text'].format(**state.context) if next_step['next_step']: # swith to next step state.step_name = step['next_step'] else: # finish scenario self.user_states.pop(user_id) log.info('зарегистрирован: {name} {email}'.format(**state.context)) else: # retry current step text_to_send = step['failure_text'] return text_to_send
import vk_api from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType import random from covid19 import * from dvach import * vk_session = vk_api.VkApi( token= '95828ed40c8fa5afcc922fd9e004e7a4ae4d32647fcdd59ebf7ff66f778a921a760bde7808262df480a32' ) vk = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, '171143945') #id группы def rand(): return random.randint(1, 10**12) def send_message(chat_id, text): vk.messages.send(chat_id=chat_id, message=text, random_id=rand()) for event in longpoll.listen(): if (event.type == VkBotEventType.MESSAGE_NEW): if (event.obj.text.lower() == 'covid инфа'): send_message(event.chat_id, get_covid(False)) if (event.obj.text.lower() == 'covid инфа детально'): send_message(event.chat_id, get_covid(True)) if (event.obj.text.lower() == 'тред+'): send_message(event.chat_id, get_dvach(True)) if (event.obj.text.lower() == 'тред'):
class Bot: """ Бот-переводчик VK Python version 3.7 """ def __init__(self, GROUP_ID, TOKEN, to_lang='en', from_lang='ru'): """ :param GROUP_ID: ID группы VK :param TOKEN: секретный токен :param from_lang: исходный язык, по умолчанию RU :param to_lang: язык перевода, по умолчанию EN """ self.group_id = GROUP_ID self.token = TOKEN self.vk = vk_api.VkApi(token=TOKEN) self.long_poller = VkBotLongPoll(self.vk, self.group_id) self.api = self.vk.get_api() self.translator = Translator(to_lang, from_lang) def run(self): """ Запуск бота """ for event in self.long_poller.listen(): try: self.on_event(event) except Exception: log.exception('Ошибка обработки') def on_event(self, event): """ Обработка события: принтмат сообжение, переводит и отправляет сообщение назад :param event: VkBotMessageEvent :return: None """ if event.type == VkBotEventType.MESSAGE_NEW: log.info('Обработка сообщения') try: if not event.object.text: send_message = 'В сообщении отсутствует текст' elif len(event.object.text) > 500: send_message = 'Максимальная длина текста для перевода: 500 знаков' else: send_message = self.on_translate(event) self.api.messages.send( message=send_message, random_id=random.randint(0, 2**20), peer_id=event.object.peer_id, ) except Exception: log.exception('Ошибка сообщения') else: log.debug('Сообщения такого типа не обрабатываются %s', event.type) def on_translate(self, event): """ Перевод переданного сообщения :param event: VkBotMessageEvent :return: str, переведённый текст """ try: translation = self.translator.translate(event.object.text) except Exception as err: translation = 'Перевод не удался' return translation
def send(MSG, ID): vk.messages.send(message=MSG, peer_id=ID, random_id=0) def send_photo(): attachments = [] session = requests.Session() upload = VkUpload(vk_session) image_url = photos[random.randint(0,len(photos)-1)] image = session.get(image_url, stream=True) photo = upload.photo_messages(photos=image.raw)[0] attachments.append('photo{}_{}'.format(photo['owner_id'], photo['id'])) vk.messages.send(peer_id=id, attachment=','.join(attachments), random_id=0) vk_session = vk_api.VkApi(token='06f16e4dd85ac708936265462fdf23f523c230edafd50378fa0db2d21e0e1165cfa1acc11ae8871c574f2') vk = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, 153439683) photos = []#different urls on images in the internet memb = [] while True: for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW: msg = event.message['text'] if event.from_chat == True: if 'everydayporn' in msg or 'порно от андрея (не гейское)' in msg: id = event.message['peer_id'] if 'команд' in msg.lower(): send('@everydayporn привет - б(анальное) приветствие\n@everydayporn нибучинов - Нибучинов дня\n@everydayporn ' 'номера - список номеров учатсников беседы\n@everydayporn ты сука? - ...\n@everydayporn порно - В процессе ' 'создания..', id) elif 'привет' in msg.lower(): vk.messages.send(peer_id=id, sticker_id='21', random_id=0)
def bot(): vk = vk_api.VkApi(token=tokenbot) vk._auth_token() longpoll = VkBotLongPoll(vk, 171465322) def get_button(label, color, payload=""): return { "action": { "type": "text", "payload": json.dumps(payload), "label": label }, "color": color } keyboardBegin = { "one_time": False, "buttons": [ [get_button(label="Начать", color="primary")], ] } def get_button(label, color, payload=""): return { "action": { "type": "text", "payload": json.dumps(payload), "label": label }, "color": color } keyboard = { "one_time": False, "buttons": [ [get_button(label="⛅Погода", color="positive")], [get_button(label="📋О нас", color="positive"), get_button(label="📫Точки продаж", color="positive")], [get_button(label="💰Акции", color="negative")], [get_button(label="💵Прайс-лист", color="positive")], [get_button(label="💳Ввести промокод", color="negative")], [get_button(label="Наш Instagram", color="negative"), get_button(label="Отзывы", color="negative")], [get_button(label="🖊Сделать заказ", color="primary")] ] } keyboard = json.dumps(keyboard, ensure_ascii=False).encode('utf-8') keyboard = str(keyboard.decode('utf-8')) def get_button(label, color, payload=""): return { "action": { "type": "text", "payload": json.dumps(payload), "label": label }, "color": color } keyboard00000 = { "one_time": False, "buttons": [ ] } keyboard00000 = json.dumps(keyboard00000, ensure_ascii=False).encode('utf-8') keyboard00000 = str(keyboard00000.decode('utf-8')) def get_button(label, color, payload=""): return { "action": { "type": "text", "payload": json.dumps(payload), "label": label }, "color": color } keyboard_2 = { "one_time": False, "buttons": [ [get_button(label="Тула", color="default")], [get_button(label="Prague", color="default")], [get_button(label="Самара", color="default")], [get_button(label="Ижевск", color="default")], [get_button(label="Москва", color="default")], [get_button(label="Казахстан", color="default")], [get_button(label="Екатеринбург", color="default")], [get_button(label="🔙В главное меню", color="negative")] ] } keyboard_2 = json.dumps(keyboard_2, ensure_ascii=False).encode('utf-8') keyboard_2 = str(keyboard_2.decode('utf-8')) def get_button(label, color, payload=""): return { "action": { "type": "text", "payload": json.dumps(payload), "label": label }, "color": color } keyboard_back = { "one_time": False, "buttons": [ [get_button(label="Назад", color="negative")], ] } keyboard_back = json.dumps(keyboard_back, ensure_ascii=False).encode('utf-8') keyboard_back = str(keyboard_back.decode('utf-8')) print('Hello, Gregory!') time.sleep(0.5) print('I am starting the bot.py') a = month = userfrom1 = userfrom2 = userfrom3 = userfromweather1 = userfromweather2 = userfromweather3 = promo1 = promo2 = promo3 = 0 vk.method("messages.send", {"peer_id": 169871363, "message": "Бот запущен!", "keyboard": keyboard00000 , "keyboard": keyboard, "random_id":0}) for event in longpoll.listen(): try: if (event.type == VkBotEventType.MESSAGE_NEW): id = event.object.from_id toid = event.object.peer_id body = event.object.text.lower() if (userfrom1 == id): if (body != 'назад'): telo1 = vk.method("messages.getHistory", {"offset": 0, "count":200, "user_id": id})["items"][0]["text"] vk.method("messages.send", {"peer_id": 169871363, "message": str(telo1) + "\nОтправитель vk.com/id" + str(id), "random_id": 0}) vk.method("messages.send", {"peer_id": toid, "message": "Ваше сообщение отправлено! Ожидайте ответа.", "random_id": 0, "keyboard":keyboard00000 , "keyboard":keyboard}) userfrom1 = 0 else: userfrom1 = 0 vk.method("messages.send", {"peer_id": toid, "message": "Выберите кнопку!", "keyboard":keyboard00000 , "keyboard":keyboard, "random_id": 0}) elif (userfrom2 == id): if (body != 'назад'): telo2 = vk.method("messages.getHistory", {"offset": 0, "count":200, "user_id": id})["items"][0]["text"] vk.method("messages.send", {"peer_id": 169871363, "message": str(telo2) + "\nОтправитель vk.com/id" + str(id), "random_id": 0}) vk.method("messages.send", {"peer_id": toid, "message": "Ваше сообщение отправлено! Ожидайте ответа.", "random_id": 0, "keyboard":keyboard00000 , "keyboard":keyboard}) userfrom2 = 0 else: userfrom2 = 0 vk.method("messages.send", {"peer_id": toid, "message": "Выберите кнопку!", "keyboard":keyboard00000 , "keyboard":keyboard, "random_id": 0}) elif (userfrom3 == id): if (body != 'назад'): telo3 = vk.method("messages.getHistory", {"offset": 0, "count":200, "user_id": id})["items"][0]["text"] vk.method("messages.send", {"peer_id": 169871363, "message": str(telo3) + "\nОтправитель vk.com/id" + str(id), "random_id": 0}) vk.method("messages.send", {"peer_id": toid, "message": "Ваше сообщение отправлено! Ожидайте ответа.", "random_id": 0, "keyboard":keyboard00000 , "keyboard":keyboard}) userfrom3 = 0 else: userfrom3 = 0 vk.method("messages.send", {"peer_id": toid, "message": "Выберите кнопку!", "keyboard":keyboard00000 , "keyboard":keyboard, "random_id": 0}) elif (userfromweather1 == id): if (body != 'назад'): city1 = vk.method("messages.getHistory", {"offset": 0, "count":200, "user_id": id})["items"][0]["text"] url = 'https://yandex.ru/yandsearch?clid=1923018&text=погода в ' + city1 page1 = requests.get(url) new_news1 = [] news1 = 0 soup1 = BeautifulSoup(page1.text, "html.parser") news1 = soup1.findAll('div', class_='weather-forecast__current-temp') if len(news1) > 0: for i in range(len(news1)): vk.method("messages.send", {"peer_id": toid, "message": "Сейчас в городе " + city1 + " " + news1[i].text, "random_id": 0, "keyboard":keyboard00000 , "keyboard":keyboard}) else: vk.method("messages.send", {"peer_id": toid, "message": "Город не найден", "random_id": 0, "keyboard":keyboard00000 , "keyboard":keyboard}) userfromweather1 = 0 else: userfromweather1 = 0 vk.method("messages.send", {"peer_id": toid, "message": "Выберите кнопку!", "keyboard":keyboard00000 , "keyboard":keyboard, "random_id": 0}) elif (userfromweather2 == id): if (body != 'назад'): city2 = vk.method("messages.getHistory", {"offset": 0, "count":200, "user_id": id})["items"][0]["text"] url = 'https://yandex.ru/yandsearch?clid=1923018&text=погода в ' + city2 page2 = requests.get(url) new_news2 = [] news2 = 0 soup2 = BeautifulSoup(page2.text, "html.parser") news2 = soup2.findAll('div', class_='weather-forecast__current-temp') if len(news2) > 0: for i in range(len(news2)): vk.method("messages.send", {"peer_id": toid, "message": "Сейчас в городе " + city2 + " " + news2[i].text, "random_id": 0, "keyboard":keyboard00000 , "keyboard":keyboard}) else: vk.method("messages.send", {"peer_id": toid, "message": "Город не найден", "random_id": 0, "keyboard":keyboard00000 , "keyboard":keyboard}) userfromweather2 = 0 else: userfromweather2 = 0 vk.method("messages.send", {"peer_id": toid, "message": "Выберите кнопку!", "keyboard":keyboard00000 , "keyboard":keyboard, "random_id": 0}) elif (userfromweather3 == id): if (body != 'назад'): city3 = vk.method("messages.getHistory", {"offset": 0, "count":200, "user_id": id})["items"][0]["text"] url3 = 'https://yandex.ru/yandsearch?clid=1923018&text=погода в ' + city3 page3 = requests.get(url3) new_news3 = [] news3 = 0 soup3 = BeautifulSoup(page3.text, "html.parser") news3 = soup3.findAll('div', class_='weather-forecast__current-temp') if len(news3) > 0: for i in range(len(news3)): vk.method("messages.send", {"peer_id": toid, "message": "Сейчас в городе " + city3 + " " + news3[i].text, "random_id": 0, "keyboard":keyboard00000 , "keyboard":keyboard}) else: vk.method("messages.send", {"peer_id": toid, "message": "Неверное имя города", "random_id": 0, "keyboard":keyboard00000 , "keyboard":keyboard}) userfromweather3 = 0 else: userfromweather3 = 0 vk.method("messages.send", {"peer_id": toid, "message": "Выберите кнопку!", "keyboard":keyboard00000 , "keyboard":keyboard, "random_id": 0}) elif (promo1 == id): if (body != 'назад'): if (body == 'amicus'): vk.method("messages.send", {"peer_id": 169871363, "message": "Пользователь vk.com/id" + str(id) + " активировал скидку 5% по промокоду.", "random_id": 0}) vk.method("messages.send", {"peer_id": toid, "message": "Промокод на 5% активирован.", "random_id": 0, "keyboard":keyboard00000 , "keyboard":keyboard}) promo1 = 0 elif (body == 'frater'): vk.method("messages.send", {"peer_id": 169871363, "message": "Пользователь vk.com/id" + str(id) +" активировал скидку 10% по промокоду. ", "random_id": 0}) vk.method("messages.send", {"peer_id": toid, "message": "Промокод на 10% активирован.", "random_id": 0, "keyboard":keyboard00000 , "keyboard":keyboard}) promo1 = 0 else: promo1 = 0 vk.method("messages.send", {"peer_id": toid, "message": "Такого промокода не существует!", "keyboard":keyboard, "random_id": 0}) else: promo1 = 0 vk.method("messages.send", {"peer_id": toid, "message": "Выберите кнопку!", "keyboard":keyboard00000 , "keyboard":keyboard, "random_id": 0}) elif (promo2 == id): if (body != 'назад'): if (body == 'amicus'): vk.method("messages.send", {"peer_id": 169871363, "message": "Пользователь vk.com/id" + str(id) + " активировал скидку 5% по промокоду.", "random_id": 0}) vk.method("messages.send", {"peer_id": toid, "message": "Промокод на 5% активирован.", "random_id": 0, "keyboard":keyboard00000 , "keyboard":keyboard}) promo2 = 0 elif (body == 'frater'): vk.method("messages.send", {"peer_id": 169871363, "message": "Пользователь vk.com/id" + str(id) +" активировал скидку 10% по промокоду. ", "random_id": 0}) vk.method("messages.send", {"peer_id": toid, "message": "Промокод на 10% активирован.", "random_id": 0, "keyboard":keyboard00000 , "keyboard":keyboard}) promo2 = 0 else: promo2 = 0 vk.method("messages.send", {"peer_id": toid, "message": "Такого промокода не существует!", "keyboard":keyboard, "random_id": 0}) else: promo2 = 0 vk.method("messages.send", {"peer_id": toid, "message": "Выберите кнопку!", "keyboard":keyboard00000 , "keyboard":keyboard, "random_id": 0}) elif (promo3 == id): if (body != 'назад'): if (body == 'amicus'): vk.method("messages.send", {"peer_id": 169871363, "message": "Пользователь vk.com/id" + str(id) + " активировал скидку 5% по промокоду.", "random_id": 0}) vk.method("messages.send", {"peer_id": toid, "message": "Промокод на 5% активирован.", "random_id": 0, "keyboard":keyboard00000 , "keyboard":keyboard}) promo3 = 0 elif (body == 'frater'): vk.method("messages.send", {"peer_id": 169871363, "message": "Пользователь vk.com/id" + str(id) +" активировал скидку 10% по промокоду. ", "random_id": 0}) vk.method("messages.send", {"peer_id": toid, "message": "Промокод на 10% активирован.", "random_id": 0, "keyboard":keyboard00000 , "keyboard":keyboard}) promo3 = 0 else: promo3 = 0 vk.method("messages.send", {"peer_id": toid, "message": "Такого промокода не существует!", "keyboard":keyboard, "random_id": 0}) else: promo3 = 0 vk.method("messages.send", {"peer_id": toid, "message": "Выберите кнопку!", "keyboard":keyboard00000 , "keyboard":keyboard, "random_id": 0}) elif body.find('погода') != -1: if (userfromweather1 == 0): userfromweather1 = vk.method("messages.getHistory", {"offset": 0, "count":200, "user_id": id})["items"][0]["from_id"] vk.method("messages.send", {"peer_id": toid, "message": "Введите название города", "keyboard": keyboard_back, "random_id": 0}) elif (userfromweather2 == 0): userfromweather2 = vk.method("messages.getHistory", {"offset": 0, "count":200, "user_id": id})["items"][0]["from_id"] vk.method("messages.send", {"peer_id": toid, "message": "Введите название города", "keyboard": keyboard_back, "random_id": 0}) elif (userfromweather3 == 0): userfromweather3 = vk.method("messages.getHistory", {"offset": 0, "count":200, "user_id": id})["items"][0]["from_id"] vk.method("messages.send", {"peer_id": toid, "message": "Введите название города", "keyboard": keyboard_back, "random_id": 0}) elif body.find('сделать заказ') != -1: if (userfrom1 == 0): userfrom1 = vk.method("messages.getHistory", {"offset": 0, "count":200, "user_id": id})["items"][0]["from_id"] vk.method("messages.send", {"peer_id": toid, "message": "Введите сообщение", "keyboard": keyboard_back, "random_id": 0}) elif (userfrom2 == 0): userfrom2 = vk.method("messages.getHistory", {"offset": 0, "count":200, "user_id": id})["items"][0]["from_id"] vk.method("messages.send", {"peer_id": toid, "message": "Введите сообщение", "keyboard": keyboard_back, "random_id": 0}) elif (userfrom3 == 0): userfrom3 = vk.method("messages.getHistory", {"offset": 0, "count":200, "user_id": id})["items"][0]["from_id"] vk.method("messages.send", {"peer_id": toid, "message": "Введите сообщение", "keyboard": keyboard_back, "random_id": 0}) else: vk.method("messages.send", {"peer_id": toid, "message": "Система перегружена, повторите попытку через 10 секунд", "random_id": 0}) elif body.find('точки продаж') != -1: vk.method("messages.send", {"peer_id": toid, "message": "Выберите город", "random_id": 0, "keyboard": keyboard00000, "keyboard": keyboard_2}) elif body.find('акции') != -1: vk.method("messages.send", {"peer_id": toid, "message": "⭐Подпишитесь на наш аккаунт Instagram и получите скидку 5%\ninstagram.com/hookah.mason\n\n📦Спецпредложение на первую оптовую закупку\napi.whatsapp.com/send?phone=79854474442", "random_id": 0}) elif body.find('главное меню') != -1: vk.method("messages.send", {"peer_id": toid, "message": "Выберите кнопку!", "random_id": 0, "keyboard": keyboard00000, "keyboard": keyboard}) elif body.find('prague') != -1: vk.method("messages.send", {"peer_id": toid, "message": "Мы находимся по адресу:\n🏬iSmoke Store Karlín\n🗺Křižíkova 489/66, Praha 8 - Karlín\n\n🏬iSmoke Store Dejvice\n🗺Evropská 1727/53, Praha 6 - Dejvice\n\n🏬iSmoke Garage Outlet\n🗺Mirovická 520/1, Praha 8 - Kobylisy\n\n🏬iSmoke Store Brno\n🗺Husova 8a, Brno-město\n\n📱Тел: +420 774 40 00 40\n\n💻ismoke.cz\n📷facebook.com/ismoke.cz", "random_id": 0, "attachment":"photo-169871449_456239102"}) elif body.find('тула') != -1: vk.method("messages.send", {"peer_id": toid, "message": "Мы находимся по адресу:\n🏬ТЦ Тройка\n🗺ул. Каминского, 24В\n📱Тел: +7 (999) 775-10-63\n\n💻vk.com/bambuk_tula\n📷instagram.com/bambuk_tula", "random_id": 0, "attachment":"photo-169871449_456239103"}) elif body.find('самара') != -1: vk.method("messages.send", {"peer_id": toid, "message": "Мы находимся по адресу:\n🏬Магазин 'Шахта'\n🗺ул. Ново-Садовая, 271\n📱Тел: +7 (986) 950-36-00\n\n💻vk.com/shahta_63\n📷instagram.com/shahta63", "random_id": 0, "attachment":"photo-169871449_456239104"}) elif body.find('москва') != -1: vk.method("messages.send", {"peer_id": toid, "message": "Мы находимся по адресу:\n🏬Кальянный магазин 'Smoke Lab'\n🗺ул. 4-я Тверская-Ямская, 7(цокольный этаж)\n📱Тел: +7 (903) 795-59-89\n📱Тел: +7 (495) 795-59-89 \n\n💻smokelab.org\n📷instagram.com/smoke_lab", "random_id": 0, "attachment":"photo-169871449_456239105"}) elif body.find('екатеринбург') != -1: vk.method("messages.send", {"peer_id": toid, "message": "Мы находимся по адресу:\n🏬BAR&HOOKAHSHOP\n🗺ул. Декабристов, 20\n📱Тел: +7 (932) 122-14-60\n\n🏬HOOKAHSHOP&COFFEE\n🗺ул.Крауля, 8\n📱Тел: +7 (903) 08-61-349 \n\n💻vk.com/hzhookah\n📷instagram.com/hazehookahshop", "random_id": 0, "attachment":"photo-169871449_456239106"}) elif body.find('ижевск') != -1: vk.method("messages.send", {"peer_id": toid, "message": "Мы находимся по адресу:\n🏬S Club Shop\n🗺ул. Карла Маркса 177б (бц Арбат)\n📱Тел: +7 (912) 021-24-21\n\n💻vk.com/izh.smoke.club.shop\n📷instagram.com/sclubshop\n\n\n🏬Бар 'Сегодня можно'\n🗺ул. Советская, 14 \n📱Тел: 643364\n\n💻vk.com/segodnyamozhno\n💻vk.com/lounge_bsm\n📷instagram.com/segodnya_mozhno_lounge\n📷instagram.com/segodnya_mozhno\n\n\n🏬Берлога Shop&Lounge\n🗺ул. Красногеройская 63б\n📱Тел: +7 (912) 021-34-12\n\n💻vk.com/club171797380\n📷instagram.com/berloga_lounge_shop", "random_id": 0, "attachment":"photo-169871449_456239106"}) elif (body.find('прайс') != -1) or (body.find('цены') != -1) or (body.find('цена') != -1) or (body.find('стоимость') != -1) or (body.find('чаши') != -1) or (body.find('чаша') != -1) or (body.find('чашка') != -1) or (body.find('чашки')!= -1): vk.method("messages.send", {"peer_id": toid, "message": "", "random_id": 0, "attachment":"photo-169871449_457239266, photo-169871449_457239267, photo-169871449_457239268, photo-169871449_457239269, photo-169871449_457239270"}) elif body.find('казахстан') != -1: vk.method("messages.send", {"peer_id": toid, "message": """ Мы находимся по адресу: 🏬Rotana Shop Almaty 🗺Сейфуллина проспект, 410 📱Тел: +7 (701) 888-72-77 🏬Rotana Shop Astana 📱Тел: +7 (708) 336-44-41 💻vk.com/hookah_service_kz 💻www.hookahshop.kz """, "random_id": 0, "attachment":"photo-169871449_456239102"}) elif body.find('о нас') != -1: vk.method("messages.send", {"peer_id": toid, "message": "Основаная цель нашего производства - создавать максимально качественную продукцию, не имеющую аналогов.\nМы постарались учесть все критерии качества, которые позволяют нам смело заявить, что вскоре наша продукция займет лидирующую позицию на рынке.\n95% процентов, что после первой забивки вы забудете про все остальные чаши. \n\n◾ Максимально быстрый прогрев.\n\n◾ Усиленная вкусопередача.\n\n◾ Легко мыть, не трескаются от резких перепадов температуры.\n\n◾ Специальная техника отливки позволяет максимально контролировать жар.\n\n◾ Состав и обработка не имеющие аналогов", "random_id": 0, "keyboard": keyboard00000, "keyboard": keyboard, "attachment":"photo-169871449_456239101"}) elif body.find('чаши') != -1: vk.method("messages.send", {"peer_id": toid, "message": "Воспользуйтесь кнопкой 'Прайс-лист' или 'сделать заказ'.", "random_id": 0}) elif body.find('привет') != -1: vk.method("messages.send", {"peer_id": toid, "message": "Привет! Воспользуйся клавиатурой для навигации!", "keyboard": keyboard00000, "keyboard": keyboard, "random_id": 0}) elif body.find('начать') != -1: vk.method("messages.send", {"peer_id": toid, "message": "Привет! Воспользуйся клавиатурой для навигации!", "keyboard": keyboard00000, "keyboard": keyboard, "random_id": 0}) elif body == 'назад': vk.method("messages.send", {"peer_id": toid, "message": "", "keyboard":keyboard, "random_id": 0}) elif body.find('instagram') != -1: vk.method("messages.send", {"peer_id": toid, "message": "instagram.com/hookah.mason", "keyboard":keyboard, "random_id": 0}) elif body.find('отзывы') != -1: vk.method("messages.send", {"peer_id": toid, "message": "vk.com/topic-169871449_39198416", "keyboard":keyboard, "random_id": 0}) elif body.find('промокод') != -1: if (promo1 == 0): promo1 = vk.method("messages.getHistory", {"offset": 0, "count":200, "user_id": id})["items"][0]["from_id"] vk.method("messages.send", {"peer_id": toid, "message": "Введите промокод", "keyboard": keyboard_back, "random_id": 0}) elif (promo2 == 0): promo2 = vk.method("messages.getHistory", {"offset": 0, "count":200, "user_id": id})["items"][0]["from_id"] vk.method("messages.send", {"peer_id": toid, "message": "Введите промокод", "keyboard": keyboard_back, "random_id": 0}) elif (promo3 == 0): promo3 = vk.method("messages.getHistory", {"offset": 0, "count":200, "user_id": id})["items"][0]["from_id"] vk.method("messages.send", {"peer_id": toid, "message": "Введите промокод", "keyboard": keyboard_back, "random_id": 0}) else: vk.method("messages.send", {"peer_id": toid, "message": "Система перегружена, повторите попытку через 10 секунд", "random_id": 0}) else: vk.method("messages.send", {"peer_id": toid, "message": "Эта команда мне неизвестна.", "random_id": 0, "keyboard": keyboard00000, "keyboard": keyboard}) except vk_api.AuthError as error_msg: print(error_msg) vk.method("messages.send", {"peer_id": 169871363, "message": 'перезагрузка', "random_id":0})
def isAdmin(user_id): admins = os.listdir("./admins/") for admin in admins: if (str(user_id) == str(os.path.basename(admin))): return True return False vk = vk_api.VkApi(token=tokens.token #Вставь свой ) connected_peers = [] peers = os.listdir("./admins/") for peer in peers: connected_peers.append(int(os.path.basename(peer))) longpoll = VkBotLongPoll(vk, tokens.groupID, wait=259200) #Вставь свой ID группы в пустое поле hello = [ "Приветики)", "Hello", "👋🏻", "Привет!", "Здравствуй", "Приветики) Знаешь как пользоваться ботом?) Нет? Тогда напиши /help))" ] otvet = [ "Да)?", "Ммм?", "Я знаю, что ты хочешь 😏", "Дай угадать, зачем ты меня зoвешь 😉", "Да?", "Слушаю 😊", "Разработчик бота не несет никакой ответственности за его содержимое!" ] f = open("./pic", "r") pic = int(f.read()) f.close() print("STARTED") log("✅ Hentai Bot успешно запущен ✅") for event in longpoll.listen():
def zakaz(): vk = vk_api.VkApi(token=tokenzakaz) vk._auth_token() longpoll = VkBotLongPoll(vk, 169871449) def get_button(label, color, payload=""): return { "action": { "type": "text", "payload": json.dumps(payload), "label": label }, "color": color } keyboardBegin = { "one_time": False, "buttons": [ [get_button(label="Начать", color="primary")], ] } def get_button(label, color, payload=""): return { "action": { "type": "text", "payload": json.dumps(payload), "label": label }, "color": color } keyboard = { "one_time": False, "buttons": [[ get_button(label="📋О нас", color="positive"), get_button(label="📫Точки продаж", color="positive") ], [get_button(label="💰Акции", color="negative")], [get_button(label="💵Прайс-лист", color="positive")], [get_button(label="💳Ввести промокод", color="negative")], [ get_button(label="Наш Instagram", color="negative"), get_button(label="Отзывы", color="negative") ], [get_button(label="🖊Сделать заказ", color="primary")]] } keyboard = json.dumps(keyboard, ensure_ascii=False).encode('utf-8') keyboard = str(keyboard.decode('utf-8')) def get_button(label, color, payload=""): return { "action": { "type": "text", "payload": json.dumps(payload), "label": label }, "color": color } keyboard00000 = {"one_time": False, "buttons": []} keyboard00000 = json.dumps(keyboard00000, ensure_ascii=False).encode('utf-8') keyboard00000 = str(keyboard00000.decode('utf-8')) def get_button(label, color, payload=""): return { "action": { "type": "text", "payload": json.dumps(payload), "label": label }, "color": color } keyboard_2 = { "one_time": False, "buttons": [[get_button(label="Тула", color="default")], [get_button(label="Prague", color="default")], [get_button(label="Самара", color="default")], [get_button(label="Ижевск", color="default")], [get_button(label="Москва", color="default")], [get_button(label="Саратов", color="default")], [get_button(label="Екатеринбург", color="default")], [get_button(label="Казахстан", color="default")], [get_button(label="🔙В главное меню", color="negative")]] } keyboard_2 = json.dumps(keyboard_2, ensure_ascii=False).encode('utf-8') keyboard_2 = str(keyboard_2.decode('utf-8')) def get_button(label, color, payload=""): return { "action": { "type": "text", "payload": json.dumps(payload), "label": label }, "color": color } keyboard_msk = { "one_time": False, "buttons": [[get_button(label="Москва SmokeLab", color="default")], [get_button(label="Москва DeerKalyan", color="default")], [get_button(label="Москва Hookah Market", color="default")], [get_button(label="🔙В главное меню", color="negative")]] } keyboard_msk = json.dumps(keyboard_msk, ensure_ascii=False).encode('utf-8') keyboard_msk = str(keyboard_msk.decode('utf-8')) def get_button(label, color, payload=""): return { "action": { "type": "text", "payload": json.dumps(payload), "label": label }, "color": color } keyboard_back = { "one_time": False, "buttons": [ [get_button(label="Назад", color="negative")], ] } keyboard_back = json.dumps(keyboard_back, ensure_ascii=False).encode('utf-8') keyboard_back = str(keyboard_back.decode('utf-8')) print('Hello, Gregory!') time.sleep(0.5) print('I am starting the bot') a = month = userfrom1 = userfrom2 = userfrom3 = promo1 = promo2 = promo3 = 0 ##vk.method("messages.send", {"peer_id": 169871363, "message": "Бот запущен!", "keyboard": keyboard00000 , "keyboard": keyboard, "random_id":0}) for event in longpoll.listen(): try: if (event.type == VkBotEventType.MESSAGE_NEW): id = event.object.from_id toid = event.object.peer_id body = event.object.text.lower() if (userfrom1 == id): if (body != 'назад'): message_id1 = vk.method("messages.getHistory", { "offset": 0, "count": 200, "user_id": id })["items"][0]["id"] vk.method( "messages.send", { "peer_id": 26220501, "message": "Новое сообщение!", "forward_messages": message_id1, "random_id": 0 }) vk.method( "messages.send", { "peer_id": toid, "message": "Ваше сообщение отправлено! Ожидайте ответа.", "random_id": 0, "keyboard": keyboard00000, "keyboard": keyboard }) userfrom1 = 0 else: userfrom1 = 0 vk.method( "messages.send", { "peer_id": toid, "message": "Выберите кнопку!", "keyboard": keyboard00000, "keyboard": keyboard, "random_id": 0 }) elif (userfrom2 == id): if (body != 'назад'): message_id2 = vk.method("messages.getHistory", { "offset": 0, "count": 200, "user_id": id })["items"][0]["id"] vk.method( "messages.send", { "peer_id": 26220501, "message": "Новое сообщение!", "forward_messages": message_id2, "random_id": 0 }) vk.method( "messages.send", { "peer_id": toid, "message": "Ваше сообщение отправлено! Ожидайте ответа.", "random_id": 0, "keyboard": keyboard00000, "keyboard": keyboard }) userfrom2 = 0 else: userfrom2 = 0 vk.method( "messages.send", { "peer_id": toid, "message": "Выберите кнопку!", "keyboard": keyboard00000, "keyboard": keyboard, "random_id": 0 }) elif (userfrom3 == id): if (body != 'назад'): message_id3 = vk.method("messages.getHistory", { "offset": 0, "count": 200, "user_id": id })["items"][0]["id"] vk.method( "messages.send", { "peer_id": 26220501, "message": "Новое сообщение!", "forward_messages": message_id3, "random_id": 0 }) vk.method( "messages.send", { "peer_id": toid, "message": "Ваше сообщение отправлено! Ожидайте ответа.", "random_id": 0, "keyboard": keyboard00000, "keyboard": keyboard }) userfrom3 = 0 else: userfrom3 = 0 vk.method( "messages.send", { "peer_id": toid, "message": "Выберите кнопку!", "keyboard": keyboard00000, "keyboard": keyboard, "random_id": 0 }) elif (promo1 == id): if (body != 'назад'): if (body == 'amicus'): vk.method( "messages.send", { "peer_id": 26220501, "message": "Пользователь vk.com/id" + str(id) + " активировал скидку 5% по промокоду.", "random_id": 0 }) vk.method( "messages.send", { "peer_id": toid, "message": "Промокод на 5% активирован.", "random_id": 0, "keyboard": keyboard00000, "keyboard": keyboard }) promo1 = 0 elif (body == 'frater'): vk.method( "messages.send", { "peer_id": 26220501, "message": "Пользователь vk.com/id" + str(id) + " активировал скидку 10% по промокоду. ", "random_id": 0 }) vk.method( "messages.send", { "peer_id": toid, "message": "Промокод на 10% активирован.", "random_id": 0, "keyboard": keyboard00000, "keyboard": keyboard }) promo1 = 0 else: promo1 = 0 vk.method( "messages.send", { "peer_id": toid, "message": "Такого промокода не существует!", "keyboard": keyboard, "random_id": 0 }) else: promo1 = 0 vk.method( "messages.send", { "peer_id": toid, "message": "Выберите кнопку!", "keyboard": keyboard00000, "keyboard": keyboard, "random_id": 0 }) elif (promo2 == id): if (body != 'назад'): if (body == 'amicus'): vk.method( "messages.send", { "peer_id": 26220501, "message": "Пользователь vk.com/id" + str(id) + " активировал скидку 5% по промокоду.", "random_id": 0 }) vk.method( "messages.send", { "peer_id": toid, "message": "Промокод на 5% активирован.", "random_id": 0, "keyboard": keyboard00000, "keyboard": keyboard }) promo2 = 0 elif (body == 'frater'): vk.method( "messages.send", { "peer_id": 26220501, "message": "Пользователь vk.com/id" + str(id) + " активировал скидку 10% по промокоду. ", "random_id": 0 }) vk.method( "messages.send", { "peer_id": toid, "message": "Промокод на 10% активирован.", "random_id": 0, "keyboard": keyboard00000, "keyboard": keyboard }) promo2 = 0 else: promo2 = 0 vk.method( "messages.send", { "peer_id": toid, "message": "Такого промокода не существует!", "keyboard": keyboard, "random_id": 0 }) else: promo2 = 0 vk.method( "messages.send", { "peer_id": toid, "message": "Выберите кнопку!", "keyboard": keyboard00000, "keyboard": keyboard, "random_id": 0 }) elif (promo3 == id): if (body != 'назад'): if (body == 'amicus'): vk.method( "messages.send", { "peer_id": 26220501, "message": "Пользователь vk.com/id" + str(id) + " активировал скидку 5% по промокоду.", "random_id": 0 }) vk.method( "messages.send", { "peer_id": toid, "message": "Промокод на 5% активирован.", "random_id": 0, "keyboard": keyboard00000, "keyboard": keyboard }) promo3 = 0 elif (body == 'frater'): vk.method( "messages.send", { "peer_id": 26220501, "message": "Пользователь vk.com/id" + str(id) + " активировал скидку 10% по промокоду. ", "random_id": 0 }) vk.method( "messages.send", { "peer_id": toid, "message": "Промокод на 10% активирован.", "random_id": 0, "keyboard": keyboard00000, "keyboard": keyboard }) promo3 = 0 else: promo3 = 0 vk.method( "messages.send", { "peer_id": toid, "message": "Такого промокода не существует!", "keyboard": keyboard, "random_id": 0 }) else: promo3 = 0 vk.method( "messages.send", { "peer_id": toid, "message": "Выберите кнопку!", "keyboard": keyboard00000, "keyboard": keyboard, "random_id": 0 }) elif body.find('сделать заказ') != -1: if (userfrom1 == 0): userfrom1 = vk.method("messages.getHistory", { "offset": 0, "count": 200, "user_id": id })["items"][0]["from_id"] vk.method( "messages.send", { "peer_id": toid, "message": 'Введите сообщение. Для выхода нажмите на кнопку "Назад"', "keyboard": keyboard_back, "random_id": 0 }) elif (userfrom2 == 0): userfrom2 = vk.method("messages.getHistory", { "offset": 0, "count": 200, "user_id": id })["items"][0]["from_id"] vk.method( "messages.send", { "peer_id": toid, "message": "Введите сообщение", "keyboard": keyboard_back, "random_id": 0 }) elif (userfrom3 == 0): userfrom3 = vk.method("messages.getHistory", { "offset": 0, "count": 200, "user_id": id })["items"][0]["from_id"] vk.method( "messages.send", { "peer_id": toid, "message": "Введите сообщение", "keyboard": keyboard_back, "random_id": 0 }) else: vk.method( "messages.send", { "peer_id": toid, "message": "Система перегружена, повторите попытку через 10 секунд", "random_id": 0 }) elif body.find('точки продаж') != -1: vk.method( "messages.send", { "peer_id": toid, "message": "Выберите город", "random_id": 0, "keyboard": keyboard00000, "keyboard": keyboard_2 }) elif body.find('акции') != -1: vk.method( "messages.send", { "peer_id": toid, "message": "⭐Подпишитесь на наш аккаунт Instagram и получите скидку 5%\ninstagram.com/hookah.mason\n\n📦Спецпредложение на первую оптовую закупку\napi.whatsapp.com/send?phone=79854474442", "random_id": 0 }) elif body.find('главное меню') != -1: vk.method( "messages.send", { "peer_id": toid, "message": "Выберите кнопку!", "random_id": 0, "keyboard": keyboard00000, "keyboard": keyboard }) elif body.find('prague') != -1: vk.method( "messages.send", { "peer_id": toid, "message": "Мы находимся по адресу:\n🏬iSmoke Store Karlín\n🗺Křižíkova 489/66, Praha 8 - Karlín\n\n🏬iSmoke Store Dejvice\n🗺Evropská 1727/53, Praha 6 - Dejvice\n\n🏬iSmoke Garage Outlet\n🗺Mirovická 520/1, Praha 8 - Kobylisy\n\n🏬iSmoke Store Brno\n🗺Husova 8a, Brno-město\n\n📱Тел: +420 774 40 00 40\n\n💻ismoke.cz\n📷facebook.com/ismoke.cz", "random_id": 0, "attachment": "photo-169871449_456239102" }) elif body.find('тула') != -1: vk.method( "messages.send", { "peer_id": toid, "message": "Мы находимся по адресу:\n🏬ТЦ Тройка\n🗺ул. Каминского, 24В\n📱Тел: +7 (999) 775-10-63\n\n💻vk.com/bambuk_tula\n📷instagram.com/bambuk_tula", "random_id": 0, "attachment": "photo-169871449_456239103" }) elif body.find('самара') != -1: vk.method( "messages.send", { "peer_id": toid, "message": "Мы находимся по адресу:\n🏬Магазин 'Шахта'\n🗺ул. Ново-Садовая, 271\n📱Тел: +7 (986) 950-36-00\n\n💻vk.com/shahta_63\n📷instagram.com/shahta63", "random_id": 0, "attachment": "photo-169871449_456239104" }) elif body == 'москва': vk.method( "messages.send", { "peer_id": toid, "message": "Выберите магазин в Москве", "keyboard": keyboard00000, "keyboard": keyboard_msk, "random_id": 0 }) elif body.find('москва smokelab') != -1: vk.method( "messages.send", { "peer_id": toid, "message": "Мы находимся по адресу:\n🏬Кальянный магазин 'Smoke Lab'\n🗺ул. 4-я Тверская-Ямская, 7(цокольный этаж)\n📱Тел: +7 (903) 795-59-89\n📱Тел: +7 (495) 795-59-89 \n\n💻smokelab.org\n📷instagram.com/smoke_lab", "random_id": 0, "attachment": "photo-169871449_456239105" }) elif body.find('москва deerkalyan') != -1: vk.method( "messages.send", { "peer_id": toid, "message": """ 🏢Deerkalyan «Тимирязевская» ул.Яблочкова 19Г, ТЦ «Депо Молл», 2 этаж. м.Тимирязевская Ежедневно 10:00 - 21:00 🏢Deerkalyan «Отрадное». ул.Хачатуряна 15Б, ТЦ «ВВС», 2 этаж. м. Отрадное Ежедневно 10:00 - 22:00 🏢Deerkalyan «Бескудниково». Бескудниковский бульвар 6к2, м. Верхние Лихоборы Ежедневно 11:00 - 23:00 🏢Deerkalyan "Семеновская", измайловский вал д2,м.Семеновская. Ежедневно с 8-00 до 23-00 +7(495) 136-72-37 deerkalyan.ru instagram.com/deerkalyan_msk/""", "random_id": 0, "attachment": "photo-169871449_456239105" }) elif body.find('екатеринбург') != -1: vk.method( "messages.send", { "peer_id": toid, "message": "Мы находимся по адресу:\n🏬BAR&HOOKAHSHOP\n🗺ул. Декабристов, 20\n📱Тел: +7 (932) 122-14-60\n\n🏬HOOKAHSHOP&COFFEE\n🗺ул.Крауля, 8\n📱Тел: +7 (903) 08-61-349 \n\n💻vk.com/hzhookah\n📷instagram.com/hazehookahshop", "random_id": 0, "attachment": "photo-169871449_456239106" }) elif body.find('ижевск') != -1: vk.method( "messages.send", { "peer_id": toid, "message": "Мы находимся по адресу:\n🏬S Club Shop\n🗺ул. Карла Маркса 177б (бц Арбат)\n📱Тел: +7 (912) 021-24-21\n\n💻vk.com/izh.smoke.club.shop\n📷instagram.com/sclubshop\n\n\n🏬Бар 'Сегодня можно'\n🗺ул. Советская, 14 \n📱Тел: 643364\n\n💻vk.com/segodnyamozhno\n💻vk.com/lounge_bsm\n📷instagram.com/segodnya_mozhno_lounge\n📷instagram.com/segodnya_mozhno\n\n\n🏬Берлога Shop&Lounge\n🗺ул. Красногеройская 63б\n📱Тел: +7 (912) 021-34-12\n\n💻vk.com/club171797380\n📷instagram.com/berloga_lounge_shop", "random_id": 0, "attachment": "photo-169871449_456239106" }) elif (body.find('прайс') != -1) or (body.find('цены') != -1) or (body.find('цена') != -1) or ( body.find('стоимость') != -1) or (body.find('чаши') != -1) or (body.find('чаша') != -1) or ( body.find('чашка') != -1) or ( body.find('чашки') != -1): vk.method( "messages.send", { "peer_id": toid, "message": "", "random_id": 0, "attachment": "photo-169871449_457239266,photo-169871449_457239267,photo-169871449_457239268,photo-169871449_457239269,photo-169871449_457239270" }) elif body.find('казахстан') != -1: vk.method( "messages.send", { "peer_id": toid, "message": """ Мы находимся по адресу: 🏬Rotana Shop Almaty 🗺Сейфуллина проспект, 410 📱Тел: +7 (701) 888-72-77 🏬Rotana Shop Astana 📱Тел: +7 (708) 336-44-41 💻vk.com/hookah_service_kz 💻www.hookahshop.kz """, "random_id": 0, "attachment": "photo-169871449_456239102" }) elif body.find('саратов') != -1: vk.method( "messages.send", { "peer_id": toid, "message": """ 🏢Шишка shop, Саратов 🗺Чапаева,2 📱+7 (8452) 907-507 10:00 - 03:00 🗺Проспект 50 лет октября,122 +7 (8452) 593-444 13:00-01:00 🗺Усть-Курдюмская, 7б 📱+7 (8452) 52-02–42 13:00-01:00""", "random_id": 0, "attachment": "photo-169871449_456239106" }) elif body.find('москва hookah market') != -1: vk.method( "messages.send", { "peer_id": toid, "message": """ 🗺Ул. Мясницкая 24/7 стр. 1 ст. м. Чистые пруды с 13:00 до 22:00. 📱+7(926)407-20-10 🗺Пр-т Мира, 118 метро Алексеевская с 13:00 до 22:00 📱+7 (968) 407-01-10 🗺Ул Барклая, 8 ст. м. Багратионовская с 12:00 до 22:00 📱+7 (965) 400-10-20 🗺Ул. Маршала Бирюзова 12 ст. м. Октярбьское Поле с 11:00 до 22:00 📱+7 (965) 410-10-20 🗺Ул. Таганская 1/2 стр. 2 (2 этаж) ст. м. Марксистская с 12:00 до 23:00 📱+ 7(965) 420-10-20 """, "random_id": 0, "attachment": "photo-169871449_456239102" }) elif body.find('о нас') != -1: vk.method( "messages.send", { "peer_id": toid, "message": "Основаная цель нашего производства - создавать максимально качественную продукцию, не имеющую аналогов.\nМы постарались учесть все критерии качества, которые позволяют нам смело заявить, что вскоре наша продукция займет лидирующую позицию на рынке.\n95% процентов, что после первой забивки вы забудете про все остальные чаши. \n\n◾ Максимально быстрый прогрев.\n\n◾ Усиленная вкусопередача.\n\n◾ Легко мыть, не трескаются от резких перепадов температуры.\n\n◾ Специальная техника отливки позволяет максимально контролировать жар.\n\n◾ Состав и обработка не имеющие аналогов", "random_id": 0, "keyboard": keyboard00000, "keyboard": keyboard, "attachment": "photo-169871449_456239101" }) elif body == 'начать': vk.method( "messages.send", { "peer_id": toid, "message": "Здравствуйте! Воспользуйтесь клавиатурой для навигации!", "keyboard": keyboard00000, "keyboard": keyboard, "random_id": 0 }) elif body == 'назад': vk.method( "messages.send", { "peer_id": toid, "message": "", "keyboard": keyboard, "random_id": 0 }) elif body.find('instagram') != -1: vk.method( "messages.send", { "peer_id": toid, "message": "instagram.com/hookah.mason", "keyboard": keyboard, "random_id": 0 }) elif body.find('отзывы') != -1: vk.method( "messages.send", { "peer_id": toid, "message": "vk.com/topic-169871449_39198416", "keyboard": keyboard, "random_id": 0 }) elif body.find('промокод') != -1: if (promo1 == 0): promo1 = vk.method("messages.getHistory", { "offset": 0, "count": 200, "user_id": id })["items"][0]["from_id"] vk.method( "messages.send", { "peer_id": toid, "message": "Введите промокод", "keyboard": keyboard_back, "random_id": 0 }) elif (promo2 == 0): promo2 = vk.method("messages.getHistory", { "offset": 0, "count": 200, "user_id": id })["items"][0]["from_id"] vk.method( "messages.send", { "peer_id": toid, "message": "Введите промокод", "keyboard": keyboard_back, "random_id": 0 }) elif (promo3 == 0): promo3 = vk.method("messages.getHistory", { "offset": 0, "count": 200, "user_id": id })["items"][0]["from_id"] vk.method( "messages.send", { "peer_id": toid, "message": "Введите промокод", "keyboard": keyboard_back, "random_id": 0 }) else: vk.method( "messages.send", { "peer_id": toid, "message": "Система перегружена, повторите попытку через 10 секунд", "random_id": 0 }) except vk_api.AuthError as error_msg: print(error_msg) vk.method("messages.send", { "peer_id": 169871363, "message": 'перезагрузка', "random_id": 0 })
def __init__(self, group_id, token): self.group_id = group_id self.token = token self.vk = vk_api.VkApi(token=token) self.long_poller = VkBotLongPoll(self.vk, self.group_id) self.api = self.vk.get_api()
def main(): # массив действий step = dict() # открыть сессию vk_session = vk_api.VkApi( token='4672e23f8c6f5a903b1bc27b081bd1525ba191a5d37aeaa1ef77ff885fd307b0764746032c0b28d608216') # открыть процесс longpoll = VkBotLongPoll(vk_session, 195023097) # перебрать события for event in longpoll.listen(): # если событие - новое сообщение if event.type == VkBotEventType.MESSAGE_NEW: # id пользователя отправившего сообщение peer_id = event.object.peer_id # обнуление всех действий для текущего пользователя try: step[peer_id] = step[peer_id] except KeyError: # массив действий (приветствие, как дела, погода) step[peer_id] = dict(hallo=0, tricks=0) # массив отправлений (тест, стикер) outer = dict(text="", sticker=0) # массив шаблонов фраз rubber = dict( how_are_you="Как дела?", talk_about_weather="Поговорим о погоде?\nСпросите меня: какая погода в...", ) # тест полученного сообщения в нижнем регистре + удалить знаки пунктуации (!.?) inner = ''.join(c for c in event.object.text.lower() if c not in ('!', '.', '?')) # ВАРИАНТЫ ПРИВЕТСТВИЯ if inner in [ 'хелло', 'привет', 'здравствуйте', ]: # если это первое приветствие if not step[peer_id]['hallo']: # дополнить исходящее сообщение outer['text'] += "Здравствуйте, спасибо, что написали нам!\n" # если это повтроное приветствие else: # прилепить стикер (хелло) outer['sticker'] = 13699 # отметить в массиве действий step[peer_id]['hallo'] += 1 # дополнить исходящее сообщение outer['text'] += rubber['how_are_you'] # ВАРИАНТЫ СОСТОЯНИЯ ДЕЛ (хорошие) elif inner in [ 'превосходно', 'отлично', 'хорошо', ]: # если это первое сообщение о состоянии дел if not step[peer_id]['tricks']: # дополнить исходящее сообщение outer['text'] += "Приятно, когда у человека всё хоршо!\n" # если это повтроное сообщение о состоянии дел else: # прилепить стикер (лойс) outer['sticker'] = 13710 # отметить в массиве действий step[peer_id]['tricks'] += 1 # дополнить исходящее сообщение outer['text'] += rubber['talk_about_weather'] # ВАРИАНТЫ СОСТОЯНИЯ ДЕЛ (нейтральные) elif inner in [ 'нормально', 'норм', 'никак', 'не плохо', ]: # если это первое сообщение о состоянии дел if not step[peer_id]['tricks']: # дополнить исходящее сообщение outer['text'] += "Отлично! Эмоциональная стабильность повышает работоспособность.\n" # если это повтроное сообщение о состоянии дел else: # прилепить стикер (щёлк-щёлк) outer['sticker'] = 13701 # отметить в массиве действий step[peer_id]['tricks'] += 1 # дополнить исходящее сообщение outer['text'] += rubber['talk_about_weather'] # ВАРИАНТЫ СОСТОЯНИЯ ДЕЛ (плохие) elif inner in [ 'отвратительно', 'плохо', 'не очень', ]: # создать пустое исходящее сообщение outer['text'] = "" # если это первое сообщение о состоянии дел if not step[peer_id]['tricks']: # дополнить исходящее сообщение outer['text'] += "Не расстраивайтесь, всё образуется!\n" # если это повтроное сообщение о состоянии дел else: # прилепить стикер (иди обниму) outer['sticker'] = 13746 # отметить в массиве действий step[peer_id]['tricks'] += 1 # дополнить исходящее сообщение outer['text'] += rubber['talk_about_weather'] # ОСТАЛЬНЫЕ СООБЩЕНИЯ (включая погоду) else: # шаблон фразы о погоде pattern = 'какая погода в ' # найти подстроку в полученном сообщении weather = inner.find(pattern) # если подстрока найдена if weather > -1: # получить название города, удалив подстроку-шаблон city = inner.replace(pattern, '') # обрезать крайние пробелы city = city.strip() # написать город с заглавной буквы city = city.title() # ЗАПРОС ПОГОДЫ В ГОРОДЕ if city != '': # запросить погоду и создать из ответа исходящее сообщение outer['text'] = get_weather(city) # если город пустой else: weather = -1 # ОСТАЛЬНЫЕ СООБЩЕНИЯ if weather < 0: # импорт библиотек import re # сократить много скобок до одной smile = re.sub(r'(\))\1+', r'\1', inner) # если сообщение это "улыбающаяся" скобка if smile == ')': # прилепить стикер (смайл) outer['sticker'] = 13715 # если приветствия не было elif not step[peer_id]['hallo']: # прилепить стикер (хелло) outer['sticker'] = 13699 # если нет ответа как дела elif not step[peer_id]['tricks']: # создать исходящее сообщение outer['text'] = rubber['how_are_you'] # ВСЕ ДРУГИЕ ФРАЗЫ И СОСТОЯНИЯ else: # прилепить стикер (бла-бла-бла) outer['sticker'] = 13711 # создать исходящее сообщение outer['text'] += rubber['talk_about_weather'] # сессия vk = vk_session.get_api() # если прилеплен стикер - отобразить if outer['sticker']: vk.messages.send(user_id=event.object.peer_id, sticker_id=outer['sticker'], random_id=random.randint(0, 2 ** 64)) # если сформировано сообщение - отобразить if outer['text']: vk.messages.send(user_id=event.object.peer_id, message=outer['text'], random_id=random.randint(0, 2 ** 64))
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType import json from Db import Db from qiwiActions import invoice, pay_status from datetime import datetime from time import sleep from threading import Thread from dvach import po_random_comment with open('config.json') as config: conf_data = json.load(config) QIWI_SECRET = conf_data['qiwi_cash_secret_key'] vk_session = vk_api.VkApi(token=conf_data['vk_api_token']) vk = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, conf_data['vk_group_id']) donate_amount = 200 months = [ '', 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь' ] def answer_vk_message(event, text): vk.messages.send(random_id=get_random_id(), user_id=event.message['peer_id'], message=text)
import vk_api from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType import command_enum from vk_functions import get_random_id vk_session = vk_api.VkApi( token='c1fa29197260f82e5c97fb4c597aee8091c6c1e36dabaf2c58b38298d780a18d63dc69bd734d2b50f17e4') vk = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, '192848017') def proccess_query(event): for command in command_enum.COMAND_ENUM: if event.obj.text == command: response = command_enum.COMAND_ENUM[command] vk_session.method('messages.send', values={ 'user_id': event.obj['from_id'], 'message': response, 'random_id': get_random_id() }) def listen(): for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW: proccess_query(event) if __name__ == '__main__':
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType import vk_api vk_session = vk_api.VkApi(token='Тут_токен') session_api = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, 183439707) def send_message(peer_id, message): session_api.messages.send(peer_id=peer_id, message=message, random_id=0) if __name__ == '__main__': while True: for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW: send_message(event.object.peer_id, 'Работает')
out += key + "=" for k, v in info_chats[key].items(): if k == "mute": out += "mute." + ",".join(v) + ";" else: out += k + "." + str(v) + ";" out += "|" open("db.txt", "w").write(out) save_info() comments_ids = get_comments_info() vk = vk_api.VkApi(token=token) longpoll = VkBotLongPoll(vk, group_id) start = True def f(): global start global info_chats threading.Timer(3600, f).start() # Перезапуск через 60 минут if start == False: for i in info_chats.keys(): keyboard = info_chats[i]["keyboard"] if info_chats[i]["ue4"] == "t": vk.method( "messages.send", { 'peer_id': i,
mode='a', maxBytes=(5 * 1024 * 1024), backupCount=2, encoding=None, delay=False ) else: my_handler = logging.StreamHandler() my_handler.setFormatter(log_formatter) my_handler.setLevel(logging.INFO) APP_LOGGER = logging.getLogger('root') APP_LOGGER.setLevel(logging.INFO) APP_LOGGER.addHandler(my_handler) if __name__ == '__main__': setup_logger(fileFlag=True) # setup configuration configuration = JsonConfiguration() # setup connection to VK API vk_session = vk_api.VkApi(token=configuration.get_api_key()) session_api = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, configuration.get_group_id(), 100) # setup strategy strategy = AdvancedStrategy(session_api, APP_LOGGER, configuration) main_loop(configuration, strategy, longpoll)
class VkBot: def __init__(self): self.timeout = TIMEOUT_SECONDS signal.signal(signal.SIGTERM, self.catch_signal) self.init_connection() def init_connection(self): try: self.vk_session = vk_api.VkApi(login=os.getenv("LOGIN"), password=os.getenv("PASSW")) try: self.vk_session.auth(token_only=True) except vk_api.AuthError as e: print(e) sys.exit(0) except vk_api.exceptions.Captcha as e: print("CAPTCHA") print(e.get_url()) code = input() e.try_again(key=code) print("ID:", os.getpid()) print("Got VK API Session") self.group_session = vk_api.VkApi(token=os.getenv("KEY")) print("Got Group Session") self.longpoll = VkBotLongPoll(self.group_session, os.getenv("GROUP_ID")) print("Got Longpoll Object") self.api = self.vk_session.get_api() print("Got API Object") self.group_api = self.group_session.get_api() print("Got Group API Object") self.upload = vk_api.VkUpload(self.vk_session) print("Got Upload Object") self.loader = Downloader() print("Got Downloader Object") except (requests.exceptions.ConnectionError) as e: print("Reinitializing session data") print(e) print("Timeout:", self.timeout) time.sleep(self.timeout) self.timeout += 1 self.init_connection() def catch_signal(self, signal, frame): print("Stopping...") sys.exit(0) def send_message(self, user_id, message, attachment=None): self.group_api.messages.send(user_id=user_id, random_id=get_random_id(), message=message, attachment=attachment) def response(self, event): self.send_message(user_id=event.obj.message["from_id"], message="Wait a bit") link = self.find_yt(event.obj) if link: result = self.loader.download(link) if result: if not result.endswith(".mp3"): index = result.find(".") path = result.replace(result[index:], ".mp3") else: path = result title, artist = result.lstrip("storage/").rstrip(".mp3").split( "---") self.upload_yt(event, path, title, artist) os.remove(path) else: self.send_error(event) print() def start(self): print("Start Longpoll listening") while True: try: for event in self.longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW: print("Event:\n", pprint.pprint(event.obj)) print("From:", event.obj.message["from_id"]) print('Message:', event.obj.message["text"]) self.response(event) elif event.type == VkBotEventType.MESSAGE_REPLY: print("From(Bot):", event.obj.peer_id) print('Message(Bot):', event.obj.text) print() else: print(event.type) print() except (requests.exceptions.ReadTimeout) as e: print("Got exception") print(type(e)) print(e) time.sleep(self.timeout) self.init_connection() self.timeout = TIMEOUT_SECONDS self.start() def upload_yt(self, event, path, title, artist): try: audio = self.upload.audio(audio=path, title=title, artist=artist) except vk_api.exceptions.ApiError as e: self.send_message(user_id=event.obj.message["from_id"], message=f"{e.error['error_msg']}") else: self.send_message( user_id=event.obj.message["from_id"], message="Your audio:", attachment=f"audio{audio['owner_id']}_{audio['id']}") def send_error(self, event): self.send_message(user_id=event.obj.message["from_id"], message='', attachment='photo-185940778_457239022') def find_yt(self, event): if event.message["text"] != '': pattern = r'(http(s)?:\/\/)?((w){3}.)?youtu(be|.be)?(\.com)?\/.\S*' result = re.search(pattern, event.message["text"]) if result: return result.group() else: if event.message['attachments']: attachment = event.message['attachments'][0] else: return if attachment['type'] != 'video' or attachment['video'].get( 'platform') != 'YouTube': return videos = self.api.video.get( videos= f"{attachment['video']['owner_id']}_{attachment['video']['id']}" ) if not videos['items']: return return videos['items'][0]['player']
class Bot: """ Scenario for registration at conference using vk.com Supporting FAQ: date, place, registration: -asking name -asking email -registration Following all steps and asking for retry if step was failed use python 3.9 """ def __init__(self, group_id, token): """ :param group_id: group id from vk group :param token: secret token from the same vk group """ self.group_id = group_id self.token = token self.vk = vk_api.VkApi(token=token) # self.vk. self.long_poller = VkBotLongPoll(vk=self.vk, group_id=self.group_id) self.api = self.vk.get_api() def run(self): """Starting bot""" for event in self.long_poller.listen(): try: self.on_event(event=event) except Exception as exc: log.exception(f"Exception in handling event {exc}") @db_session def on_event(self, event): """ Sending back text message :param event: VkBotMessageEvent object :return None """ if event.type != VkBotEventType.MESSAGE_NEW: log.info("Can't handle this type of message %s", event.type) return user_id = event.obj.peer_id text = event.obj.text state = UserState.get(user_id=str(user_id)) if state is not None: # continue scenario self.continue_scenario(text, state, user_id) else: # search intent for intent in settings.INTENTS: log.debug(f'User gets {intent}') if any(token in text.lower() for token in intent["tokens"]): # run intent if intent["answer"]: self.send_text(intent["answer"], user_id) else: self.start_scenario(user_id, intent["scenario"], text) break else: self.send_text(settings.DEFAULT_ANSWER, user_id) def send_text(self, text_to_send, user_id): self.api.messages.send(message=text_to_send, random_id=random.randint(0, 2**20), peer_id=user_id) def send_image(self, image, user_id): upload_url = self.api.photos.getMessagesUploadServer()['upload_url'] upload_data = requests.post(url=upload_url, files={ 'photo': ('image.png', image, 'image/png') }).json() image_data = self.api.photos.saveMessagesPhoto(**upload_data) owner_id = image_data[0]['owner_id'] media_id = image_data[0]['owner_id'] attachment = f'photo{owner_id}_{media_id}' self.api.messages.send(attachment=attachment, random_id=random.randint(0, 2**20), peer_id=user_id) def send_step(self, step, user_id, text, context): if 'text' in step: self.send_text(step["text"].format(**context), user_id) if 'image' in step: handler = getattr(handlers, step["image"]) image = handler(text, context) self.send_image(image, user_id) def start_scenario(self, user_id, scenario_name, text): scenario = settings.SCENARIOS[scenario_name] first_step = scenario["first_step"] step = scenario["steps"][first_step] self.send_step(step, user_id, text, context={}) UserState(user_id=str(user_id), scenario_name=scenario_name, step_name=first_step, context={}) def continue_scenario(self, text, state, user_id): steps = settings.SCENARIOS[state.scenario_name]["steps"] step = steps[state.step_name] handler = getattr(handlers, step["handler"]) if handler(text=text, context=state.context): # next step next_step = steps[step["next_step"]] self.send_step(next_step, user_id, text, state.context) if next_step["next_step"]: # switch to next step state.step_name = step["next_step"] else: # finish scenario log.info(state.context) Registration(departure=state.context['departure'], arrival=state.context['arrival'], chosen_date=state.context['chosen_date'], places=state.context['places'], phone_number=state.context['number'], email=state.context['email'], confirmed=state.context['confirmed'], comment=state.context['comment']) state.delete() else: # retry current step text_to_send = step["failure_text"].format(**state.context) self.send_text(text_to_send, user_id)
import aiohttp from vk_api import vk_api from vk_api.bot_longpoll import VkBotLongPoll from vk_api.keyboard import VkKeyboard from vk_api.utils import get_random_id from app.settings import config token = config["vk"]["access_token"] v = config["vk"]["v"] group_id = config["vk"]["group_id"] vk_session = vk_api.VkApi(token=token) vk = vk_session.get_api() longpoll = VkBotLongPoll( vk_session, group_id=group_id, ) session = aiohttp.ClientSession() async def send_message_to_vk( peer_id: int, message: str, keyboard: VkKeyboard = None, ): vk.messages.send( random_id=get_random_id(), peer_id=peer_id, message=message, keyboard=keyboard,
import sys sys.path.insert(0, '../') from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType from vk_api.longpoll import VkLongPoll, VkEventType from vk_api.keyboard import VkKeyboard, VkKeyboardColor import vk_api, random, time, os import data token, group_id = data.f() vk_session = vk_api.VkApi(token=token) session_api = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, group_id) def send_message(peer_id, message=None, attachment=None, keyboard=None, payload=None): session_api.messages.send(peer_id=peer_id, message=message, random_id=random.randint(-2147483648, +2147483648), attachment=attachment, keyboard=keyboard, payload=payload) def create_keyboard(payload):
def main(): vk_session = vk_api.VkApi( token= 'ab948e1d036b8d2e340bd6e2e66799330708cb59317956632f06a93d4f18f2ad6d89d51cb6683f0479cbd' ) menu_type = 'main_menu' # main_menu, test, photo_category, mailing, facts, game longpoll = VkBotLongPoll(vk_session, 194151011) db_session.global_init("db/mailing.sqlite") print(1) for event in longpoll.listen(): try: id = mailing_check() if not id == '': try: vk = vk_session.get_api() vk.messages.send(user_id=id, message=('Здравствуйте! Рассылка фото'), attachment=random.choice( get_photo(id_group, id_album)), random_id=random.randint(0, 2**64)) except Exception as e: print(e) try: id = facts_check() if not id == '': vk = vk_session.get_api() f = codecs.open('static/facts.txt', 'r', 'utf_8_sig') one_fact = f.read().split('**') f.close() vk.messages.send(user_id=id, message=(random.choice(one_fact)), random_id=random.randint(0, 2**64)) except Exception as e: print(e) if event.type == VkBotEventType.MESSAGE_NEW: vk = vk_session.get_api() text = event.obj.text keyboard = VkKeyboard(one_time=True) if text == 'Фото по категориям': try: keyboard = add_button(keyboard, 'Города', new_line=False) keyboard = add_button(keyboard, 'Игры') keyboard = add_button(keyboard, 'Горы') vk.messages.send(user_id=event.obj.from_id, message=('Выберите категорию'), keyboard=keyboard.get_keyboard(), random_id=random.randint(0, 2**64)) menu_type = 'photo_category' except Exception as e: print(e) menu_type = 'main_menu' elif menu_type == 'photo_category': try: up = VkUpload(vk) if text == 'Города': group = 'cities' elif text == 'Горы': group = 'mountains' else: group = 'games' # Подсчёт количества файлов в папке path = 'static/img/{}'.format(group) num_files = len([ f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f)) ]) mes = up.photo_messages( 'static/img/{}/pic{}.jpg'.format( group, str(random.randint(1, num_files))))[0] vk.messages.send( user_id=event.obj.from_id, message=(''), attachment=f"photo{mes['owner_id']}_{mes['id']}", random_id=random.randint(0, 2**64)) except Exception as e: print(e) menu_type = 'main_menu' elif text == 'Рассылка фото': try: keyboard = add_button(keyboard, 'Каждый день', new_line=False) keyboard = add_button(keyboard, 'Два раза в неделю') keyboard = add_button(keyboard, 'Раз в неделю') keyboard = add_button(keyboard, 'Отписаться от рассылки') vk.messages.send(user_id=event.obj.from_id, message=('Выберите частоту'), keyboard=keyboard.get_keyboard(), random_id=random.randint(0, 2**64)) menu_type = 'mailing' except Exception as e: print(e) menu_type = 'main_menu' elif text == 'Отписаться от рассылки' and menu_type == 'mailing': try: del_mailing(event.obj.from_id) vk.messages.send(user_id=event.obj.from_id, message=('Вы отписались от рассылки'), random_id=random.randint(0, 2**64)) except Exception as e: print(e) menu_type = 'main_menu' elif menu_type == 'mailing': try: if text == 'Каждый день': times_a_week = 7 elif text == 'Два раза в неделю': times_a_week = 2 else: times_a_week = 1 session = db_session.create_session() text_message = 'Вы подписались на рассылку фото {}. Чтобы отменить рассылку, выберите "Отисаться от' \ ' рассылки" в меню "Рассылка фото"'.format(text.lower()) for user in session.query(mailing.Mailing).all(): if user.id == event.obj.from_id: del_mailing(event.obj.from_id) text_message = 'Вы поменяли частоту рассылки на {}. Чтобы отменить рассылку, выберите ' \ '"Отисаться от рассылки" в меню "Рассылка фото"'.format(text.lower()) break add_mailing(event.obj.from_id, times_a_week) vk.messages.send(user_id=event.obj.from_id, message=(text_message), random_id=random.randint(0, 2**64)) except Exception as e: print(e) menu_type = 'main_menu' elif text == 'Тесты про фотографию': try: test = get_random_test() answer_choice = test[1].split('**') keyboard = add_button(keyboard, answer_choice[0], new_line=False) keyboard = add_button(keyboard, answer_choice[1]) keyboard = add_button(keyboard, answer_choice[2]) keyboard = add_button(keyboard, answer_choice[3]) vk.messages.send(user_id=event.obj.from_id, message=(test[0]), keyboard=keyboard.get_keyboard(), random_id=random.randint(0, 2**64)) answer = test[2] menu_type = 'test' except Exception as e: print(e) menu_type = 'main_menu' elif menu_type == 'test': try: if text == answer: vk.messages.send( user_id=event.obj.from_id, message=( 'Поздравляем! Вы ответили правильно!'), random_id=random.randint(0, 2**64)) else: vk.messages.send( user_id=event.obj.from_id, message= ('К сожалению, Вы ошиблись. Правильный ответ: {}' .format(answer)), random_id=random.randint(0, 2**64)) except Exception as e: print(e) menu_type = 'main_menu' elif text == 'Рассылка интересных фактов про фото': try: keyboard = add_button(keyboard, 'Каждый день', new_line=False) keyboard = add_button(keyboard, 'Два раза в неделю') keyboard = add_button(keyboard, 'Раз в неделю') keyboard = add_button(keyboard, 'Отписаться от рассылки') vk.messages.send(user_id=event.obj.from_id, message=('Выберите частоту'), keyboard=keyboard.get_keyboard(), random_id=random.randint(0, 2**64)) menu_type = 'facts' except Exception as e: print(e) menu_type = 'main_menu' elif text == 'Отписаться от рассылки' and menu_type == 'facts': try: del_fact(event.obj.from_id) vk.messages.send(user_id=event.obj.from_id, message=('Вы отписались от рассылки'), random_id=random.randint(0, 2**64)) except Exception as e: print(e) menu_type = 'main_menu' elif menu_type == 'facts': try: if text == 'Каждый день': times_a_week = 7 elif text == 'Два раза в неделю': times_a_week = 2 else: times_a_week = 1 session = db_session.create_session() text_message = 'Вы подписались на рассылку интересных фактов {}. Чтобы отменить рассылку, выберите ' \ '"Отисаться от' \ ' рассылки" в меню "Интересные факты про фото"'.format(text.lower()) for user in session.query(facts.Facts).all(): if user.id == event.obj.from_id: del_fact(event.obj.from_id) text_message = 'Вы поменяли частоту рассылки на {}. Чтобы отменить рассылку, выберите ' \ '"Отисаться от рассылки" в меню "Рассылка фото"'.format(text.lower()) break add_facts(event.obj.from_id, times_a_week) vk.messages.send(user_id=event.obj.from_id, message=(text_message), random_id=random.randint(0, 2**64)) except Exception as e: print(e) menu_type = 'main_menu' elif text == 'Игры на внимательность': try: game = get_random_game() answer_choice = game[2].split('**') keyboard = add_button(keyboard, answer_choice[0], new_line=False) keyboard = add_button(keyboard, answer_choice[1]) keyboard = add_button(keyboard, answer_choice[2]) keyboard = add_button(keyboard, answer_choice[3]) vk.messages.send(user_id=event.obj.from_id, message=(game[1]), attachment='static/games/{}'.format( game[0]), keyboard=keyboard.get_keyboard(), random_id=random.randint(0, 2**64)) answer = game[3] menu_type = 'game' except Exception as e: print(e) menu_type = 'main_menu' elif menu_type == 'game': try: if text == answer: vk.messages.send( user_id=event.obj.from_id, message=( 'Поздравляем! Вы ответили правильно!'), random_id=random.randint(0, 2**64)) else: vk.messages.send( user_id=event.obj.from_id, message= ('К сожалению, Вы ошиблись. Правильный ответ: {}' .format(answer)), random_id=random.randint(0, 2**64)) except Exception as e: print(e) menu_type = 'main_menu' if menu_type == 'main_menu': try: keyboard = add_button(keyboard, 'Фото по категориям', new_line=False) keyboard = add_button(keyboard, 'Рассылка фото') keyboard = add_button(keyboard, 'Тесты про фотографию') keyboard = add_button( keyboard, 'Рассылка интересных фактов про фото') keyboard = add_button(keyboard, 'Игры на внимательность') if text == 'Начать': vk.messages.send(user_id=event.obj.from_id, message=('Здравствуйте'), attachment=random.choice( get_photo( (id_group, id_album))), keyboard=keyboard.get_keyboard(), random_id=random.randint( 0, 2**64)) else: vk.messages.send(user_id=event.obj.from_id, message=('Выберите категорию'), keyboard=keyboard.get_keyboard(), random_id=random.randint( 0, 2**64)) except Exception as e: print(e) except Exception as e: print(e)
def __init__(self, main_token, group_id): self.group_id = group_id self.vk_session = vk_api.VkApi(token=main_token) self.vk = self.vk_session.get_api() self.longpool = VkBotLongPoll(self.vk_session, self.group_id)
class VkServer: def __init__(self, server_name, group_file_name, group_id, api_token): self.server_name = server_name self.group_file_name = group_file_name self.parser = Parser() print(f"[{server_name}] connection to vk API...") self.vk = vk_api.VkApi(token=api_token) self.vk_s = self.vk.get_api() self.longpoll = VkBotLongPoll(self.vk, group_id, wait=25) self.ids = self._set_persons(group_file_name) self.messenger = Messenger(self.vk_s, self.ids) self.spam = Spam(self.vk_s, self.ids, self.group_file_name) print("Server " + self.server_name + " working...") def _set_persons(self, filename): data = JSONFile.read_json(filename) res = {} for info in data['Persons']: res[data["Persons"][info]['vkid']] = Assistant( self.vk_s, data["Persons"][info]['vkid'], info, self.group_file_name) return res def start(self): # Слушаем сервер for event in self.longpoll.listen(): self.do_requests_list() # Новое сообщение if event.type == VkBotEventType.MESSAGE_NEW: if str(event.object.from_id) not in self.ids: self.ids[str(event.object.from_id)] = Assistant( self.vk_s, event.object.from_id, JSONFile.get_id_by_vkid(str(event.object.from_id), self.group_file_name), self.group_file_name, True) if event.group_id: pass if True: if event.object.id == 0: self.messenger.send_message( event.object.from_id, "Сообщения в группе запрещены. " "Пожалуйста, пишите в личные сообщения)))") else: self.messenger.send_message_by_event( event, from_id=event.object.from_id) def do_requests_list(self, filename="request_list.json"): data = JSONFile.read_json(filename) for request_type in data["request"]: index = 0 max_value_index = len(data['request'][request_type]) if request_type == "swap": while index < max_value_index: swap_c = data['request'][request_type][index].split() cmd = "$$swap " + swap_c[0] + " " + swap_c[1] self.ids[JSONFile.get_vkid_by_id( swap_c[1], self.group_file_name)].command(cmd) del data['request'][request_type][index] max_value_index -= 1 index += 1 if index == max_value_index: break elif request_type == "send2all": if len(data['request']['send2all']) > 0: self.spam.send_spam(data['request']['send2all']) del data['request']['send2all'][0] JSONFile.set_json_data(data, filename) def mainloop(self, exceptions=0): if exceptions > 9: self.vk_s.messages.send( peer_id=admin_vk_id, message="Произошло больше 9 ошибок. Отключаю сервер...") return try: self.start() except Exception as e: self.vk_s.messages.send( peer_id=admin_vk_id, message="Произошла ошибка! Перезапускаюсь! " + e.__str__()) self.mainloop(exceptions + 1) def get_server_name(self): return self.server_name
import random, vk_api, vk from vk_api.keyboard import VkKeyboard, VkKeyboardColor from vk_api.utils import get_random_id import info, keyboards, game import os import os.path vk_session = vk_api.VkApi(token=info.token) from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType longpoll = VkBotLongPoll(vk_session, info.publicId) vk = vk_session.get_api() from vk_api.longpoll import VkLongPoll, VkEventType Lslongpoll = VkLongPoll(vk_session) Lsvk = vk_session.get_api() import data try: os.mkdir('Game') os.mkdir('Game/Maps') os.mkdir('UsersInfo') print('dir created') except: print('dir found') print('bot started') for event in Lslongpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: if event.from_user: #Смотрим статус пользователя userStatus = data.getUserStatus(event.user_id)