54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package telegram
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"ticket-pimp/client/telegram/handler"
|
|
"ticket-pimp/internal/controller"
|
|
"ticket-pimp/internal/domain"
|
|
"ticket-pimp/internal/services"
|
|
|
|
"github.com/mr-linch/go-tg"
|
|
"github.com/mr-linch/go-tg/tgb"
|
|
)
|
|
|
|
type TelegramOptions struct {
|
|
GitService *services.Git
|
|
CloudService *services.Cloud
|
|
Coda *services.Coda
|
|
AppConfig *domain.Config
|
|
Controller *controller.WorkflowController
|
|
}
|
|
|
|
// runTgBot ...
|
|
// ..function creates new Telegram BOT instance
|
|
// ..throw env variables through bot's handlers
|
|
// ..setup tg bot router;
|
|
// and finally returns tgb.Poller
|
|
func Run(ctx context.Context, opts TelegramOptions) error {
|
|
|
|
log.Print("Start telegram bot init..")
|
|
client := tg.New(opts.AppConfig.Telegram.Token)
|
|
|
|
h := handler.NewHandler(
|
|
opts.GitService,
|
|
opts.CloudService,
|
|
opts.Coda,
|
|
opts.Controller,
|
|
)
|
|
|
|
router := tgb.NewRouter().
|
|
Message(h.Init, tgb.Command("init")).
|
|
Message(h.PingHandler, tgb.Command("ping")).
|
|
// Message(h.DevelopmentTaskHandler, tgb.TextHasPrefix("/new")).
|
|
// Message(h.NewRepoHandler, tgb.TextHasPrefix("/repo")).
|
|
// Message(h.NewFolderHandler, tgb.TextHasPrefix("/folder")).
|
|
Message(h.FarmTaskHandler, tgb.TextHasPrefix("/task"))
|
|
|
|
log.Print("Success init. Start poller.")
|
|
return tgb.NewPoller(
|
|
router,
|
|
client,
|
|
).Run(ctx)
|
|
}
|