def main():
    session = requests.Session()

    # Авторизация пользователя:
    """
    login, password = '******', 'mypassword'
    vk_session = vk_api.VkApi(login, password)

    try:
        vk_session.auth(token_only=True)
    except vk_api.AuthError as error_msg:
        print(error_msg)
        return
    """

    # Авторизация группы (для групп рекомендуется использовать VkBotLongPoll):
    # при передаче token вызывать vk_session.auth не нужно
    """
    vk_session = vk_api.VkApi(token='токен с доступом к сообщениям и фото')
    """

    vk = vk_session.get_api()

    upload = VkUpload(vk_session)  # Для загрузки изображений
    longpoll = VkLongPoll(vk_session)

    for event in longpoll.listen():
        if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
            print('id{}: "{}"'.format(event.user_id, event.text), end=' ')

            response = session.get('http://api.duckduckgo.com/',
                                   params={
                                       'q': event.text,
                                       'format': 'json'
                                   }).json()

            text = response.get('AbstractText')
            image_url = response.get('Image')

            if not text:
                vk.messages.send(user_id=event.user_id,
                                 random_id=get_random_id(),
                                 message='No results')
                print('no results')
                continue

            attachments = []

            if image_url:
                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(user_id=event.user_id,
                             attachment=','.join(attachments),
                             random_id=get_random_id(),
                             message=text)
            print('ok')
Ejemplo n.º 2
0
def mediaResponse(vk_session, mediaRel):

    upload = VkUpload(vk_session)

    media = upload.photo_messages(photos=mediaRel)[0]

    return 'photo{}_{}'.format(media['owner_id'], media['id'])
Ejemplo n.º 3
0
def get_single_random_post(id):
    pic = ''
    session = requests.Session()
    upload = VkUpload(session_bot)
    try:
        posts_count = vk_me.wall.get(owner_id=id)['count']
        offset = random.randint(0, posts_count - 1)
        while True:
            response = vk_me.wall.get(owner_id=id, offset=offset,
                                      count=1)['items'][0]
            print(response)
            if response['likes']['count'] < 50:
                print('Not enough likes, lets find another post')
                time.sleep(1)
                continue
            try:
                picture = response['attachments'][0]['photo']['sizes'][-1][
                    'url']
                image = session.get(picture, stream=True)
                photo = upload.photo_messages(photos=image.raw)[0]
                print(photo)
                pic = [f'photo{photo["owner_id"]}_{photo["id"]}']
            except KeyError:
                print('No pictures')
            text = response['text']
            return text, pic
    except KeyError:
        print('Error while fetching public wall posts count')
Ejemplo n.º 4
0
 def sendMsgToChat(self,
                   event,
                   message,
                   image=False,
                   url='https://pbs.twimg.com/media/D4aTJ8yWAAE4GJu.jpg',
                   video=False,
                   videoref='video213946714_456239065'):
     try:
         upload = VkUpload(self.vk_session)
         attachments = []
         if image:
             upload = VkUpload(self.vk_session)
             image_url = url
             image = self.session.get(image_url, stream=True)
             photo = upload.photo_messages(photos=image.raw)[0]
             attachments.append('photo{}_{}'.format(photo['owner_id'],
                                                    photo['id']))
         if video:
             attachments.append('video-' + videoref)
         self.vk.messages.send(attachment=videoref if video else '',
                               chat_id=event.chat_id,
                               message=message,
                               random_id=1)
     except Exception as e:
         print(e)
Ejemplo n.º 5
0
def send_photo_tochat(vk_session,
                      chat_id,
                      path_to_photo=None,
                      attachment=None):
    """

    :param chat_id: id чата(беседы)
    :param path_to_photo: путь к фото на пк
    :param attachment: медиавложения к личному сообщению, перечисленные через запятую. Каждое прикрепление представлено в формате:
    <type><owner_id>_<media_id>
    В случае, если прикрепляется объект, принадлежащий другому пользователю добавлять к вложению его access_key в формате
    <type><owner_id>_<media_id>_<access_key>
    :return:
    """
    upload = VkUpload(vk_session)

    if path_to_photo:
        photo = upload.photo_messages(path_to_photo)
        attachment = "photo" + (str)(photo[0]['owner_id']) + "_" + (str)(
            photo[0]['id']) + "_" + (str)(photo[0]['access_key'])
    vk_session.method(
        "messages.send", {
            "chat_id": chat_id,
            "message": "",
            "attachment": attachment,
            "random_id": randint(0, 2048)
        })
