Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/go-joe/cron

Cron jobs for the Joe bot library
https://github.com/go-joe/cron

bot chat chatbot-framework joe slack

Last synced: 3 days ago
JSON representation

Cron jobs for the Joe bot library

Awesome Lists containing this project

README

        

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][joe].

## Getting Started

This library is packaged as [Go module][go-modules]. You can get it via:

```bash
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][cron] or simply an interval expressed as `time.Duration`.

```go
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](https://github.com/robfig/cron) - A cron library for go
* [zap](https://github.com/uber-go/zap) - Blazing fast, structured, leveled logging in Go
* [testify](https://github.com/stretchr/testify) - A simple unit test library

## Contributing

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

## Versioning

We use [SemVer](http://semver.org/) for versioning. For the versions available,
see the [tags on this repository][tags].

## Authors

- **Friedrich Große** - *Initial work* - [fgrosse](https://github.com/fgrosse)
- **Julius Bachnick** - *Update cron library to v3* - [juliusbachnick](https://github.com/juliusbachnick)

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

## License

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

[joe]: https://github.com/go-joe/joe
[go-modules]: https://github.com/golang/go/wiki/Modules
[tags]: https://github.com/go-joe/cron/tags
[contributors]: https://github.com/go-joe/cron/contributors
[cron]: https://en.wikipedia.org/wiki/Cron#Overview