137 lines
2.7 KiB
Go
137 lines
2.7 KiB
Go
package main
|
|
|
|
import (
|
|
log "github.com/kirillDanshin/dlog" // Insert logs only in debug builds
|
|
"github.com/toby3d/botan"
|
|
"github.com/toby3d/go-telegram" // My Telegram bindings
|
|
)
|
|
|
|
// message function check Message update on commands, sended stickers or other
|
|
// user stuff
|
|
func messages(msg *telegram.Message) {
|
|
if msg.IsCommand() {
|
|
commands(msg)
|
|
return
|
|
}
|
|
|
|
state, err := dbGetUserState(msg.From.ID)
|
|
errCheck(err)
|
|
|
|
switch state {
|
|
case stateNone:
|
|
appMetrika.TrackAsync(
|
|
"Nothing", msg.From.ID, *msg,
|
|
func(answer *botan.Answer, err error) {
|
|
log.Ln("Asynchonous:", answer.Status)
|
|
metrika <- true
|
|
},
|
|
)
|
|
|
|
bot.SendChatAction(msg.Chat.ID, telegram.ActionTyping)
|
|
|
|
T, err := switchLocale(msg.From.LanguageCode)
|
|
errCheck(err)
|
|
|
|
reply := telegram.NewMessage(
|
|
msg.Chat.ID,
|
|
T("error_unknown", map[string]interface{}{
|
|
"AddStickerCommand": cmdAddSticker,
|
|
"AddPackCommand": cmdAddPack,
|
|
"DeleteCommand": cmdDelete,
|
|
}))
|
|
reply.ParseMode = telegram.ModeMarkdown
|
|
|
|
_, err = bot.SendMessage(reply)
|
|
errCheck(err)
|
|
|
|
<-metrika
|
|
case stateAddSticker:
|
|
if msg.Sticker == nil {
|
|
appMetrika.Track("Message", msg.From.ID, *msg)
|
|
return
|
|
}
|
|
|
|
log.D(msg.Sticker)
|
|
log.D(msg.Sticker.Emoji)
|
|
|
|
appMetrika.TrackAsync(
|
|
"Add single sticker", msg.From.ID, *msg,
|
|
func(answer *botan.Answer, err error) {
|
|
log.Ln("Asynchonous:", answer.Status)
|
|
metrika <- true
|
|
},
|
|
)
|
|
|
|
actionAdd(msg, false)
|
|
|
|
<-metrika
|
|
case stateAddPack:
|
|
if msg.Sticker == nil {
|
|
appMetrika.Track("Message", msg.From.ID, *msg)
|
|
return
|
|
}
|
|
|
|
appMetrika.TrackAsync(
|
|
"Add pack", msg.From.ID, *msg,
|
|
func(answer *botan.Answer, err error) {
|
|
log.Ln("Asynchonous:", answer.Status)
|
|
metrika <- true
|
|
},
|
|
)
|
|
|
|
log.D(msg.Sticker)
|
|
log.D(msg.Sticker.Emoji)
|
|
|
|
actionAdd(msg, true)
|
|
|
|
<-metrika
|
|
case stateDelete:
|
|
if msg.Sticker == nil {
|
|
appMetrika.Track("Message", msg.From.ID, *msg)
|
|
return
|
|
}
|
|
|
|
appMetrika.TrackAsync(
|
|
"Delete sticker", msg.From.ID, *msg,
|
|
func(answer *botan.Answer, err error) {
|
|
log.Ln("Asynchonous:", answer.Status)
|
|
metrika <- true
|
|
},
|
|
)
|
|
|
|
log.D(msg.Sticker)
|
|
log.D(msg.Sticker.Emoji)
|
|
|
|
actionDelete(msg)
|
|
|
|
<-metrika
|
|
case stateReset:
|
|
appMetrika.TrackAsync(
|
|
"Reset pack", msg.From.ID, *msg,
|
|
func(answer *botan.Answer, err error) {
|
|
log.Ln("Asynchonous:", answer.Status)
|
|
metrika <- true
|
|
},
|
|
)
|
|
|
|
actionReset(msg)
|
|
|
|
<-metrika
|
|
default:
|
|
appMetrika.TrackAsync(
|
|
"Message", msg.From.ID, *msg,
|
|
func(answer *botan.Answer, err error) {
|
|
log.Ln("Asynchonous:", answer.Status)
|
|
metrika <- true
|
|
},
|
|
)
|
|
|
|
err = dbChangeUserState(msg.From.ID, stateNone)
|
|
errCheck(err)
|
|
|
|
messages(msg)
|
|
|
|
<-metrika
|
|
}
|
|
}
|