Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var Worker = &cli.Command{ Name: "worker", Usage: "Start telegram bot worker", Flags: []cli.Flag{ &cli.BoolFlag{ Name: "cron", Usage: "enable cron service", DefaultText: "false", }, }, Action: func(cmd *cli.Context) error { cfg := config.Ctx(cmd.Context) logger := zerolog.Ctx(cmd.Context). With(). Str("context", "worker"). Logger() logger.Debug().Msg("Creating youtube service instance") youtube, err := ytube.NewService(cmd.Context, cfg.Youtube) if err != nil { logger.Error().Err(err).Msg("Starting error") return err } logger.Debug().Msg("Creating bot instance") bot, err := telegram.NewBot(cmd.Context, *cfg, youtube) if err != nil { logger.Error().Err(err).Msg("Starting error") return err } ctx, cancel := support.WithKillSignal(cmd.Context) go func() { <-ctx.Done() logger.Warn().Err(ctx.Err()).Msg("Stoping bot...") bot.Stop() logger.Warn().Msg("Stoped...") }() logger.Info().Msg("Starting bot...") bot.OnError = func(err error, tx telebot.Context) { _ = tx.Reply(fmt.Sprintf("Error: %s", err.Error())) logger.Error().Err(err).Msg("Bot error") } go func() { if !cmd.Bool("cron") { logger.Warn().Msg("Cron is disabled") return } logger.Info().Msg("Cron is enabled") jobs, err := cron.New(ctx, *cfg, bot, youtube) if err != nil { logger.Warn().Err(err).Msg("Fail to create cron jobs") cancel() } err = jobs.Start(ctx) switch err { case context.Canceled: case nil: return default: logger.Warn().Err(err).Msg("Fail start jobs") cancel() } }() bot.Start() logger.Info().Msg("Done") return nil }, }
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.