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
76 lines
2.1 KiB
Go
76 lines
2.1 KiB
Go
// Code generated by cmd/genapi. DO NOT EDIT.
|
|
|
|
//go:build !ignore_autogenerated
|
|
|
|
// Package api contains the Telegram Bot API object types and method
|
|
// wrappers, generated from the live documentation by cmd/genapi.
|
|
package api
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/goccy/go-json"
|
|
"io"
|
|
)
|
|
|
|
var _ = io.Discard // keep import even if no fields use io
|
|
var _ = json.Marshal // keep import for UnmarshalXxx helpers
|
|
var _ = fmt.Errorf // keep import for UnmarshalXxx helpers
|
|
|
|
// This object represents a Telegram user or bot.
|
|
type User struct {
|
|
// Unique identifier.
|
|
ID int64 `json:"id"`
|
|
// True, if this user is a bot.
|
|
IsBot bool `json:"is_bot"`
|
|
// User's or bot's first name.
|
|
FirstName string `json:"first_name"`
|
|
// Optional. User's or bot's last name.
|
|
LastName string `json:"last_name,omitempty"`
|
|
}
|
|
|
|
// ChatMember is a union type. The following concrete variants implement
|
|
// it:
|
|
// - ChatMemberOwner
|
|
// - ChatMemberAdministrator
|
|
//
|
|
// This object contains information about one member of a chat. Currently, the following 6 types of chat members are supported:
|
|
type ChatMember interface{ isChatMember() }
|
|
|
|
// isChatMember is the marker method that makes ChatMemberOwner implement ChatMember.
|
|
func (*ChatMemberOwner) isChatMember() {}
|
|
|
|
// isChatMember is the marker method that makes ChatMemberAdministrator implement ChatMember.
|
|
func (*ChatMemberAdministrator) isChatMember() {}
|
|
|
|
// UnmarshalChatMember decodes a ChatMember from JSON by inspecting the
|
|
// "status" field and dispatching to the correct concrete type.
|
|
func UnmarshalChatMember(data []byte) (ChatMember, error) {
|
|
var probe struct {
|
|
V string `json:"status"`
|
|
}
|
|
if err := json.Unmarshal(data, &probe); err != nil {
|
|
return nil, err
|
|
}
|
|
var v ChatMember
|
|
switch probe.V {
|
|
case "administrator":
|
|
v = &ChatMemberAdministrator{}
|
|
case "creator":
|
|
v = &ChatMemberOwner{}
|
|
case "kicked":
|
|
v = &ChatMemberBanned{}
|
|
case "left":
|
|
v = &ChatMemberLeft{}
|
|
case "member":
|
|
v = &ChatMemberMember{}
|
|
case "restricted":
|
|
v = &ChatMemberRestricted{}
|
|
default:
|
|
return nil, fmt.Errorf("ChatMember: unknown status %q", probe.V)
|
|
}
|
|
if err := json.Unmarshal(data, v); err != nil {
|
|
return nil, err
|
|
}
|
|
return v, nil
|
|
}
|