Ejemplo n.º 6
0
 def __auth(self):
     self.vk = vk_api.VkApi(
         token=
         '389a203f6dbba52e2e0fe4f28d8a283c97169ba0fa138848abd23722ff628984ae0780613c9ed4260fa16'
     )
     self.ses = self.vk.get_api()
     self.upload = VkUpload(self.vk)
Ejemplo n.º 7
0
    def work(self, peer_id: int, msg: str, event: bot_longpoll.VkBotEvent):
        limit = msg.split(maxsplit=1)[1]
        try:
            if limit is None or int(limit) <= 1:
                limit = 1
        except ValueError:
            self.bot.send_message(peer_id, "Самый умный?")
            return

        if event.object["from_id"] not in self.bot.admins and int(limit) >= 3:
            limit = 5

        r = requests.get(
            f"https://konachan.net/post.json?limit={limit}&tags=order%3Arandom"
        )
        json_parsed = json.loads(r.text)
        attachments = []
        self.bot.send_message(peer_id, "Начинаю выкачку...")
        for i, jsonx in enumerate(json_parsed):
            img_r = requests.get(jsonx["file_url"], stream=True)
            img_r.raw.decode_content = True
            img: Image = Image.open(img_r.raw)
            img.save(f"/tmp/foo{i}.png", "PNG")
            # logging.info(msg)
            upload = VkUpload(self.bot.vk)
            photo = upload.photo_messages(f"/tmp/foo{i}.png")[0]
            attachments.append(f"photo{photo['owner_id']}_{photo['id']},")

        attachment_str = ""
        for attachment in attachments:
            attachment_str += attachment
        self.bot.send_message(peer_id=peer_id,
                              msg=None,
                              attachment=attachment_str)
        return
Ejemplo n.º 8
0
def send_photo(u_id, p_id, urls):
    try:
        attachments = []
        from vk_api import VkUpload
        upload = VkUpload(vk_session)
        if isinstance(urls, list):
            for url in urls:
                image_url = url
                image = session.get(url=image_url, stream=True)
                photo = upload.photo_messages(photos=image.raw,
                                              peer_id=peer_id)[0]
                print(photo)
                attachments.append('photo{}_{}'.format(photo['owner_id'],
                                                       photo['id']))
        else:
            image_url = urls
            image = session.get(url=image_url, stream=True)
            photo = upload.photo_messages(photos=image.raw, peer_id=peer_id)[0]
            print(photo)
            attachments.append('photo{}_{}'.format(photo['owner_id'],
                                                   photo['id']))
        vk.messages.send(peer_id=p_id,
                         user_id=u_id,
                         attachment=','.join(attachments),
                         message='Актуалочка',
                         random_id=np.int64(
                             random.randint(10000, 1000000000000)))
    except vk_api.ApiError as error:
        send_photo(u_id, p_id, urls)
        send_message(u_id, p_id,
                     'Произошла ошибка загрузки фото, ебучий сайт упал')
        print(error.raw)
    pass
Ejemplo n.º 9
0
    def GenerateQR(self):
        payload = str(
            base64.b64encode(bytes(f'TransferMoneyTo {str(self.id)}',
                                   'utf-8')), 'utf-8')
        a = pyqrcode.create(payload)
        QRfile = f'./DB/QRs/{str(self.vkId)}.png'
        a.png(QRfile,
              scale=8,
              module_color=[0, 0, 0, 255],
              background=[0xff, 0xff, 0xff])

        login = open('./login.cred', 'r').readline()
        password = open("./password.cred", 'r').readline()
        groupID = 192654141
        albumID = 271112751

        client = vk_api.VkApi(login, password)
        client.auth()
        u = VkUpload(client)
        a = u.photo(photos=QRfile,
                    album_id=albumID,
                    group_id=groupID,
                    caption=f'QrCode')
        a = a[0]
        ownerId = a['owner_id']
        mediaId = a['id']
        self.QRcodeURL = f'photo{ownerId}_{mediaId}'
        pass
