2021-06-03 01:59:32 +03:00
|
|
|
|
package bot
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
"fmt"
|
|
|
|
|
"git/ecom/jira-bot/pkg/bot/middlewares"
|
|
|
|
|
"git/ecom/jira-bot/pkg/bot/scenes"
|
|
|
|
|
"git/ecom/jira-bot/pkg/config"
|
|
|
|
|
"git/ecom/jira-bot/pkg/templates"
|
|
|
|
|
"git/ecom/jira-bot/pkg/utils"
|
|
|
|
|
|
|
|
|
|
"log"
|
|
|
|
|
|
|
|
|
|
telegram "gopkg.in/tucnak/telebot.v2"
|
|
|
|
|
)
|
|
|
|
|
|
2021-06-03 09:30:25 +03:00
|
|
|
|
|
|
|
|
|
|
2021-06-03 01:59:32 +03:00
|
|
|
|
// Чатбот
|
2021-06-06 03:46:11 +03:00
|
|
|
|
func JiraBot(cfg *config.Config) {
|
2021-06-03 01:59:32 +03:00
|
|
|
|
|
|
|
|
|
redis := utils.Redis(cfg.Redis)
|
|
|
|
|
ctx := context.Background()
|
2021-06-03 09:30:25 +03:00
|
|
|
|
pnsq := utils.GetProducer()
|
2021-06-03 01:59:32 +03:00
|
|
|
|
jiraClient, _ := utils.GetClient(&cfg.Jira)
|
|
|
|
|
b, err := telegram.NewBot(telegram.Settings{
|
|
|
|
|
URL: cfg.Telegram.Url,
|
|
|
|
|
Token: cfg.Telegram.Token,
|
|
|
|
|
Poller: middlewares.RedisSession(redis, ctx),
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatal(err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
b.Handle(telegram.OnText, func(m *telegram.Message) {
|
|
|
|
|
// spew.Dump(m)
|
|
|
|
|
b.Send(m.Sender, m.Text)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
// Cтартовая сцена
|
|
|
|
|
b.Handle("/start", scenes.Start(b, cfg))
|
|
|
|
|
|
|
|
|
|
b.Handle("/exit", scenes.Exit(b, redis, ctx))
|
2021-06-03 09:30:25 +03:00
|
|
|
|
|
2021-06-03 01:59:32 +03:00
|
|
|
|
b.Handle("/hello", func(m *telegram.Message) {
|
2021-06-06 03:46:11 +03:00
|
|
|
|
b.Send(m.Sender, "Hello World from chatbot")
|
2021-06-03 09:30:25 +03:00
|
|
|
|
messageBody := []byte("hello")
|
2021-06-06 03:46:11 +03:00
|
|
|
|
topicName := "jira"
|
2021-06-03 09:30:25 +03:00
|
|
|
|
// Synchronously publish a single message to the specified topic.
|
|
|
|
|
// Messages can also be sent asynchronously and/or in batches.
|
|
|
|
|
err = pnsq.Publish(topicName, messageBody)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatal(err)
|
|
|
|
|
}
|
2021-06-03 01:59:32 +03:00
|
|
|
|
})
|
2021-06-03 09:30:25 +03:00
|
|
|
|
fmt.Println(templates.Title(b.Me, cfg.BotVersion, jiraClient.GetBaseURL().Host))
|
2021-06-03 01:59:32 +03:00
|
|
|
|
b.Start()
|
|
|
|
|
}
|