/
convert.go
67 lines (57 loc) · 1.6 KB
/
convert.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package commands
import (
"strings"
"time"
"github.com/NexonSU/telegram-go-chatbot/utils"
tele "gopkg.in/telebot.v3"
)
// Convert given file
func Convert(context tele.Context) error {
if context.Message().ReplyTo == nil {
for _, entity := range context.Message().Entities {
if entity.Type == tele.EntityURL {
return Download(context)
}
}
return utils.ReplyAndRemove("Пример использования: <code>/convert</code> в ответ на какое-либо сообщение с медиа-файлом.\nДопольнительные параметры: gif,mp3,ogg,jpg.", context)
}
if context.Message().ReplyTo.Media() == nil {
for _, entity := range context.Message().ReplyTo.Entities {
if entity.Type == tele.EntityURL {
return Download(context)
}
}
return utils.ReplyAndRemove("Какого-либо медиа файла нет в указанном сообщении.", context)
}
media := context.Message().ReplyTo.Media()
var targetArg string
targetArg = media.MediaType()
if targetArg == "sticker" {
if context.Message().ReplyTo.Sticker.Video {
targetArg = "gif"
}
}
if len(context.Args()) == 1 {
targetArg = strings.ToLower(context.Args()[0])
}
var done = make(chan bool, 1)
go func() {
for {
select {
case <-done:
return
default:
context.Notify(tele.ChatAction(tele.UploadingDocument))
}
time.Sleep(time.Second * 5)
}
}()
defer func() {
done <- true
}()
file, err := utils.Bot.FileByID(media.MediaFile().FileID)
if err != nil {
return err
}
return utils.FFmpegConvert(context, file.FilePath, targetArg)
}