Finite State Machine for telebot. Based on aiogram FSM version.
It not a full implementation FSM. It just states manager for telegram bots.
Last release version (manually):
go get -u github.com/vitaliy-ukiru/[email protected]
Last commit from master (unstable)
go get -u github.com/vitaliy-ukiru/fsm-telebot@master
simple configuration
package main
import (
"os"
"time"
"github.com/vitaliy-ukiru/fsm-telebot"
"github.com/vitaliy-ukiru/fsm-telebot/storages/memory"
tele "gopkg.in/telebot.v3"
)
func main() {
bot, err := tele.NewBot(tele.Settings{
Token: os.Getenv("BOT_TOKEN"),
Poller: &tele.LongPoller{Timeout: 3 * time.Second},
})
if err != nil {
panic(err)
}
// for example using memory storage
// but prefer will use redis or file storage.
storage := memory.NewStorage()
manager := fsm.NewManager(
bot, // tele.Bot
nil, // handlers will setups to this group. Default: creates new
storage, // storage for states and data
nil, // context maker. Default: NewFSMContext
)
manager.Bind("/state", fsm.AnyState, func(c tele.Context, state fsm.Context) error {
userState, err := state.State()
if err != nil {
return c.Send("error: " + err.Error())
}
return c.Send(userState.GoString())
})
}
Many complex examples in directory examples.