Ejemplo n.º 10
0
    def mess(self, q):
        vk = vk_api.VkApi(login, password)
        vk.auth(token_only=True)

        vk2 = vk_api.VkApi(token=token)

        vk_session2 = vk2.get_api()
        # vk_session = vk.get_api()

        longpoll = VkLongPoll(vk2)
        upload = VkUpload(vk)

        while True:
            attachments = []

            name = q.get()

            photo = upload.photo(name, album_id='', group_id='')
            attachments.append('photo{}_{}'.format(photo[0]['owner_id'],
                                                   photo[0]['id']))

            vk_session2.messages.send(user_id='',
                                      attachment=','.join(attachments),
                                      message='Ваш код',
                                      random_id=randint(1, 999999))
            sleep(3)
Ejemplo n.º 11
0
    def GenerateQR(self):
        # TODO qr code generation
        try:
            payload = str(
                base64.b64encode(bytes(f'Weapon {str(self.id)}', 'utf-8')),
                'utf-8')
            a = pyqrcode.create(payload)
            QRfile = f'./QRs/{str(self.id)}.png'
            a.png(QRfile,
                  scale=8,
                  module_color=[0, 0, 0, 255],
                  background=[0xff, 0xff, 0xff])

            login = open('./login.cred', 'r').readline()
            password = open("./password.cred", 'r').readline()
            groupID = 193066072
            albumID = 271095205

            client = vk_api.VkApi(login, password)
            client.auth()
            u = VkUpload(client)
            a = u.photo(photos=QRfile,
                        album_id=albumID,
                        group_id=groupID,
                        caption=f'{self.__dict__}')
            a = a[0]
            ownerId = a['owner_id']
            mediaId = a['id']
            self.QRcodeURL = f'photo{ownerId}_{mediaId}'
            return True
        except:
            return False
Ejemplo n.º 12
0
    def send_message(self, message, keyboard=None, image_url=None) -> None:
        """Отсылает сообщение опционально с клавиатурой и/или изображением

        Parameters
        ----------
        message: str
            сообщение для пользователя
        keyboard: VkKeyboard
            клавиатура доступная пользователю
        image_url: str
            ссылка на изображение
        """
        payload = {
            'user_id': self._user_id,
            'message': message,
            'random_id': get_random_id()
        }
        if keyboard:
            payload['keyboard'] = keyboard
        if image_url:
            arr = BytesIO(req_get(image_url).content)
            arr.seek(0)
            upload = VkUpload(self._vk_session)
            photo = upload.photo_messages(arr)
            payload['attachment'] = "photo{}_{}".format(photo[0]["owner_id"], photo[0]["id"])
        self._vk_session.method('messages.send', payload)
Ejemplo n.º 13
0
def sendmessage(event, text, pic=None, kboard=None):
    if text != None and text.replace(' ', '') != '':
        if pic != None:
            # это на случай, если возникнет ошибка с загрузкой картинки. да, они иногда возникают, но очень редко
            try:
                upload = VkUpload(vk_session)
                image_url = pic
                image = session.get(image_url, stream=True)
                photo = upload.photo_messages(photos=image.raw)[0]
                attach = 'photo{}_{}'.format(photo['owner_id'], photo['id'])
                if kboard != None:
                    vk.messages.send(peer_id=event.obj.message['peer_id'],
                                     random_id=get_random_id(),
                                     attachment=attach,
                                     message=text,
                                     keyboard=kboard)
                else:
                    vk.messages.send(peer_id=event.obj.message['peer_id'],
                                     random_id=get_random_id(),
                                     attachment=attach,
                                     message=text)
            except:
                print(pic)
                text = pic + ' ' + text
                pic = None
        if pic == None:
            if kboard != None:
                vk.messages.send(peer_id=event.obj.message['peer_id'],
                                 random_id=get_random_id(),
                                 message=text,
                                 keyboard=kboard)
            else:
                vk.messages.send(peer_id=event.obj.message['peer_id'],
                                 random_id=get_random_id(),
                                 message=text)
Ejemplo n.º 14
0
def main():
    vk_session = vk_api.VkApi(Login=LOGIN, password=PASSWORD)
    vk_session.auth()
    vk = vk_session.get_api()

    upload = VkUpload(vk)
    upload.photo(['static/image.jpg'], album_id=ALBUM_ID, group_id=GROUP_ID)
