Python VK chatbot, который предназначен для отправки аудио сообщений с использованием JSON, запросов и gtts, не работает - PullRequest
0 голосов
/ 04 июня 2019

Я решил создать чат-бот ВКонтакте, который бы отправлял людям аудиосообщение, содержащее текст их сообщения.Я представлю только одну функцию, но только одна ее часть не работает.Возможно, API ВКонтакте неисправен, но, возможно, в моем коде есть ошибка.

      if body.lower()[:6:] == "/голос":
          counter += 1
          vk.method("messages.send", {"peer_id": id, "message": "Сейчас запишу голосовое сообщение!", "random_id": random.randint(1, 2147483647)})
          tts = gTTS(text=body[7::], lang="ru", lang_check=True)
          name = "voice.ogg"
          tts.save(name)
          a = vk.method("docs.getMessagesUploadServer", {"type": "audio_message", "peer_id": id})
          b = requests.post(a['upload_url'], files={'file': open("/home/mlgshestopalov/voice.ogg", 'rb')}).json()
          vk.method("messages.send", {"peer_id": id, "message": "Сохраняю файл...", "random_id": random.randint(1, 2147483647)})
          c = vk.method("docs.save", {"file": b["file"]})[0]
          vk.method("messages.send", {"peer_id": id, "message": "Файл сохранён!", "random_id": random.randint(1, 2147483647)})
          d = 'doc{}_{}'.format(c['owner_id'], c['id'])
          vk.method("messages.send", {"peer_id": id, "message": "Отправляю сообщение...", "random_id": random.randint(1, 2147483647)})
          vk.method('messages.send', {'peer_id': id, 'attachment': d})

Я ожидал, что бот отправит следующее:

Сохраняю файл...

Файл сохранён!

Отправляю сообщение...

И звуковое сообщение

Но бот только отправляет

Сохраняю файл...

Файл сохранён!

ГТЦ отлично работает, работает, файл сохраняется без ошибок.

1 Ответ

0 голосов
/ 18 июня 2019

Вы должны заключить в квадратные скобки вместо 0 -> 'doc'

c = vk.method("docs.save", {"file": b["file"]})['doc']
...