R
R
Roman Sergeevich2021-03-28 18:04:24
go
Roman Sergeevich, 2021-03-28 18:04:24

How to implement the sendAudio function through a POST request in golang to send an audio file to Telegram via a chat bot?

I’m writing a Telegram bot on GO without using third-party APIs
I just can’t figure out how to make the correct POST request to send a local audio file

Answer the question

In order to leave comments, you need to log in

2 answer(s)
R
Roman Sergeevich, 2021-03-29
@roman24hs

I wrote at random, it works)

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, 2021-03-29
@12rbah

Show some code. Otherwise, you can send it through Postman, and it will generate a code for the POST request.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question