mirror of
https://github.com/lukaszraczylo/go-telegram.git
synced 2026-06-24 04:31:26 +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,29 @@
|
||||
package client
|
||||
|
||||
// Option configures a Bot at construction time. Per-call configuration is
|
||||
// expressed via typed parameter structs (e.g. SendMessageParams), not options.
|
||||
type Option func(*Bot)
|
||||
|
||||
// WithHTTPClient overrides the HTTP transport. Pass any HTTPDoer
|
||||
// implementation (e.g. an *http.Client wrapping a custom RoundTripper, or
|
||||
// a fasthttp adapter).
|
||||
func WithHTTPClient(c HTTPDoer) Option { return func(b *Bot) { b.http = c } }
|
||||
|
||||
// WithCodec overrides the JSON codec. Pass goccy/go-json, sonic, or any
|
||||
// type implementing Codec to swap out encoding/json.
|
||||
func WithCodec(c Codec) Option { return func(b *Bot) { b.codec = c } }
|
||||
|
||||
// WithBaseURL overrides the API base URL. Useful for testing against a
|
||||
// local httptest.Server, or for self-hosted Bot API servers.
|
||||
func WithBaseURL(url string) Option { return func(b *Bot) { b.base = url } }
|
||||
|
||||
// WithLogger sets the logger used for diagnostic events. Passing nil
|
||||
// silently disables logging.
|
||||
func WithLogger(l Logger) Option {
|
||||
return func(b *Bot) {
|
||||
if l == nil {
|
||||
l = NoopLogger{}
|
||||
}
|
||||
b.logger = l
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user