audioUpload := tgbotapi.NewAudioUpload(update.Message.Chat.ID, ...)
audioUpload.ReplyMarkup = update.Message.MessageID
_, err := bot.Send(audioUpload)
file, err := os.Open("audio.mp3")
if err != nil {
panic(err)
}
defer file.Close()
audioUpload := tgbotapi.NewAudioUpload(update.Message.Chat.ID, tgbotapi.FileReader{
Name: "audio.mp3",
Reader: file,
Size: -1, // If Size is -1, it will read the entire Reader into memory to calculate a Size.
})
audioUpload.ReplyToMessageID = update.Message.MessageID
_, err := bot.Send(audioUpload)
if err != nil {
panic(err)
}
package main
import (
"log"
"github.com/davecgh/go-spew/spew"
"github.com/go-telegram-bot-api/telegram-bot-api"
)
func main() {
// подключаемся к боту с помощью токена
bot, err := tgbotapi.NewBotAPI("ТОКЕН")
if err != nil {
log.Panic(err)
}
bot.Debug = true
log.Printf("Authorized on account %s", bot.Self.UserName)
// инициализируем канал, куда будут прилетать обновления от API
u := tgbotapi.NewUpdate(0)
u.Timeout = 60
updates, err := bot.GetUpdatesChan(u)
if err != nil {
log.Fatal(err)
}
// читаем обновления из канала
for update := range updates {
switch {
case update.Message != nil: // Если было прислано сообщение, то обрабатываем, так как могут приходить не только сообщения.
OnMessage(bot, update.Message)
}
}
}
func OnMessage(bot *tgbotapi.BotAPI, message *tgbotapi.Message) {
// Пользователь, который написал боту
userName := message.From.UserName
// ID чата/диалога.
// Может быть идентификатором как чата с пользователем
// (тогда он равен UserID) так и публичного чата/канала
chatID := message.Chat.ID
log.Printf("[%s] %d", userName, chatID)
spew.Dump(message) // выводим то что пришло (Для отладки!!!)
var msg tgbotapi.Chattable
switch {
case message.Text != "": // Текстовое ли сообщение?
msg = tgbotapi.NewMessage(chatID, message.Text)
case message.Photo != nil: // Это фото?
photoArray := *message.Photo
photoLastIndex := len(photoArray) - 1
photo := photoArray[photoLastIndex] // Получаем последний элемент массива (самую большую картинку)
msg = tgbotapi.NewPhotoShare(chatID, photo.FileID)
default: // Если не одно условие не сработало
msg = tgbotapi.NewMessage(chatID, "Не реализовано") // Отправляется на тот тип сообщения, который ещё не реализован выше ^
}
// и отправляем его
_, err := bot.Send(msg)
if err != nil {
log.Println(err)
}
}