Skip to content

go-joe/cron

Repository files navigation

Joe Bot - Cron Module

Emiting events on recurring schedules. https://github.com/go-joe/joe


This repository contains a module for the Joe Bot library.

Getting Started

This library is packaged as Go module. You can get it via:

go get github.com/go-joe/cron

Example usage

This module allows you to run arbitrary functions or emit events on a schedule using a cron expressions or simply an interval expressed as time.Duration.

package main

import (
	"time"
	"github.com/go-joe/joe"
	"github.com/go-joe/cron"
)

type MyEvent struct {}

func main() {
	b := joe.New("example-bot",
		// emit a cron.Event once every day at midnight
		cron.ScheduleEvent("0 0 * * *"),
		
		// emit your own custom event every day at 09:00
		cron.ScheduleEvent("0 9 * * *", MyEvent{}), 
		
		// emit your own custom event every day at 09:00:30
		cron.ScheduleEvent("30 0 9 * * *", MyEvent{}),

		// cron expressions can be hard to read and might be overkill
		cron.ScheduleEventEvery(time.Hour, MyEvent{}), 
		
		// sometimes its easier to use a function
		cron.ScheduleFunc("0 9 * * *", func() { /* TODO */ }), 
		
		// functions can also be scheduled on simple intervals
		cron.ScheduleFuncEvery(5*time.Minute, func() { /* TODO */ }),
    )
	
	err := b.Run()
	if err != nil {
		b.Logger.Fatal(err.Error())
	}
}

Built With

  • robfig/cron - A cron library for go
  • zap - Blazing fast, structured, leveled logging in Go
  • testify - A simple unit test library

Contributing

If you want to hack on this repository, please read the short CONTRIBUTING.md guide first.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the BSD-3-Clause License - see the LICENSE file for details.