worker

package
v0.1.0-beta Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 4, 2022 License: GPL-3.0 Imports: 10 Imported by: 0

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL