mirror of
https://github.com/lukaszraczylo/go-telegram.git
synced 2026-06-10 23:09:04 +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:
Vendored
+113
@@ -0,0 +1,113 @@
|
||||
// Code generated by cmd/genapi. DO NOT EDIT.
|
||||
|
||||
//go:build !ignore_autogenerated
|
||||
|
||||
package api
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/goccy/go-json"
|
||||
"strconv"
|
||||
|
||||
"github.com/lukaszraczylo/go-telegram/client"
|
||||
)
|
||||
|
||||
var _ = strconv.Itoa // keep import for multipart helpers
|
||||
var _ = json.Marshal // keep import for complex multipart fields
|
||||
|
||||
// GetMeParams is the parameter set for GetMe.
|
||||
//
|
||||
// A simple method for testing your bot's authentication token. Requires no parameters. Returns basic information about the bot in form of a User object.
|
||||
type GetMeParams struct {
|
||||
}
|
||||
|
||||
// GetMe calls the getMe Telegram Bot API method.
|
||||
//
|
||||
// A simple method for testing your bot's authentication token. Requires no parameters. Returns basic information about the bot in form of a User object.
|
||||
func GetMe(ctx context.Context, b *client.Bot, p *GetMeParams) (*User, error) {
|
||||
return client.Call[*GetMeParams, *User](ctx, b, "getMe", p)
|
||||
}
|
||||
|
||||
// SendMessageParams is the parameter set for SendMessage.
|
||||
//
|
||||
// Use this method to send text messages. On success, the sent Message is returned.
|
||||
type SendMessageParams struct {
|
||||
// Unique identifier for the target chat.
|
||||
ChatID ChatID `json:"chat_id"`
|
||||
// Text of the message to be sent.
|
||||
Text string `json:"text"`
|
||||
// Mode for parsing entities in the message text.
|
||||
ParseMode string `json:"parse_mode,omitempty"`
|
||||
}
|
||||
|
||||
// SendMessage calls the sendMessage Telegram Bot API method.
|
||||
//
|
||||
// Use this method to send text messages. On success, the sent Message is returned.
|
||||
func SendMessage(ctx context.Context, b *client.Bot, p *SendMessageParams) (*Message, error) {
|
||||
return client.Call[*SendMessageParams, *Message](ctx, b, "sendMessage", p)
|
||||
}
|
||||
|
||||
// SendDocumentParams is the parameter set for SendDocument.
|
||||
//
|
||||
// Use this method to send general files. On success, the sent Message is returned.
|
||||
type SendDocumentParams struct {
|
||||
// Unique identifier for the target chat.
|
||||
ChatID int64 `json:"chat_id"`
|
||||
// File to send.
|
||||
Document *InputFile `json:"document"`
|
||||
// Document caption.
|
||||
Caption string `json:"caption,omitempty"`
|
||||
}
|
||||
|
||||
// HasFile reports whether a multipart upload is required.
|
||||
func (p *SendDocumentParams) HasFile() bool {
|
||||
if p.Document != nil && p.Document.IsLocalUpload() {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// MultipartFields returns the non-file fields used in the multipart body.
|
||||
func (p *SendDocumentParams) MultipartFields() map[string]string {
|
||||
out := map[string]string{}
|
||||
out["chat_id"] = strconv.FormatInt(p.ChatID, 10)
|
||||
if p.Caption != "" {
|
||||
out["caption"] = p.Caption
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
// MultipartFiles returns the file parts.
|
||||
func (p *SendDocumentParams) MultipartFiles() []client.MultipartFile {
|
||||
var files []client.MultipartFile
|
||||
if p.Document != nil && p.Document.IsLocalUpload() {
|
||||
name := p.Document.Filename
|
||||
if name == "" {
|
||||
name = "document"
|
||||
}
|
||||
files = append(files, client.MultipartFile{FieldName: "document", Filename: name, Reader: p.Document.Reader})
|
||||
}
|
||||
return files
|
||||
}
|
||||
|
||||
// SendDocument calls the sendDocument Telegram Bot API method.
|
||||
//
|
||||
// Use this method to send general files. On success, the sent Message is returned.
|
||||
func SendDocument(ctx context.Context, b *client.Bot, p *SendDocumentParams) (*Message, error) {
|
||||
return client.Call[*SendDocumentParams, *Message](ctx, b, "sendDocument", p)
|
||||
}
|
||||
|
||||
// GetUpdatesParams is the parameter set for GetUpdates.
|
||||
//
|
||||
// Use this method to receive incoming updates using long polling. Returns an Array of Update objects.
|
||||
type GetUpdatesParams struct {
|
||||
// Limits the number of updates to be retrieved.
|
||||
Limit *int64 `json:"limit,omitempty"`
|
||||
}
|
||||
|
||||
// GetUpdates calls the getUpdates Telegram Bot API method.
|
||||
//
|
||||
// Use this method to receive incoming updates using long polling. Returns an Array of Update objects.
|
||||
func GetUpdates(ctx context.Context, b *client.Bot, p *GetUpdatesParams) ([]Update, error) {
|
||||
return client.Call[*GetUpdatesParams, []Update](ctx, b, "getUpdates", p)
|
||||
}
|
||||
Reference in New Issue
Block a user