Ejemplo n.º 15
0
def uploadphoto(photto):
    upload = VkUpload(vk)
    photo = upload.photo_messages(photto)
    owner_id = photo[0]['owner_id']
    photo_id = photo[0]['id']
    access_key = photo[0]['access_key']
    attachment = f'photo{owner_id}_{photo_id}_{access_key}'
    return attachment
Ejemplo n.º 16
0
def cmd(api, message, args, uploader: VkUpload):
    attach = message.get('attachments')
    reply = message.get('reply_message')
    if len(attach) == 0 and reply is None:
        api.messages.send(
            peer_id=message['peer_id'],
            random_id=0,
            message=f"{config.prefixes['error']} Необходимо ответить на сообщение с фотографией / стикером, либо прикрепить фотографию.",
            reply_to=message['id']
        )
        return

    try:
        if reply is not None:
            _type = reply['attachments'][0]['type']
            if reply['attachments'][0].get('sticker') is not None:
                img = reply['attachments'][0]['sticker']['images'].pop()['url']
            elif reply['attachments'][0].get('photo') is not None:
                img = reply['attachments'][0]['photo']['sizes'].pop()['url']
            else:
                raise Exception()
        else:
            _type = "photo"
            img = attach[0]['photo']['sizes'].pop()['url']
    except:
        api.messages.send(
            peer_id=message['peer_id'],
            random_id=0,
            message=f"{config.prefixes['error']} Необходимо ответить на сообщение с фотографией / стикером, либо прикрепить фотографию.",
            reply_to=message['id']
        )
        return

    filename = "files/" + os.path.basename(img).split('?')[0]
    if len(filename.split('.')) < 2: filename += ".png"

    r = requests.get(img)
    with open(filename, 'wb') as f:
        f.write(r.content)

    os.system(f"convert {filename} -negate {filename}")

    if _type == "sticker":
        uploaded = uploader.graffiti(filename, peer_id=message['peer_id'])['graffiti']
        attach = f"graffiti{uploaded['owner_id']}_{uploaded['id']}"
    else:
        uploaded = uploader.photo_messages(filename, peer_id=message['peer_id'])[0]
        attach = f"photo{uploaded['owner_id']}_{uploaded['id']}"

    os.remove(filename)
    api.messages.send(
        peer_id=message['peer_id'],
        random_id=0,
        attachment=attach,
        reply_to=message['id']
    )
    return
Ejemplo n.º 17
0
def main():
    vk_session = vk_api.VkApi(token=TOKEN)
    longpoll = VkBotLongPoll(vk_session, 195095163)
    upload = VkUpload(vk_session)
    vk = vk_session.get_api()

    for event in longpoll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            vk.messages.send(
                user_id=event.obj.message['from_id'],
                random_id=get_random_id(),
                message="Введи название местности которую хочешь увидеть. Например Калуга"
            )

            for event in longpoll.listen():
                if event.type == VkBotEventType.MESSAGE_NEW:
                    toponim = event.obj.message['text']

                    keyboard = VkKeyboard(one_time=True)

                    keyboard.add_button(
                        'map (схема)', color=VkKeyboardColor.DEFAULT)
                    keyboard.add_button(
                        'sat (спутник)', color=VkKeyboardColor.POSITIVE)
                    keyboard.add_button(
                        'skl (гибрид)', color=VkKeyboardColor.NEGATIVE)
                    keyboard.add_line()
                    keyboard.add_location_button()

                    vk.messages.send(user_id=event.obj.message['from_id'],
                                     message="Выберите тип карты на клавиатуре",
                                     keyboard=keyboard.get_keyboard(),
                                     random_id=get_random_id())

                    for event in longpoll.listen():
                        if event.type == VkBotEventType.MESSAGE_NEW:
                            map_type = {
                                'map (схема)': 'map', 'sat (спутник)': 'sat', 'skl (гибрид)': 'skl'}
                            im = get_image(
                                toponim, map_type[event.obj.message['text']])

                            photo = upload.photo_messages(photos=im)[0]

                            attachments = 'photo{}_{}'.format(
                                photo['owner_id'], photo['id'])

                            vk.messages.send(
                                user_id=event.obj.message['from_id'],
                                attachment=attachments,
                                random_id=get_random_id(),
                                message=f"Это {toponim}. Что вы еще хотите увидеть?"
                            )
                            break
                    

        else:
            print(event.type)
Ejemplo n.º 18
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)
Ejemplo n.º 19
0
 def get_attachments(self, photos):
     """Создает и возврашает объект класса VkUpload с фотографиями photos."""
     attachments = []
     upload = VkUpload(self.session)
     for item in photos:
         image = requests.get(item['url'], stream=True)
         photo = upload.photo_messages(photos=image.raw)[0]
         attachments.append('photo{}_{}'.format(photo['owner_id'],
                                                photo['id']))
     return attachments
Ejemplo n.º 20
0
def upload_photo_for_message(vk, image_url):
    upload = VkUpload(vk)

    attachment = []
    image_content = requests.get(image_url)
    image_content.raise_for_status()
    file_obj = BytesIO(image_content.content)
    photo = upload.photo_messages(file_obj)[0]
    attachment.append("photo{}_{}".format(photo["owner_id"], photo["id"]))
    return attachment
Ejemplo n.º 21
0
def uploadImg(self, path):
    """
    :param self: класс бота или че там я хз
    :param path: путь к фалу
    :return: строку для аттачмента
    """
    upload = VkUpload(self.bot.vk)
    photo = upload.photo_messages(path)[0]

    return f"photo{photo['owner_id']}_{photo['id']},"
Ejemplo n.º 22
0
def main():
	# Настройки
	vk_token="" # Токен пользователя
	app_id = "" # ID приложения
	vk_client_secret = "" # Ключ приложения 

	chat_id =  # id отслеживаемого чата (Обязательно число)
	mesAnswer = True # Подкрепляется ли восстановление втарки сообщением
	mesTxt = "Технологии на страже революции" # Текст сообщения
	dialog_id = 2000000000 + chat_id # СОздание peer_id

	# Авторизация
	vk_session = vk_api.VkApi(token=vk_token, app_id=app_id, client_secret=vk_client_secret)
	vk = vk_session.get_api()

	global IsMyUpdate # Объявления костыля как глобального

	# Подключение дополнительных библиотек
	longpoll = VkLongPoll(vk_session)
	upload = VkUpload(vk_session) 

	# Перебор данных
	for event in longpoll.listen():
		if event.type == VkEventType.CHAT_UPDATE:
			
			# Проверяем нужный ли чат
			if event.chat_id == chat_id:
				# Если не мы меняли аватар
				if not IsMyUpdate:
					try:
						# Загружаем новую
						r = upload.photo_chat(photo='gerb.png', chat_id=chat_id)
						print(r)
						print("Капитализм не пройдет!")
						# Отмечаем, что это мы, теперь это смена автара не обработается из за условия вше
						IsMyUpdate = True           
					except Exception as e:
						print(e) # выводим ошибки, если таковые имеются
					
					if mesAnswer:
						try:
							# Отправка сообщения
							vk.messages.send(
								peer_id=dialog_id,
								random_id=get_random_id(),
								message=mesTxt
							)
						except Exception as e:
							print(e) # выводим ошибки, если таковые имеются
				else:
					IsMyUpdate = False # Сбрасываем костыль
		elif event.type == VkEventType.MESSAGE_NEW:
			print(event.__dict__)
		else:
			print(event.type)
Ejemplo n.º 23
0
    def __init__(self):
        CommonBot.__init__(self, Platform.VK)

        self.token = env.str('VK_BOT_TOKEN')
        self.group_id = env.str('VK_BOT_GROUP_ID')
        vk_session = VkApi(token=self.token,
                           api_version="5.131",
                           config_filename="secrets/vk_bot_config.json")
        self.longpoll = MyVkBotLongPoll(vk_session, group_id=self.group_id)
        self.upload = VkUpload(vk_session)
        self.vk = vk_session.get_api()
Ejemplo n.º 24
0
 def UploadPhotoInMessage(self, vk_session, photo_url, attachments):
     upload = VkUpload(vk_session)
     image = self._SESSION.get(photo_url, stream=True)
     if not image:
         return attachments
     try:
         photo = upload.photo_messages(photos=image.raw)[0]
     except ApiError:
         return attachments
     attachments.append(f'photo{photo["owner_id"]}_{photo["id"]}')
     return attachments
Ejemplo n.º 25
0
def get(vk_session, session, image_url):
    attachments = []
    from vk_api import VkUpload

    upload = VkUpload(vk_session)
    image = session.get(image_url, stream=True)
    photo = upload.photo_messages(photos=image.raw)[0]
    attachments.append(
        'photo{}_{}'.format(photo['owner_id'], photo['id'])
    )
    attachment = ','.join(attachments)
    return attachment
