tg/src/behx/action.go

57 lines
1 KiB
Go
Raw Normal View History

2023-07-09 01:28:59 +03:00
package behx
// Implementing the intereface lets you
// provide behaviour for the buttons etc.
type Action interface {
Act(*Bot)
}
// Customized action for the bot.
type CustomAction func(*Bot)
// The type implements changing screen to the underlying ScreenId
type ScreenChange ScreenId
// Returns new ScreenChange.
func NewScreenChange(screen string) ScreenChange {
return ScreenChange(screen)
}
// Returns new CustomAction.
func NewCustomAction(fn func(*Bot)) CustomAction {
return CustomAction(fn)
}
func (sc ScreenChange) Act(c *Context) {
c.ChangeScreen(ScreenId(sc))
}
func (ca CustomAction) Act(c *Context) {
ca(bot)
}
/*
// The type describes interface
// defining what should be done.
type Actioner interface {
Act(*bot)
}
// Simple way to define that the button should just change
// screen to the Id.
type ScreenChanger ScreenId
// Custom function to be executed on button press.
type ActionFunc func(*Bot)
func (a ActionFunc) Act(bot *Bot) {
a(bot)
}
func (sc ScreenChanger) Act(bot *Bot) {
bot.ChangeScreenTo(sc)
}
*/