Simple pluggable serve-and-handle API

pull/92/head
Ian Byrd 7 years ago committed by GitHub
commit 2d298dfca8

@ -6,6 +6,7 @@ import (
"strconv"
"time"
"github.com/armon/go-radix"
"github.com/pkg/errors"
)
@ -20,12 +21,17 @@ type Bot struct {
// Telebot debugging channel. If present, Telebot
// will use it to report all occuring errors.
Errors chan error
tree *radix.Tree
}
// NewBot does try to build a Bot with token `token`, which
// is a secret API key assigned to particular bot.
func NewBot(token string) (*Bot, error) {
bot := &Bot{Token: token}
bot := &Bot{
Token: token,
tree: radix.New(),
}
user, err := bot.getMe()
if err != nil {

@ -0,0 +1,25 @@
package telebot
// Default handler prefix.
const Default string = ""
type Context struct {
Bot *Bot
Message Message
}
type Handler func(Context)
func (b *Bot) Handle(prefix string, handler Handler) {
b.tree.Insert(prefix, handler)
}
func (b *Bot) Serve(msg Message) {
request := msg.Text
_, value, _ := b.tree.LongestPrefix(request)
if endpoint, ok := value.(Handler); ok {
go endpoint(Context{b, msg})
}
}
Loading…
Cancel
Save