Awesome
<h1 align="center">Joe Bot - Cron Module</h1> <p align="center">Emiting events on recurring schedules. https://github.com/go-joe/joe</p> <p align="center"> <a href="https://github.com/go-joe/cron/releases"><img src="https://img.shields.io/github/tag/go-joe/cron.svg?label=version&color=brightgreen"></a> <a href="https://circleci.com/gh/go-joe/cron/tree/master"><img src="https://circleci.com/gh/go-joe/cron/tree/master.svg?style=shield"></a> <a href="https://goreportcard.com/report/github.com/go-joe/cron"><img src="https://goreportcard.com/badge/github.com/go-joe/cron"></a> <a href="https://codecov.io/gh/go-joe/cron"><img src="https://codecov.io/gh/go-joe/cron/branch/master/graph/badge.svg"/></a> <a href="https://pkg.go.dev/github.com/go-joe/cron?tab=doc"><img src="https://img.shields.io/badge/godoc-reference-blue.svg?color=blue"></a> <a href="https://github.com/go-joe/cron/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-BSD--3--Clause-blue.svg"></a> </p>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
- 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.
License
This project is licensed under the BSD-3-Clause License - see the LICENSE file for details.