66 lines
1.9 KiB
Go
66 lines
1.9 KiB
Go
|
package scenes
|
|||
|
|
|||
|
import (
|
|||
|
"encoding/base64"
|
|||
|
"git/ecom/jira-bot/pkg/config"
|
|||
|
"git/ecom/jira-bot/pkg/templates"
|
|||
|
"git/ecom/jira-bot/pkg/utils"
|
|||
|
"log"
|
|||
|
"strings"
|
|||
|
|
|||
|
"github.com/davecgh/go-spew/spew"
|
|||
|
telegram "gopkg.in/tucnak/telebot.v2"
|
|||
|
)
|
|||
|
|
|||
|
/*
|
|||
|
Cтартовая команда
|
|||
|
|
|||
|
Пытаемся достать авторизацию из magic link или base64 токена
|
|||
|
Если ничего не нашли то приветствуем пользователя и предлагаем залогинится в чат боте
|
|||
|
*/
|
|||
|
func Start(b *telegram.Bot, cfg *config.Config) interface{} {
|
|||
|
return func(m *telegram.Message) {
|
|||
|
// Eсли что то есть в payload
|
|||
|
if len(m.Payload) > 0 {
|
|||
|
|
|||
|
decoded, err := base64.StdEncoding.DecodeString(m.Payload)
|
|||
|
if err != nil {
|
|||
|
log.Println("decode error:", err)
|
|||
|
b.Send(m.Sender, "Ошибка декодирования токена")
|
|||
|
return
|
|||
|
}
|
|||
|
tokenData := strings.Split(string(decoded), ":")
|
|||
|
cfg.Jira.Auth.Username, cfg.Jira.Auth.Password = tokenData[0], tokenData[1]
|
|||
|
|
|||
|
client, err := utils.GetClient(&cfg.Jira)
|
|||
|
if err != nil {
|
|||
|
log.Println(err)
|
|||
|
b.Send(m.Sender, "Ошибка авторизации в jira")
|
|||
|
// Отправить template
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
usr, userRes, err := client.User.GetSelf()
|
|||
|
if err != nil {
|
|||
|
log.Println(err)
|
|||
|
spew.Dump(userRes)
|
|||
|
b.Send(m.Sender, "Ошибка получении пользовательских данных")
|
|||
|
// Отправить template
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
sendRes, err := b.Send(m.Sender, templates.Hello(usr.DisplayName), telegram.ModeMarkdown)
|
|||
|
if err != nil {
|
|||
|
log.Println(err)
|
|||
|
spew.Dump(sendRes)
|
|||
|
b.Send(m.Sender, "Ошибка отправки сообщения")
|
|||
|
// Cделать отправку себе
|
|||
|
b.Send(m.Sender, err)
|
|||
|
}
|
|||
|
return
|
|||
|
}
|
|||
|
// Если ничего не нашли приветствуем пользователя
|
|||
|
b.Send(m.Sender, "Hello World!")
|
|||
|
}
|
|||
|
}
|