Python&VK_API - Добавление изображения к сообщению

У меня есть бот, который отправляет некоторые данные о другом пользователе, и к сообщению которое он отправляет, нужно прикрепить картинку, которой нету на серверах ВК. То есть она хранится на жестком диске, можно ли как то это реализовать?


Ответы (1 шт):

Автор решения: nomnoms12

Для того чтобы добавить изображение к сообщению Вы должны:

  1. Загрузить изображение на сервер ВК

    Для этого можно использовать класс VkUpload и его метод photo_messages.

  2. Сформировать attachment

    Метод photo_messages вернёт ответ, в котором будет owner_id, id и access_key. attachment формируется следующим образом:

    '{type}{owner_id}_{id}_{access_key}'`
    

    Для фото type = 'photo'.

  3. Приложить attachment к сообщению

Пример:

from vk_api import VkApi
from vk_api.upload import VkUpload
from vk_api.utils import get_random_id

# Подставьте свои данные!
FILE = ''
ACCESS_TOKEN = ''
PEER_ID = 


def main():
    vk_session = VkApi(token=ACCESS_TOKEN)
    vk = vk_session.get_api()
    upload = VkUpload(vk)

    photo_obj = upload.photo_messages(FILE)[0]
    attachment = 'photo{owner_id}_{id}_{access_key}'.format(**photo_obj)

    vk.messages.send(
        random_id=get_random_id(),
        peer_id=PEER_ID,
        attachment=attachment,
    )


if __name__ == '__main__':
    main()
→ Ссылка