Ejemplo n.º 26
0
 def __send_message(self, peer_id, msg, file=""):
     try:
         upload = VkUpload(self.bot.vk)
         audio = upload.audio_message(
             file, peer_id=peer_id,
             group_id=self.bot.group_id)['audio_message']
     finally:
         os.remove(file)
     self.bot.send_message(
         peer_id,
         msg,
         attachment=f"audio_message{audio['owner_id']}_{audio['id']}")
Ejemplo n.º 27
0
    def send_photo(self, user_id, image):
        upload = VkUpload(self.vk)

        f = io.BytesIO()
        image.save(f, format='png')
        f.seek(0)

        photo = upload.photo_messages(photos=f)[0]
        attachment = "photo{}_{}".format(photo['owner_id'], photo['id'])
        self.vk_api.messages.send(user_id=user_id,
                                  attachment=attachment,
                                  v=5.50)
Ejemplo n.º 28
0
    def __init__(self):
        Thread.__init__(self)
        CommonBot.__init__(self, Platform.VK)

        self.token = env.str('VK_BOT_TOKEN')
        self.group_id = env.str('VK_BOT_GROUP_ID')
        vk_session = VkApi(token=self.token, api_version="5.107", config_filename="secrets/vk_bot_config.json")
        self.longpoll = MyVkBotLongPoll(vk_session, group_id=self.group_id)
        self.upload = VkUpload(vk_session)
        self.vk = vk_session.get_api()

        self.vk_user = VkUser()

        self.test_chat = Chat.objects.get(chat_id=env.str("VK_TEST_CHAT_ID"))
Ejemplo n.º 29
0
    def __init__(self, api_token, group_id, func):
        self.token = api_token
        self.group = group_id
        self.func = func
        # Для Long Poll
        self.vk_session = vk_api.VkApi(token=api_token, scope=4096)

        # Для загрузки файлов
        self.upload = VkUpload(self.vk_session)

        # Для использования Long Poll API
        self.long_poll = VkBotLongPoll(self.vk_session, group_id)

        # Для вызова методов vk_api
        self.vk = self.vk_session.get_api()
Ejemplo n.º 30
0
    def __init__(self, group_id, token):
        # logging.basicConfig(level=logging.ERROR, handlers=[logging.FileHandler('logs.log', 'w', 'utf-8')])

        self.group_id = group_id
        self.token = token
        self.message_list = []

        self.vk = VkApi(token=token)
        self.img = VkUpload(self.vk)
        self.keyboard = VkKeyboard(one_time=True)
        self.long_poller = VkBotLongPoll(self.vk, self.group_id)
        self.api = self.vk.get_api()
        self.funcs = SupportFunctions()

        self._requisites = ''
Ejemplo n.º 31
0
def main():
    session = requests.Session()

    # Авторизация пользователя:
    """
    login, password = '******', 'mypassword'
    vk_session = vk_api.VkApi(login, password)

    try:
        vk_session.auth(token_only=True)
    except vk_api.AuthError as error_msg:
        print(error_msg)
        return
    """

    # Авторизация группы (для групп рекомендуется использовать VkBotLongPoll):
    # при передаче token вызывать vk_session.auth не нужно
    """
    vk_session = vk_api.VkApi(token='токен с доступом к сообщениям и фото')
    """

    vk = vk_session.get_api()

    upload = VkUpload(vk_session)  # Для загрузки изображений
    longpoll = VkLongPoll(vk_session)

    for event in longpoll.listen():
        if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
            print('id{}: "{}"'.format(event.user_id, event.text), end=' ')

            response = session.get(
                'http://api.duckduckgo.com/',
                params={
                    'q': event.text,
                    'format': 'json'
                }
            ).json()

            text = response.get('AbstractText')
            image_url = response.get('Image')

            if not text:
                vk.messages.send(
                    user_id=event.user_id,
                    random_id=get_random_id(),
                    message='No results'
                )
                print('no results')
                continue

            attachments = []

            if image_url:
                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(
                user_id=event.user_id,
                attachment=','.join(attachments),
                random_id=get_random_id(),
                message=text
            )
            print('ok')