@Gawain

Как отправить голосовое сообщение ботом ВК?

Вот таким способом пытаюсь отправить голосовое сообщение от имени бота

id = str(messages["items"][0]["last_message"]["from_id"])
upload = vk.method("docs.getMessagesUploadServer", {"type": "audio_message", "peer_id": id})
jsn = requests.post(upload["upload_url"], files={'file': open(path + f'_{i}.ogg', 'rb')}).json()
save = vk.method("docs.save", {"file": jsn["file"]})
send = 'doc{}_{}'.format(save["audio_message"]["owner_id"], save["audio_message"]["id"])
vk.method('messages.send',
                          {"peer_id": int(id),
                           "attachment": send, "random_id": random.randint(0, 2147483647)})

На этапе вызова метода docs.save получаю словарь, описывающий аудиосообщение, и в нем параметр "duration" равен нулю. И по итогу тоже бот отправляет голосовое сообщение длиной в 0 секунд. Подскажите, в чем ошибка?
  • Вопрос задан
  • 323 просмотра
Пригласить эксперта
Ответы на вопрос 1
Xaeruz
@Xaeruz
Программный Змей
Попробуйте использовать следующее:
audio = open('lol.mp3','rb')
a = session_api.docs.getMessagesUploadServer(type='audio_message')
b = requests.post(a['upload_url'], files={'file':audio}).json()
c = session_api.docs.save(file=b['file'])
doc = 'doc%s_%s_%s'%(c['audio_message']['owner_id'],c['audio_message']['id'],c['audio_message']['access_key'])
Ответ написан
Ваш ответ на вопрос

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

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