mirror of
https://github.com/lukaszraczylo/go-telegram.git
synced 2026-06-05 22:43:59 +00:00
ac7cae8fa7
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
30 lines
1.0 KiB
Go
30 lines
1.0 KiB
Go
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
|
|
}
|
|
}
|