Emiting events on recurring schedules. https://github.com/go-joe/joe
This repository contains a module for the Joe Bot library.
This library is packaged as Go module. You can get it via:
go get github.com/go-joe/cron
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())
}
}
- robfig/cron - A cron library for go
- zap - Blazing fast, structured, leveled logging in Go
- testify - A simple unit test library
If you want to hack on this repository, please read the short CONTRIBUTING.md guide first.
We use SemVer for versioning. For the versions available, see the tags on this repository.
- Friedrich Große - Initial work - fgrosse
- Julius Bachnick - Update cron library to v3 - juliusbachnick
See also the list of contributors who participated in this project.
This project is licensed under the BSD-3-Clause License - see the LICENSE file for details.