61 lines
1.3 KiB
Go
61 lines
1.3 KiB
Go
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"
|
||
)
|
||
|
||
|
||
|
||
// Чатбот
|
||
func JiraBot(cfg *config.Config) {
|
||
|
||
redis := utils.Redis(cfg.Redis)
|
||
ctx := context.Background()
|
||
pnsq := utils.GetProducer()
|
||
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))
|
||
|
||
b.Handle("/hello", func(m *telegram.Message) {
|
||
b.Send(m.Sender, "Hello World from chatbot")
|
||
messageBody := []byte("hello")
|
||
topicName := "jira"
|
||
// 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)
|
||
}
|
||
})
|
||
fmt.Println(templates.Title(b.Me, cfg.BotVersion, jiraClient.GetBaseURL().Host))
|
||
b.Start()
|
||
}
|