Как через POST запрос в golang реализовать функцию sendAudio для отправки аудиофайла в Телеграм через чат-бота?

Пишу Телеграм бота на GO без использования сторонних API
Никак не могу разобраться как составить правильний POST запрос для отправки локального аудиофайла
  • Вопрос задан
  • 397 просмотров
Решения вопроса 1
roman24hs
@roman24hs Автор вопроса
методом тыка написал, работает)

func sendAudio(ip int, fileName string) {
  // Открываем файл
  file, err := os.Open(fileName)
  if err != nil {
    log.Fatalln(err)
  }
  // Закрываем файл по завершению
  defer file.Close()

  // Буфер для хранения нашего тела запроса в виде байтов
  var requestBody bytes.Buffer

  // Создаем писателя
  multiPartWriter := multipart.NewWriter(&requestBody)

  // Инициализируем поле
  fileWriter, err := multiPartWriter.CreateFormFile("audio", fileName)
  if err != nil {
    log.Fatalln(err)
  }

  // Скопируйте содержимое файла в поле
  _, err = io.Copy(fileWriter, file)
  if err != nil {
    log.Fatalln(err)
  }

  // Заполняем остальные поля
  fieldWriter, err := multiPartWriter.CreateFormField("normal_field")
  if err != nil {
    log.Fatalln(err)
  }

  _, err = fieldWriter.Write([]byte("Value"))
  if err != nil {
    log.Fatalln(err)
  }

  // Закрываем запись данных
  multiPartWriter.Close()

  // Создаем объект реквеста
  req, err := http.NewRequest("POST", "https://api.telegram.org/bot[ТОКЕН БОТА]/sendAudio?chat_id=[chat_id]", &requestBody)
  if err != nil {
    log.Fatalln(err)
  }
  // Получаем и устанавливаем тип контента
  req.Header.Set("Content-Type", multiPartWriter.FormDataContentType())

  // Отправляем запрос

  client := &http.Client{}

  _, err = client.Do(req)
  if err != nil {
    log.Fatalln(err)
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@12rbah
Покажите код хотя бы. А так можете через Postman отправить, и он вам сгенерит код для POST запроса.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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