mirror of
https://github.com/lukaszraczylo/go-telegram.git
synced 2026-06-08 22:59:33 +00:00
Initial release of go-telegram
A fully-generated, strongly-typed Go client for the Telegram Bot API. * 176 methods + 301 types generated from Bot API v10.0 * 1408 auto-generated tests (8 scenarios per method) * Typed unions throughout — no 'any' in the public surface * Pluggable HTTP transport and JSON codec (default goccy/go-json) * Built-in retry middleware honouring Telegram's retry_after * Generic dispatcher with filters and conversation handlers * Self-verifying codegen pipeline (regen → audit → emit → run tests) * 14 example bots covering common patterns
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
package dispatch
|
||||
|
||||
// Handler is a generic handler over update payload type T. T is typically
|
||||
// *api.Message, *api.CallbackQuery, *api.InlineQuery, or *api.Update for
|
||||
// global middleware.
|
||||
type Handler[T any] func(ctx *Context, payload T) error
|
||||
|
||||
// Middleware wraps a Handler[T] with cross-cutting behaviour (logging,
|
||||
// recovery, auth). Middleware composition is left-to-right: Use(a,b,c)
|
||||
// runs as a(b(c(handler))).
|
||||
type Middleware[T any] func(Handler[T]) Handler[T]
|
||||
|
||||
// Chain composes a slice of middleware into a single Middleware[T].
|
||||
func Chain[T any](mws ...Middleware[T]) Middleware[T] {
|
||||
return func(h Handler[T]) Handler[T] {
|
||||
for i := len(mws) - 1; i >= 0; i-- {
|
||||
h = mws[i](h)
|
||||
}
|
||||
return h
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user