package main import ( "git.dragon-labs.de/alphyron/group_helper/cli" "git.dragon-labs.de/alphyron/group_helper/cli/commands" "git.dragon-labs.de/alphyron/group_helper/config" "git.dragon-labs.de/alphyron/group_helper/logic" "git.dragon-labs.de/alphyron/group_helper/repository" "log" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api" ) func main() { dbConfig := config.DatabaseConfig{} err := dbConfig.LoadConfig() if err != nil { log.Println("Problem while loading database environment variables") log.Fatal(err) } tgConfig := config.TelegramConfig{} err = tgConfig.LoadConfig() if err != nil { log.Println("Problem while loading telegram environment variables") log.Fatal(err) } bot, err := tgbotapi.NewBotAPI(tgConfig.TelegramKey) if err != nil { log.Println("Problem while authenticate at telegram") log.Fatal(err) } bot.Debug = tgConfig.TelegramDebug log.Printf("Authorized on account %s", bot.Self.UserName) groupHelperRepo, err := repository.NewUserHelperRepository() if err != nil { log.Println("Problem while connection to the Database") log.Fatal(err) } err = groupHelperRepo.InitRepository() if err != nil { log.Println("Problem while initial the Database") log.Fatal(err) } service := logic.NewGroupHelperService(groupHelperRepo) cm := InitialCommandManager(bot, service) u := tgbotapi.NewUpdate(0) u.Timeout = 60 updates, _ := bot.GetUpdatesChan(u) for update := range updates { _, err := cm.ExecuteUpdate(&update) if err != nil { log.Printf("ERROR - Command error") log.Println(err) } } } func InitialCommandManager(bot *tgbotapi.BotAPI, service logic.GroupHelperService) *cli.CommandManager { cm := &cli.CommandManager{ Commands: make([]cli.Command, 0), Bot: bot, } cm.RegisterCommand(commands.NewInfoCommand()) cm.RegisterCommand(commands.NewHelpCommand(cm)) cm.RegisterCommand(commands.NewJoinMessage(service)) cm.RegisterCommand(commands.NewLeaveMessage(service)) cm.RegisterCommand(commands.NewKickMessage(service)) cm.RegisterCommand(commands.NewVerifiedMessage(service)) return cm }