This commit is contained in:
Andrey Belvedersky
2021-06-03 01:59:32 +03:00
parent a4838bb973
commit 18b2d4e554
23 changed files with 821 additions and 22 deletions

27
pkg/bot/scenes/exit.go Normal file
View File

@ -0,0 +1,27 @@
package scenes
import (
"context"
"log"
"strconv"
"github.com/go-redis/redis/v8"
telegram "gopkg.in/tucnak/telebot.v2"
)
/*
Выход из чат бота
Удаляем сессию и прощаемся
*/
func Exit(b *telegram.Bot, redis *redis.Client, ctx context.Context) interface{} {
return func(m *telegram.Message) {
userid := strconv.Itoa(m.Sender.ID) + ":" + strconv.Itoa(int(m.Chat.ID))
err := redis.HDel(ctx, "users", userid).Err()
if err != nil {
log.Println("Ошибка удаления пользователя", err.Error())
}
b.Send(m.Sender, "Пока!")
}
}

65
pkg/bot/scenes/start.go Normal file
View File

@ -0,0 +1,65 @@
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"
)
/*
артовая команда
Пытаемся достать авторизацию из 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!")
}
}