Vk_api - прикрепление фотографии и отправка сообщения - Python

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Прошу помощи с vk_api: ссылка на github Не могу понять каким образом отправить фото в сообщение. Знаю, что нужно для этого загрузить фото на сайт, получить какие-то его параметры и куда-то вбить. Не пойму какие функции с какими параметрами или какие объекты с какими методами использовать. Запутался окончательно. Сейчас есть программа (бот), которая авторизуется на сервере VK по токену сообщества. Боту присылаешь фотографию. Бот находит ссылку на эту фотографию. Считывает фотографию. Делает обработку фотографии. Сохраняет обработанную фотографию на компьютер, где запущен бот. Вопрос: как теперь эту фотографию отправить в ответ? То есть пользователь загрузил фото, и должен в ответ получить уже обработанное. Имеющийся код:
Листинг программы
  1. # -*- coding: utf-8 -*-
  2. import vk_api
  3. import cv2
  4. import numpy
  5. import urllib
  6. import vk_api.longpoll
  7.  
  8. def main():
  9. token_file = open('token.txt')
  10. vk_session = vk_api.VkApi(token = token_file.read())
  11. token_file.close()
  12. vk_session._auth_token()
  13. vk = vk_session.get_api()
  14. longpoll = vk_api.longpoll.VkLongPoll(vk_session)
  15. for event in longpoll.listen():
  16. if event.type == vk_api.longpoll.VkEventType.MESSAGE_NEW and event.to_me:
  17. msg = vk.messages.getById(message_ids=event.message_id)
  18. photo_url = msg['items'][0]['attachments'][0]['photo']['photo_2560']
  19. req = urllib.request.urlopen(photo_url)
  20. arr = numpy.asarray(bytearray(req.read()), dtype=numpy.uint8)
  21. img = cv2.imdecode(arr, -1)
  22. img = cv2.bitwise_not(img)
  23. cv2.imwrite("1.jpg", img)
  24. if __name__ == '__main__':
  25. main()

Решение задачи: «Vk_api - прикрепление фотографии и отправка сообщения»

textual
Листинг программы
  1.  def photo_messages(self, photos):
  2.         """ Загрузка изображений в сообщения
  3.        :param photos: путь к изображению(ям) или file-like объект(ы)
  4.        :type photos: str, list
  5.        """
  6.  
  7.         url = self.vk.method('photos.getMessagesUploadServer')['upload_url']
  8.  
  9.         photo_files = open_files(photos)
  10.         response = self.vk.http.post(url, files=photo_files)
  11.         close_files(photo_files)
  12.  
  13.         response = self.vk.method('photos.saveMessagesPhoto', response.json())
  14.  
  15. return response

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут