@tleppa

Как отправить фото в Вк ботом с помощью Python?

Я новичок и только начал разбираться в pythone. Посмотрел много решений не помогло. Я хочу отправить фото с компьютера в личное сообщение с пользователем от имени сообщества. Помогите пожалуйста и пожалуйста можно очень подробно.
Заранее спасибо.
  • Вопрос задан
  • 16677 просмотров
Пригласить эксперта
Ответы на вопрос 3
EvgenyCherny
@EvgenyCherny
I'm don't want you say I love you...
Привет, ты можешь воспользоваться комментариями выше, но я отвечу на твой вопрос
"Я хочу отправить фото с компьютера"
, так вот чтобы отправить фото с компьютера нужно его загрузить и отправить методом messages.send
Ниже приведен код:
a = vk.method("photos.getMessagesUploadServer")
b = requests.post(a['upload_url'], files={'photo': open('file.jpg', 'rb')}).json()
c = vk.method('photos.saveMessagesPhoto', {'photo': b['photo'], 'server': b['server'], 'hash': b['hash']})[0]
d = "photo{}_{}".format(c["owner_id"], c["id"])
vk.method("messages.send", {"peer_id": id, "message": "Ваша картинка", "attachment": d, "random_id": 0})

Также не забудьте прописать import requests
Ответ написан
Bloodie_lie
@Bloodie_lie
В vk_api встроена нужная вам функция VkUpload
Пример:
upload = vk_api.VkUpload(vk)
photo = upload.photo_messages('вашфайл')
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}'
vk.messages.send(peer_id=event.object.peer_id, random_id=0, attachment=attachment)
Ответ написан
w_horn
@w_horn
Отправить фото можно методом messages.send:
vk.method("messages.send", {"peer_id": id, "message": "TEST", "attachment": "photo-57846937_457307562", "random_id": 0})


В данном примере бот отправит аватарку паблика МДК.

5dd6e6555a563080928531.png

Медиавложения к личному сообщению, перечисленные через запятую. Каждое прикрепление представлено в формате: <type><owner_id>_<media_id>

<type> — тип медиавложения:
  • photo — фотография;
  • video — видеозапись;
  • audio — аудиозапись;
  • doc — документ;
  • wall — запись на стене;
  • market — товар.
  • poll — опрос.


owner_id> — идентификатор владельца медиавложения (обратите внимание, если объект находится в сообществе, этот параметр должен быть отрицательным).
<media_id> — идентификатор медиавложения
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы