REPOSITORY / ScuroNeko/Laniakea
Compare commits
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7776acaf12
|
||
|
|
db31246eeb
|
||
|
|
d04c91342b
|
||
|
|
2e14d8b5df
|
||
|
|
6b9075c722
|
||
|
|
0b1a58a514
|
@@ -0,0 +1,14 @@
|
|||||||
|
version: "2"
|
||||||
|
run:
|
||||||
|
timeout: 5m
|
||||||
|
linters:
|
||||||
|
disable-all: true
|
||||||
|
enable:
|
||||||
|
- errcheck
|
||||||
|
- govet
|
||||||
|
- ineffassign
|
||||||
|
- staticcheck
|
||||||
|
- unused
|
||||||
|
issues:
|
||||||
|
max-issues-per-linter: 0
|
||||||
|
max-same-issues: 0
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
repos:
|
||||||
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
|
rev: v6.0.0
|
||||||
|
hooks:
|
||||||
|
- id: trailing-whitespace
|
||||||
|
- id: end-of-file-fixer
|
||||||
|
- id: check-merge-conflict
|
||||||
|
- id: check-yaml
|
||||||
|
- id: check-json
|
||||||
|
- id: mixed-line-ending
|
||||||
|
args: ["--fix=lf"]
|
||||||
|
|
||||||
|
- repo: local
|
||||||
|
hooks:
|
||||||
|
- id: gofmt
|
||||||
|
name: gofmt
|
||||||
|
entry: gofmt -w
|
||||||
|
language: system
|
||||||
|
types: [go]
|
||||||
|
|
||||||
|
- id: go-vet
|
||||||
|
name: go vet
|
||||||
|
entry: go vet ./...
|
||||||
|
language: system
|
||||||
|
pass_filenames: false
|
||||||
|
types: [go]
|
||||||
|
|
||||||
|
- id: golangci-lint
|
||||||
|
name: golangci-lint
|
||||||
|
entry: golangci-lint run
|
||||||
|
language: system
|
||||||
|
pass_filenames: false
|
||||||
|
types: [go]
|
||||||
|
|
||||||
|
- id: go-test
|
||||||
|
name: go test
|
||||||
|
entry: go test ./...
|
||||||
|
language: system
|
||||||
|
pass_filenames: false
|
||||||
|
stages: [pre-push]
|
||||||
|
types: [go]
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
# Проверка наличия golangci-lint
|
|
||||||
GO_LINT := $(shell command -v golangci-lint 2>/dev/null)
|
|
||||||
|
|
||||||
# Цель: запуск всех проверок кода
|
|
||||||
check:
|
|
||||||
@echo "🔍 Running code checks..."
|
|
||||||
@go mod tidy -v
|
|
||||||
@go vet ./...
|
|
||||||
@if [ -n "$(GO_LINT)" ]; then \
|
|
||||||
echo "✅ golangci-lint found, running..." && \
|
|
||||||
golangci-lint run --timeout=5m --verbose; \
|
|
||||||
else \
|
|
||||||
echo "⚠️ golangci-lint not installed. Install with: curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.57.2"; \
|
|
||||||
fi
|
|
||||||
@go test -race -v ./... 2>/dev/null || echo "⚠️ Tests skipped or failed (run manually with 'go test -race ./...')"
|
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
# Laniakea
|
# Laniakea
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
[](https://go.dev/)
|
[](https://go.dev/)
|
||||||
[](LICENSE)
|
[](LICENSE)
|
||||||

|

|
||||||
@@ -28,6 +30,12 @@ A lightweight, easy-to-use, and performant Telegram Bot API wrapper for Go. It s
|
|||||||
go get git.nix13.pw/scuroneko/laniakea
|
go get git.nix13.pw/scuroneko/laniakea
|
||||||
```
|
```
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go get github.com/scuroneko/laniakea
|
||||||
|
```
|
||||||
|
|
||||||
## 🚀 Quick Start (with step-by-step explanation)
|
## 🚀 Quick Start (with step-by-step explanation)
|
||||||
|
|
||||||
Here is a minimal echo/ping bot example with detailed comments.
|
Here is a minimal echo/ping bot example with detailed comments.
|
||||||
|
|||||||
+9
-1
@@ -1,10 +1,12 @@
|
|||||||
# Laniakea
|
# Laniakea
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
[](https://go.dev/)
|
[](https://go.dev/)
|
||||||
[](LICENSE)
|
[](LICENSE)
|
||||||

|

|
||||||
|
|
||||||
Легковесная, простая в использовании и производительная обёртка для Telegram Bot API на Go. Она упрощает разработку ботов благодаря чистой системе плагинов, поддержке中间件, автоматической генерации команд и встроенному ограничителю скорости запросов.
|
Легковесная, простая в использовании и производительная обёртка для Telegram Bot API на Go. Она упрощает разработку ботов благодаря чистой системе плагинов, поддержке Middleware, автоматической генерации команд и встроенному рейтлимитеру.
|
||||||
|
|
||||||
[English](README.md)
|
[English](README.md)
|
||||||
|
|
||||||
@@ -29,6 +31,12 @@
|
|||||||
go get git.nix13.pw/scuroneko/laniakea
|
go get git.nix13.pw/scuroneko/laniakea
|
||||||
```
|
```
|
||||||
|
|
||||||
|
или
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go get github.com/scuroneko/laniakea
|
||||||
|
```
|
||||||
|
|
||||||
## 🚀 Быстрый старт (с пошаговыми комментариями)
|
## 🚀 Быстрый старт (с пошаговыми комментариями)
|
||||||
Вот минимальный пример бота "echo/ping" с подробными комментариями.
|
Вот минимальный пример бота "echo/ping" с подробными комментариями.
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 297 KiB |
@@ -176,24 +176,30 @@ func NewBot[T any](opts *BotOpts) *Bot[T] {
|
|||||||
|
|
||||||
// Close gracefully shuts down bot-owned resources.
|
// Close gracefully shuts down bot-owned resources.
|
||||||
//
|
//
|
||||||
// Closes:
|
// Close shuts down, in order:
|
||||||
|
// - Registered plugins via Plugin.Close
|
||||||
// - Uploader (waits for pending uploads)
|
// - Uploader (waits for pending uploads)
|
||||||
// - API client
|
// - API client internals
|
||||||
// - RequestLogger (if enabled)
|
// - RequestLogger (if enabled)
|
||||||
// - Main logger
|
// - Main logger
|
||||||
//
|
//
|
||||||
// RunWithContext does not call Close automatically. The caller is responsible
|
// RunWithContext does not call Close automatically. The caller is responsible
|
||||||
// for invoking Close after RunWithContext returns to release these resources.
|
// for invoking Close after RunWithContext returns to release these resources.
|
||||||
//
|
//
|
||||||
// Returns a joined error containing all shutdown failures, if any.
|
// Close returns a joined error containing all shutdown failures, if any.
|
||||||
func (bot *Bot[T]) Close() error {
|
func (bot *Bot[T]) Close() error {
|
||||||
var e []error
|
var e []error
|
||||||
|
|
||||||
|
for _, p := range bot.plugins {
|
||||||
|
if err := p.Close(); err != nil {
|
||||||
|
e = append(e, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
if err := bot.uploader.Close(); err != nil {
|
if err := bot.uploader.Close(); err != nil {
|
||||||
bot.logger.Errorln(err)
|
bot.logger.Errorln(err)
|
||||||
e = append(e, err)
|
e = append(e, err)
|
||||||
}
|
}
|
||||||
if err := bot.api.CloseApi(); err != nil {
|
if err := bot.api.Close(); err != nil {
|
||||||
bot.logger.Errorln(err)
|
bot.logger.Errorln(err)
|
||||||
e = append(e, err)
|
e = append(e, err)
|
||||||
}
|
}
|
||||||
@@ -209,6 +215,17 @@ func (bot *Bot[T]) Close() error {
|
|||||||
return errors.Join(e...)
|
return errors.Join(e...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CloseRemote sends Telegram Bot API "close" request for the current bot
|
||||||
|
// instance using ctx for cancellation and deadlines.
|
||||||
|
//
|
||||||
|
// This is separate from Bot.Close(), which only releases local resources.
|
||||||
|
func (bot *Bot[T]) CloseRemote(ctx context.Context) error {
|
||||||
|
if _, err := bot.api.CloseRemoteWithContext(ctx); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// initLoggers configures the main and optional request loggers.
|
// initLoggers configures the main and optional request loggers.
|
||||||
//
|
//
|
||||||
// Uses DEBUG flag to set log level (DEBUG if true, FATAL otherwise).
|
// Uses DEBUG flag to set log level (DEBUG if true, FATAL otherwise).
|
||||||
@@ -220,27 +237,25 @@ func (bot *Bot[T]) initLoggers(opts *BotOpts) {
|
|||||||
level = slog.DEBUG
|
level = slog.DEBUG
|
||||||
}
|
}
|
||||||
|
|
||||||
bot.logger = slog.CreateLogger().Level(level).Prefix("BOT")
|
bot.logger = utils.CreateLogger("BOT", level)
|
||||||
bot.logger.AddWriter(bot.logger.CreateJsonStdoutWriter())
|
|
||||||
if opts.WriteToFile {
|
if opts.WriteToFile {
|
||||||
path := fmt.Sprintf("%s/main.log", strings.TrimRight(opts.LoggerBasePath, "/"))
|
path := fmt.Sprintf("%s/main.log", strings.TrimRight(opts.LoggerBasePath, "/"))
|
||||||
fileWriter, err := bot.logger.CreateTextFileWriter(path)
|
logger, err := utils.CreateFileLogger("BOT", level, path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
bot.logger.Fatal(err)
|
bot.logger.Fatal(err)
|
||||||
}
|
}
|
||||||
bot.logger.AddWriter(fileWriter)
|
bot.logger = logger
|
||||||
}
|
}
|
||||||
|
|
||||||
if opts.UseRequestLogger {
|
if opts.UseRequestLogger {
|
||||||
bot.RequestLogger = slog.CreateLogger().Level(level).Prefix("REQUESTS")
|
bot.RequestLogger = utils.CreateLogger("REQUESTS", level)
|
||||||
bot.RequestLogger.AddWriter(bot.RequestLogger.CreateJsonStdoutWriter())
|
|
||||||
if opts.WriteToFile {
|
if opts.WriteToFile {
|
||||||
path := fmt.Sprintf("%s/requests.log", strings.TrimRight(opts.LoggerBasePath, "/"))
|
path := fmt.Sprintf("%s/requests.log", strings.TrimRight(opts.LoggerBasePath, "/"))
|
||||||
fileWriter, err := bot.RequestLogger.CreateTextFileWriter(path)
|
logger, err := utils.CreateFileLogger("REQUESTS", level, path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
bot.logger.Fatal(err)
|
bot.logger.Fatal(err)
|
||||||
}
|
}
|
||||||
bot.RequestLogger.AddWriter(fileWriter)
|
bot.RequestLogger = logger
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -269,6 +284,16 @@ func (bot *Bot[T]) GetLogger() *slog.Logger { return bot.logger }
|
|||||||
// Returns nil if not set via DatabaseContext().
|
// Returns nil if not set via DatabaseContext().
|
||||||
func (bot *Bot[T]) GetDBContext() *T { return bot.dbContext }
|
func (bot *Bot[T]) GetDBContext() *T { return bot.dbContext }
|
||||||
|
|
||||||
|
// GetLoggerLevel returns the effective log level derived from the bot's debug
|
||||||
|
// flag.
|
||||||
|
func (bot *Bot[T]) GetLoggerLevel() slog.LogLevel {
|
||||||
|
level := slog.FATAL
|
||||||
|
if bot.debug {
|
||||||
|
level = slog.DEBUG
|
||||||
|
}
|
||||||
|
return level
|
||||||
|
}
|
||||||
|
|
||||||
// L10n translates a key in the given language.
|
// L10n translates a key in the given language.
|
||||||
// Returns empty string if translation not found.
|
// Returns empty string if translation not found.
|
||||||
func (bot *Bot[T]) L10n(lang, key string) string {
|
func (bot *Bot[T]) L10n(lang, key string) string {
|
||||||
@@ -330,13 +355,38 @@ func (bot *Bot[T]) ErrorTemplate(s string) *Bot[T] {
|
|||||||
// Debug enables or disables debug logging.
|
// Debug enables or disables debug logging.
|
||||||
func (bot *Bot[T]) Debug(debug bool) *Bot[T] {
|
func (bot *Bot[T]) Debug(debug bool) *Bot[T] {
|
||||||
bot.debug = debug
|
bot.debug = debug
|
||||||
|
level := slog.FATAL
|
||||||
|
if debug {
|
||||||
|
level = slog.DEBUG
|
||||||
|
}
|
||||||
|
|
||||||
|
bot.logger.Level(level)
|
||||||
|
if bot.RequestLogger != nil {
|
||||||
|
bot.RequestLogger.Level(level)
|
||||||
|
}
|
||||||
|
for _, p := range bot.plugins {
|
||||||
|
if p.logger == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
p.logger.Level(level)
|
||||||
|
}
|
||||||
return bot
|
return bot
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddPlugins registers one or more plugins.
|
// AddPlugins registers one or more plugins.
|
||||||
// Plugins are executed in registration order unless filtered by middleware.
|
// Plugins are executed in registration order unless filtered by middleware.
|
||||||
|
//
|
||||||
|
// Registration is a commit point for plugin configuration. The Bot stores
|
||||||
|
// plugin metadata internally, so plugins must be fully configured before they
|
||||||
|
// are passed here. Post-registration mutation through the original *Plugin is
|
||||||
|
// not a supported API, even if some changes appear to work due to shared maps.
|
||||||
func (bot *Bot[T]) AddPlugins(plugin ...*Plugin[T]) *Bot[T] {
|
func (bot *Bot[T]) AddPlugins(plugin ...*Plugin[T]) *Bot[T] {
|
||||||
|
level := bot.GetLoggerLevel()
|
||||||
for _, p := range plugin {
|
for _, p := range plugin {
|
||||||
|
if p.logger == nil {
|
||||||
|
logger := utils.CreateLogger(p.name, level)
|
||||||
|
p.SetLogger(logger)
|
||||||
|
}
|
||||||
bot.plugins = append(bot.plugins, *p)
|
bot.plugins = append(bot.plugins, *p)
|
||||||
bot.logger.Debugln(fmt.Sprintf("plugins with name \"%s\" registered", p.name))
|
bot.logger.Debugln(fmt.Sprintf("plugins with name \"%s\" registered", p.name))
|
||||||
}
|
}
|
||||||
@@ -432,6 +482,11 @@ func (bot *Bot[T]) AddL10n(l *L10n) *Bot[T] {
|
|||||||
// - Main bot logger
|
// - Main bot logger
|
||||||
// - Request logger (if enabled)
|
// - Request logger (if enabled)
|
||||||
// - API and Uploader loggers
|
// - API and Uploader loggers
|
||||||
|
// - Already registered plugin loggers
|
||||||
|
//
|
||||||
|
// Call this after AddPlugins if plugin loggers should also receive the writer.
|
||||||
|
// Plugins registered later do not automatically inherit previously added
|
||||||
|
// database writers; call AddDatabaseLoggerWriter again after adding them.
|
||||||
//
|
//
|
||||||
// Example:
|
// Example:
|
||||||
//
|
//
|
||||||
@@ -447,6 +502,11 @@ func (bot *Bot[T]) AddDatabaseLoggerWriter(writer DbLogger[T]) *Bot[T] {
|
|||||||
for _, l := range bot.extraLoggers {
|
for _, l := range bot.extraLoggers {
|
||||||
l.AddWriter(w)
|
l.AddWriter(w)
|
||||||
}
|
}
|
||||||
|
for _, p := range bot.plugins {
|
||||||
|
if p.logger != nil {
|
||||||
|
p.logger.AddWriter(w)
|
||||||
|
}
|
||||||
|
}
|
||||||
return bot
|
return bot
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -472,7 +532,7 @@ func (bot *Bot[T]) AddDatabaseLoggerWriter(writer DbLogger[T]) *Bot[T] {
|
|||||||
// go bot.RunWithContext(ctx)
|
// go bot.RunWithContext(ctx)
|
||||||
// // ... later ...
|
// // ... later ...
|
||||||
// cancel() // triggers graceful shutdown
|
// cancel() // triggers graceful shutdown
|
||||||
// _ = bot.Close()
|
// _ = bot.Close(context.Background())
|
||||||
func (bot *Bot[T]) RunWithContext(ctx context.Context) {
|
func (bot *Bot[T]) RunWithContext(ctx context.Context) {
|
||||||
if len(bot.prefixes) == 0 {
|
if len(bot.prefixes) == 0 {
|
||||||
bot.logger.Fatalln("no prefixes defined")
|
bot.logger.Fatalln("no prefixes defined")
|
||||||
|
|||||||
@@ -37,8 +37,8 @@ func TestAutoGenerateCommandsChecksLimitBeforeDelete(t *testing.T) {
|
|||||||
SetHTTPClient(client),
|
SetHTTPClient(client),
|
||||||
)
|
)
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := api.CloseApi(); err != nil {
|
if err := api.Close(); err != nil {
|
||||||
t.Fatalf("CloseApi returned error: %v", err)
|
t.Fatalf("Close returned error: %v", err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ module git.nix13.pw/scuroneko/laniakea
|
|||||||
|
|
||||||
go 1.26
|
go 1.26
|
||||||
|
|
||||||
|
retract v1.0.0-rc.5
|
||||||
|
|
||||||
require (
|
require (
|
||||||
git.nix13.pw/scuroneko/extypes v1.2.2
|
git.nix13.pw/scuroneko/extypes v1.2.2
|
||||||
git.nix13.pw/scuroneko/slog v1.1.2
|
git.nix13.pw/scuroneko/slog v1.1.2
|
||||||
|
|||||||
@@ -97,6 +97,11 @@ func (bot *Bot[T]) handleMessage(update *tgapi.Update, ctx *MsgContext) {
|
|||||||
if !plugin.executeMiddlewares(ctx, bot.dbContext) {
|
if !plugin.executeMiddlewares(ctx, bot.dbContext) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ctx.Logger = plugin.logger
|
||||||
|
if ctx.Logger == nil {
|
||||||
|
ctx.Logger = ctx.botLogger
|
||||||
|
}
|
||||||
plugin.executeCmd(cmd, ctx, bot.dbContext)
|
plugin.executeCmd(cmd, ctx, bot.dbContext)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -131,6 +136,10 @@ func (bot *Bot[T]) handleCallback(update *tgapi.Update, ctx *MsgContext) {
|
|||||||
if !plugin.executeMiddlewares(ctx, bot.dbContext) {
|
if !plugin.executeMiddlewares(ctx, bot.dbContext) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
ctx.Logger = plugin.logger
|
||||||
|
if ctx.Logger == nil {
|
||||||
|
ctx.Logger = ctx.botLogger
|
||||||
|
}
|
||||||
plugin.executePayload(data.Command, ctx, bot.dbContext)
|
plugin.executePayload(data.Command, ctx, bot.dbContext)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,10 @@ type MsgContext struct {
|
|||||||
Msg *tgapi.Message
|
Msg *tgapi.Message
|
||||||
From *tgapi.User
|
From *tgapi.User
|
||||||
|
|
||||||
|
// Logger is the logger assigned by the matched plugin for the current handler call.
|
||||||
|
// It may fall back to the bot logger when the plugin has no dedicated logger.
|
||||||
|
Logger *slog.Logger
|
||||||
|
|
||||||
InlineMsgId string
|
InlineMsgId string
|
||||||
CallbackMsgId int
|
CallbackMsgId int
|
||||||
CallbackQueryId string
|
CallbackQueryId string
|
||||||
|
|||||||
+2
-2
@@ -37,8 +37,8 @@ func TestAnswerPhotoIncludesDirectMessagesTopicID(t *testing.T) {
|
|||||||
SetHTTPClient(client),
|
SetHTTPClient(client),
|
||||||
)
|
)
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := api.CloseApi(); err != nil {
|
if err := api.Close(); err != nil {
|
||||||
t.Fatalf("CloseApi returned error: %v", err)
|
t.Fatalf("Close returned error: %v", err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
|||||||
+59
-2
@@ -5,6 +5,7 @@ import (
|
|||||||
"regexp"
|
"regexp"
|
||||||
|
|
||||||
"git.nix13.pw/scuroneko/extypes"
|
"git.nix13.pw/scuroneko/extypes"
|
||||||
|
"git.nix13.pw/scuroneko/slog"
|
||||||
)
|
)
|
||||||
|
|
||||||
// CommandValueType defines the expected type of a command argument.
|
// CommandValueType defines the expected type of a command argument.
|
||||||
@@ -151,19 +152,30 @@ func (c *Command[T]) validateArgs(args []string) error {
|
|||||||
|
|
||||||
// Plugin represents a collection of commands and payloads (e.g., callback handlers),
|
// Plugin represents a collection of commands and payloads (e.g., callback handlers),
|
||||||
// with shared middleware and configuration.
|
// with shared middleware and configuration.
|
||||||
|
//
|
||||||
|
// A Plugin is intended to be fully configured before it is passed to Bot.AddPlugins.
|
||||||
|
// After registration, treat the plugin as committed and do not mutate it further.
|
||||||
|
// Post-registration changes through the original *Plugin are not a supported API.
|
||||||
type Plugin[T DbContext] struct {
|
type Plugin[T DbContext] struct {
|
||||||
name string // Name of the plugin (e.g., "admin", "user")
|
name string // Name of the plugin (e.g., "admin", "user")
|
||||||
commands map[string]*Command[T] // Registered commands (triggered by message)
|
commands map[string]*Command[T] // Registered commands (triggered by message)
|
||||||
payloads map[string]*Command[T] // Registered payloads (triggered by callback data)
|
payloads map[string]*Command[T] // Registered payloads (triggered by callback data)
|
||||||
middlewares extypes.Slice[Middleware[T]] // Shared middlewares for all commands/payloads
|
middlewares extypes.Slice[Middleware[T]] // Shared middlewares for all commands/payloads
|
||||||
skipAutoCmd bool // If true, all commands in this plugin are excluded from auto-help
|
skipAutoCmd bool // If true, all commands in this plugin are excluded from auto-help
|
||||||
|
logger *slog.Logger
|
||||||
|
|
||||||
|
onClose func() error
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewPlugin creates a new Plugin with the given name.
|
// NewPlugin creates a new Plugin with the given name.
|
||||||
func NewPlugin[T DbContext](name string) *Plugin[T] {
|
func NewPlugin[T DbContext](name string) *Plugin[T] {
|
||||||
return &Plugin[T]{
|
return &Plugin[T]{
|
||||||
name, make(map[string]*Command[T]),
|
name: name,
|
||||||
make(map[string]*Command[T]), extypes.Slice[Middleware[T]]{}, false,
|
commands: make(map[string]*Command[T]),
|
||||||
|
payloads: make(map[string]*Command[T]),
|
||||||
|
middlewares: make(extypes.Slice[Middleware[T]], 0),
|
||||||
|
skipAutoCmd: false,
|
||||||
|
logger: nil,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -210,6 +222,51 @@ func (p *Plugin[T]) SkipCommandAutoGen() *Plugin[T] {
|
|||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetLogger sets the logger used for this plugin's handlers.
|
||||||
|
//
|
||||||
|
// Call this before Bot.AddPlugins. If the plugin is already registered, changing
|
||||||
|
// the original *Plugin does not update the Bot's internal copy.
|
||||||
|
func (p *Plugin[T]) SetLogger(l *slog.Logger) *Plugin[T] {
|
||||||
|
p.logger = l
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveLogger clears the custom logger for this plugin.
|
||||||
|
//
|
||||||
|
// Call this before Bot.AddPlugins. If the plugin is already registered, changing
|
||||||
|
// the original *Plugin does not update the Bot's internal copy.
|
||||||
|
func (p *Plugin[T]) RemoveLogger() *Plugin[T] {
|
||||||
|
p.logger = nil
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetOnClose registers a callback invoked from Plugin.Close after the plugin
|
||||||
|
// logger is closed.
|
||||||
|
//
|
||||||
|
// Call this before Bot.AddPlugins. If the plugin is already registered, changing
|
||||||
|
// the original *Plugin does not update the Bot's internal copy.
|
||||||
|
func (p *Plugin[T]) SetOnClose(f func() error) *Plugin[T] {
|
||||||
|
p.onClose = f
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close releases plugin-owned resources such as its logger and optional
|
||||||
|
// OnClose callback.
|
||||||
|
func (p *Plugin[T]) Close() error {
|
||||||
|
var e []error
|
||||||
|
if p.logger != nil {
|
||||||
|
if err := p.logger.Close(); err != nil {
|
||||||
|
e = append(e, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if p.onClose != nil {
|
||||||
|
if err := p.onClose(); err != nil {
|
||||||
|
e = append(e, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return errors.Join(e...)
|
||||||
|
}
|
||||||
|
|
||||||
// executeCmd finds and executes a command by its trigger string.
|
// executeCmd finds and executes a command by its trigger string.
|
||||||
// Validates arguments and runs middlewares before executor.
|
// Validates arguments and runs middlewares before executor.
|
||||||
// On error, sends an error message to the user via ctx.error().
|
// On error, sends an error message to the user via ctx.error().
|
||||||
|
|||||||
+4
-5
@@ -95,10 +95,9 @@ type API struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewAPI creates a new API client from options.
|
// NewAPI creates a new API client from options.
|
||||||
// Always call CloseApi() when done to release resources.
|
// Always call Close() when done to release resources.
|
||||||
func NewAPI(opts *APIOpts) *API {
|
func NewAPI(opts *APIOpts) *API {
|
||||||
l := slog.CreateLogger().Level(utils.GetLoggerLevel()).Prefix("API")
|
l := utils.CreateLogger("API", utils.GetLoggerLevel())
|
||||||
l.AddWriter(l.CreateJsonStdoutWriter())
|
|
||||||
|
|
||||||
client := opts.client
|
client := opts.client
|
||||||
if client == nil {
|
if client == nil {
|
||||||
@@ -120,10 +119,10 @@ func NewAPI(opts *APIOpts) *API {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// CloseApi shuts down the internal worker pool and closes the logger.
|
// Close shuts down the internal worker pool and closes the logger.
|
||||||
// Must be called to avoid resource leaks.
|
// Must be called to avoid resource leaks.
|
||||||
// See https://core.telegram.org/bots/api
|
// See https://core.telegram.org/bots/api
|
||||||
func (api *API) CloseApi() error {
|
func (api *API) Close() error {
|
||||||
api.pool.stop()
|
api.pool.stop()
|
||||||
return api.logger.Close()
|
return api.logger.Close()
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -35,8 +35,8 @@ func TestAPILeavesAcceptEncodingToHTTPTransport(t *testing.T) {
|
|||||||
SetHTTPClient(client),
|
SetHTTPClient(client),
|
||||||
)
|
)
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := api.CloseApi(); err != nil {
|
if err := api.Close(); err != nil {
|
||||||
t.Fatalf("CloseApi returned error: %v", err)
|
t.Fatalf("Close returned error: %v", err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package tgapi
|
package tgapi
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
// SendPhotoP holds parameters for the sendPhoto method.
|
// SendPhotoP holds parameters for the sendPhoto method.
|
||||||
// See https://core.telegram.org/bots/api#sendphoto
|
// See https://core.telegram.org/bots/api#sendphoto
|
||||||
type SendPhotoP struct {
|
type SendPhotoP struct {
|
||||||
@@ -32,6 +34,14 @@ func (api *API) SendPhoto(params SendPhotoP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendPhotoWithContext is the context-aware variant of SendPhoto.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendphoto
|
||||||
|
func (api *API) SendPhotoWithContext(ctx context.Context, params SendPhotoP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendPhoto", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendAudioP holds parameters for the sendAudio method.
|
// SendAudioP holds parameters for the sendAudio method.
|
||||||
// See https://core.telegram.org/bots/api#sendaudio
|
// See https://core.telegram.org/bots/api#sendaudio
|
||||||
type SendAudioP struct {
|
type SendAudioP struct {
|
||||||
@@ -47,6 +57,7 @@ type SendAudioP struct {
|
|||||||
Duration int `json:"duration,omitempty"`
|
Duration int `json:"duration,omitempty"`
|
||||||
Performer string `json:"performer,omitempty"`
|
Performer string `json:"performer,omitempty"`
|
||||||
Title string `json:"title,omitempty"`
|
Title string `json:"title,omitempty"`
|
||||||
|
Thumbnail string `json:"thumbnail,omitempty"`
|
||||||
|
|
||||||
DisableNotification bool `json:"disable_notification,omitempty"`
|
DisableNotification bool `json:"disable_notification,omitempty"`
|
||||||
ProtectContent bool `json:"protect_content,omitempty"`
|
ProtectContent bool `json:"protect_content,omitempty"`
|
||||||
@@ -65,6 +76,14 @@ func (api *API) SendAudio(params SendAudioP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendAudioWithContext is the context-aware variant of SendAudio.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendaudio
|
||||||
|
func (api *API) SendAudioWithContext(ctx context.Context, params SendAudioP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendAudio", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendDocumentP holds parameters for the sendDocument method.
|
// SendDocumentP holds parameters for the sendDocument method.
|
||||||
// See https://core.telegram.org/bots/api#senddocument
|
// See https://core.telegram.org/bots/api#senddocument
|
||||||
type SendDocumentP struct {
|
type SendDocumentP struct {
|
||||||
@@ -73,10 +92,12 @@ type SendDocumentP struct {
|
|||||||
MessageThreadID int `json:"message_thread_id,omitempty"`
|
MessageThreadID int `json:"message_thread_id,omitempty"`
|
||||||
DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"`
|
DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"`
|
||||||
|
|
||||||
Document string `json:"document"`
|
Document string `json:"document"`
|
||||||
Caption string `json:"caption,omitempty"`
|
Thumbnail string `json:"thumbnail,omitempty"`
|
||||||
ParseMode ParseMode `json:"parse_mode,omitempty"`
|
Caption string `json:"caption,omitempty"`
|
||||||
CaptionEntities []MessageEntity `json:"caption_entities,omitempty"`
|
ParseMode ParseMode `json:"parse_mode,omitempty"`
|
||||||
|
CaptionEntities []MessageEntity `json:"caption_entities,omitempty"`
|
||||||
|
DisableContentTypeDetection bool `json:"disable_content_type_detection,omitempty"`
|
||||||
|
|
||||||
DisableNotification bool `json:"disable_notification,omitempty"`
|
DisableNotification bool `json:"disable_notification,omitempty"`
|
||||||
ProtectContent bool `json:"protect_content,omitempty"`
|
ProtectContent bool `json:"protect_content,omitempty"`
|
||||||
@@ -95,6 +116,14 @@ func (api *API) SendDocument(params SendDocumentP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendDocumentWithContext is the context-aware variant of SendDocument.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#senddocument
|
||||||
|
func (api *API) SendDocumentWithContext(ctx context.Context, params SendDocumentP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendDocument", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendVideoP holds parameters for the sendVideo method.
|
// SendVideoP holds parameters for the sendVideo method.
|
||||||
// See https://core.telegram.org/bots/api#sendvideo
|
// See https://core.telegram.org/bots/api#sendvideo
|
||||||
type SendVideoP struct {
|
type SendVideoP struct {
|
||||||
@@ -103,11 +132,12 @@ type SendVideoP struct {
|
|||||||
MessageThreadID int `json:"message_thread_id,omitempty"`
|
MessageThreadID int `json:"message_thread_id,omitempty"`
|
||||||
DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"`
|
DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"`
|
||||||
|
|
||||||
Video string `json:"video"`
|
Video string `json:"video"`
|
||||||
Duration int `json:"duration,omitempty"`
|
Thumbnail string `json:"thumbnail,omitempty"`
|
||||||
Width int `json:"width,omitempty"`
|
Duration int `json:"duration,omitempty"`
|
||||||
Height int `json:"height,omitempty"`
|
Width int `json:"width,omitempty"`
|
||||||
Cover string `json:"cover,omitempty"`
|
Height int `json:"height,omitempty"`
|
||||||
|
Cover string `json:"cover,omitempty"`
|
||||||
|
|
||||||
StartTimestamp int `json:"start_timestamp,omitempty"`
|
StartTimestamp int `json:"start_timestamp,omitempty"`
|
||||||
Caption string `json:"caption,omitempty"`
|
Caption string `json:"caption,omitempty"`
|
||||||
@@ -134,6 +164,14 @@ func (api *API) SendVideo(params SendVideoP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendVideoWithContext is the context-aware variant of SendVideo.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendvideo
|
||||||
|
func (api *API) SendVideoWithContext(ctx context.Context, params SendVideoP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendVideo", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendAnimationP holds parameters for the sendAnimation method.
|
// SendAnimationP holds parameters for the sendAnimation method.
|
||||||
// See https://core.telegram.org/bots/api#sendanimation
|
// See https://core.telegram.org/bots/api#sendanimation
|
||||||
type SendAnimationP struct {
|
type SendAnimationP struct {
|
||||||
@@ -143,6 +181,7 @@ type SendAnimationP struct {
|
|||||||
DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"`
|
DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"`
|
||||||
|
|
||||||
Animation string `json:"animation"`
|
Animation string `json:"animation"`
|
||||||
|
Thumbnail string `json:"thumbnail,omitempty"`
|
||||||
Duration int `json:"duration,omitempty"`
|
Duration int `json:"duration,omitempty"`
|
||||||
Width int `json:"width,omitempty"`
|
Width int `json:"width,omitempty"`
|
||||||
Height int `json:"height,omitempty"`
|
Height int `json:"height,omitempty"`
|
||||||
@@ -169,6 +208,14 @@ func (api *API) SendAnimation(params SendAnimationP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendAnimationWithContext is the context-aware variant of SendAnimation.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendanimation
|
||||||
|
func (api *API) SendAnimationWithContext(ctx context.Context, params SendAnimationP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendAnimation", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendVoiceP holds parameters for the sendVoice method.
|
// SendVoiceP holds parameters for the sendVoice method.
|
||||||
// See https://core.telegram.org/bots/api#sendvoice
|
// See https://core.telegram.org/bots/api#sendvoice
|
||||||
type SendVoiceP struct {
|
type SendVoiceP struct {
|
||||||
@@ -199,6 +246,14 @@ func (api *API) SendVoice(params *SendVoiceP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendVoiceWithContext is the context-aware variant of SendVoice.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendvoice
|
||||||
|
func (api *API) SendVoiceWithContext(ctx context.Context, params *SendVoiceP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendVoice", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendVideoNoteP holds parameters for the sendVideoNote method.
|
// SendVideoNoteP holds parameters for the sendVideoNote method.
|
||||||
// See https://core.telegram.org/bots/api#sendvideonote
|
// See https://core.telegram.org/bots/api#sendvideonote
|
||||||
type SendVideoNoteP struct {
|
type SendVideoNoteP struct {
|
||||||
@@ -208,6 +263,7 @@ type SendVideoNoteP struct {
|
|||||||
DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"`
|
DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"`
|
||||||
|
|
||||||
VideoNote string `json:"video_note"`
|
VideoNote string `json:"video_note"`
|
||||||
|
Thumbnail string `json:"thumbnail,omitempty"`
|
||||||
Duration int `json:"duration,omitempty"`
|
Duration int `json:"duration,omitempty"`
|
||||||
Length int `json:"length,omitempty"`
|
Length int `json:"length,omitempty"`
|
||||||
DisableNotification bool `json:"disable_notification,omitempty"`
|
DisableNotification bool `json:"disable_notification,omitempty"`
|
||||||
@@ -227,6 +283,14 @@ func (api *API) SendVideoNote(params SendVideoNoteP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendVideoNoteWithContext is the context-aware variant of SendVideoNote.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendvideonote
|
||||||
|
func (api *API) SendVideoNoteWithContext(ctx context.Context, params SendVideoNoteP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendVideoNote", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendPaidMediaP holds parameters for the sendPaidMedia method.
|
// SendPaidMediaP holds parameters for the sendPaidMedia method.
|
||||||
// See https://core.telegram.org/bots/api#sendpaidmedia
|
// See https://core.telegram.org/bots/api#sendpaidmedia
|
||||||
type SendPaidMediaP struct {
|
type SendPaidMediaP struct {
|
||||||
@@ -258,6 +322,14 @@ func (api *API) SendPaidMedia(params SendPaidMediaP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendPaidMediaWithContext is the context-aware variant of SendPaidMedia.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendpaidmedia
|
||||||
|
func (api *API) SendPaidMediaWithContext(ctx context.Context, params SendPaidMediaP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendPaidMedia", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendMediaGroupP holds parameters for the sendMediaGroup method.
|
// SendMediaGroupP holds parameters for the sendMediaGroup method.
|
||||||
// See https://core.telegram.org/bots/api#sendmediagroup
|
// See https://core.telegram.org/bots/api#sendmediagroup
|
||||||
type SendMediaGroupP struct {
|
type SendMediaGroupP struct {
|
||||||
@@ -280,3 +352,11 @@ func (api *API) SendMediaGroup(params SendMediaGroupP) ([]Message, error) {
|
|||||||
req := NewRequestWithChatID[[]Message]("sendMediaGroup", params, params.ChatID)
|
req := NewRequestWithChatID[[]Message]("sendMediaGroup", params, params.ChatID)
|
||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendMediaGroupWithContext is the context-aware variant of SendMediaGroup.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendmediagroup
|
||||||
|
func (api *API) SendMediaGroupWithContext(ctx context.Context, params SendMediaGroupP) ([]Message, error) {
|
||||||
|
req := NewRequestWithChatID[[]Message]("sendMediaGroup", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package tgapi
|
package tgapi
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
// SetMyCommandsP holds parameters for the setMyCommands method.
|
// SetMyCommandsP holds parameters for the setMyCommands method.
|
||||||
// See https://core.telegram.org/bots/api#setmycommands
|
// See https://core.telegram.org/bots/api#setmycommands
|
||||||
type SetMyCommandsP struct {
|
type SetMyCommandsP struct {
|
||||||
@@ -16,6 +18,14 @@ func (api *API) SetMyCommands(params SetMyCommandsP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetMyCommandsWithContext is the context-aware variant of SetMyCommands.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setmycommands
|
||||||
|
func (api *API) SetMyCommandsWithContext(ctx context.Context, params SetMyCommandsP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setMyCommands", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// DeleteMyCommandsP holds parameters for the deleteMyCommands method.
|
// DeleteMyCommandsP holds parameters for the deleteMyCommands method.
|
||||||
// See https://core.telegram.org/bots/api#deletemycommands
|
// See https://core.telegram.org/bots/api#deletemycommands
|
||||||
type DeleteMyCommandsP struct {
|
type DeleteMyCommandsP struct {
|
||||||
@@ -31,6 +41,14 @@ func (api *API) DeleteMyCommands(params DeleteMyCommandsP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteMyCommandsWithContext is the context-aware variant of DeleteMyCommands.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#deletemycommands
|
||||||
|
func (api *API) DeleteMyCommandsWithContext(ctx context.Context, params DeleteMyCommandsP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("deleteMyCommands", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetMyCommands holds parameters for the getMyCommands method.
|
// GetMyCommands holds parameters for the getMyCommands method.
|
||||||
// See https://core.telegram.org/bots/api#getmycommands
|
// See https://core.telegram.org/bots/api#getmycommands
|
||||||
type GetMyCommands struct {
|
type GetMyCommands struct {
|
||||||
@@ -45,6 +63,14 @@ func (api *API) GetMyCommands(params GetMyCommands) ([]BotCommand, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetMyCommandsWithContext is the context-aware variant of GetMyCommands.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getmycommands
|
||||||
|
func (api *API) GetMyCommandsWithContext(ctx context.Context, params GetMyCommands) ([]BotCommand, error) {
|
||||||
|
req := NewRequest[[]BotCommand]("getMyCommands", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetMyName holds parameters for the setMyName method.
|
// SetMyName holds parameters for the setMyName method.
|
||||||
// See https://core.telegram.org/bots/api#setmyname
|
// See https://core.telegram.org/bots/api#setmyname
|
||||||
type SetMyName struct {
|
type SetMyName struct {
|
||||||
@@ -60,6 +86,14 @@ func (api *API) SetMyName(params SetMyName) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetMyNameWithContext is the context-aware variant of SetMyName.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setmyname
|
||||||
|
func (api *API) SetMyNameWithContext(ctx context.Context, params SetMyName) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setMyName", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetMyName holds parameters for the getMyName method.
|
// GetMyName holds parameters for the getMyName method.
|
||||||
// See https://core.telegram.org/bots/api#getmyname
|
// See https://core.telegram.org/bots/api#getmyname
|
||||||
type GetMyName struct {
|
type GetMyName struct {
|
||||||
@@ -73,6 +107,14 @@ func (api *API) GetMyName(params GetMyName) (BotName, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetMyNameWithContext is the context-aware variant of GetMyName.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getmyname
|
||||||
|
func (api *API) GetMyNameWithContext(ctx context.Context, params GetMyName) (BotName, error) {
|
||||||
|
req := NewRequest[BotName]("getMyName", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetMyDescription holds parameters for the setMyDescription method.
|
// SetMyDescription holds parameters for the setMyDescription method.
|
||||||
// See https://core.telegram.org/bots/api#setmydescription
|
// See https://core.telegram.org/bots/api#setmydescription
|
||||||
type SetMyDescription struct {
|
type SetMyDescription struct {
|
||||||
@@ -88,6 +130,14 @@ func (api *API) SetMyDescription(params SetMyDescription) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetMyDescriptionWithContext is the context-aware variant of SetMyDescription.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setmydescription
|
||||||
|
func (api *API) SetMyDescriptionWithContext(ctx context.Context, params SetMyDescription) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setMyDescription", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetMyDescription holds parameters for the getMyDescription method.
|
// GetMyDescription holds parameters for the getMyDescription method.
|
||||||
// See https://core.telegram.org/bots/api#getmydescription
|
// See https://core.telegram.org/bots/api#getmydescription
|
||||||
type GetMyDescription struct {
|
type GetMyDescription struct {
|
||||||
@@ -101,6 +151,14 @@ func (api *API) GetMyDescription(params GetMyDescription) (BotDescription, error
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetMyDescriptionWithContext is the context-aware variant of GetMyDescription.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getmydescription
|
||||||
|
func (api *API) GetMyDescriptionWithContext(ctx context.Context, params GetMyDescription) (BotDescription, error) {
|
||||||
|
req := NewRequest[BotDescription]("getMyDescription", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetMyShortDescription holds parameters for the setMyShortDescription method.
|
// SetMyShortDescription holds parameters for the setMyShortDescription method.
|
||||||
// See https://core.telegram.org/bots/api#setmyshortdescription
|
// See https://core.telegram.org/bots/api#setmyshortdescription
|
||||||
type SetMyShortDescription struct {
|
type SetMyShortDescription struct {
|
||||||
@@ -116,6 +174,14 @@ func (api *API) SetMyShortDescription(params SetMyShortDescription) (bool, error
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetMyShortDescriptionWithContext is the context-aware variant of SetMyShortDescription.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setmyshortdescription
|
||||||
|
func (api *API) SetMyShortDescriptionWithContext(ctx context.Context, params SetMyShortDescription) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setMyShortDescription", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetMyShortDescription holds parameters for the getMyShortDescription method.
|
// GetMyShortDescription holds parameters for the getMyShortDescription method.
|
||||||
// See https://core.telegram.org/bots/api#getmyshortdescription
|
// See https://core.telegram.org/bots/api#getmyshortdescription
|
||||||
type GetMyShortDescription struct {
|
type GetMyShortDescription struct {
|
||||||
@@ -129,6 +195,14 @@ func (api *API) GetMyShortDescription(params GetMyShortDescription) (BotShortDes
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetMyShortDescriptionWithContext is the context-aware variant of GetMyShortDescription.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getmyshortdescription
|
||||||
|
func (api *API) GetMyShortDescriptionWithContext(ctx context.Context, params GetMyShortDescription) (BotShortDescription, error) {
|
||||||
|
req := NewRequest[BotShortDescription]("getMyShortDescription", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetMyProfilePhotoP holds parameters for the setMyProfilePhoto method.
|
// SetMyProfilePhotoP holds parameters for the setMyProfilePhoto method.
|
||||||
// See https://core.telegram.org/bots/api#setmyprofilephoto
|
// See https://core.telegram.org/bots/api#setmyprofilephoto
|
||||||
type SetMyProfilePhotoP struct {
|
type SetMyProfilePhotoP struct {
|
||||||
@@ -143,6 +217,14 @@ func (api *API) SetMyProfilePhoto(params SetMyProfilePhotoP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetMyProfilePhotoWithContext is the context-aware variant of SetMyProfilePhoto.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setmyprofilephoto
|
||||||
|
func (api *API) SetMyProfilePhotoWithContext(ctx context.Context, params SetMyProfilePhotoP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setMyProfilePhoto", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// RemoveMyProfilePhoto removes the bot's profile photo.
|
// RemoveMyProfilePhoto removes the bot's profile photo.
|
||||||
// Returns true on success.
|
// Returns true on success.
|
||||||
// See https://core.telegram.org/bots/api#removemyprofilephoto
|
// See https://core.telegram.org/bots/api#removemyprofilephoto
|
||||||
@@ -151,6 +233,14 @@ func (api *API) RemoveMyProfilePhoto() (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RemoveMyProfilePhotoWithContext is the context-aware variant of RemoveMyProfilePhoto.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#removemyprofilephoto
|
||||||
|
func (api *API) RemoveMyProfilePhotoWithContext(ctx context.Context) (bool, error) {
|
||||||
|
req := NewRequest[bool]("removeMyProfilePhoto", NoParams)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetChatMenuButtonP holds parameters for the setChatMenuButton method.
|
// SetChatMenuButtonP holds parameters for the setChatMenuButton method.
|
||||||
// See https://core.telegram.org/bots/api#setchatmenubutton
|
// See https://core.telegram.org/bots/api#setchatmenubutton
|
||||||
type SetChatMenuButtonP struct {
|
type SetChatMenuButtonP struct {
|
||||||
@@ -166,6 +256,14 @@ func (api *API) SetChatMenuButton(params SetChatMenuButtonP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetChatMenuButtonWithContext is the context-aware variant of SetChatMenuButton.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setchatmenubutton
|
||||||
|
func (api *API) SetChatMenuButtonWithContext(ctx context.Context, params SetChatMenuButtonP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setChatMenuButton", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetChatMenuButtonP holds parameters for the getChatMenuButton method.
|
// GetChatMenuButtonP holds parameters for the getChatMenuButton method.
|
||||||
// See https://core.telegram.org/bots/api#getchatmenubutton
|
// See https://core.telegram.org/bots/api#getchatmenubutton
|
||||||
type GetChatMenuButtonP struct {
|
type GetChatMenuButtonP struct {
|
||||||
@@ -179,6 +277,14 @@ func (api *API) GetChatMenuButton(params GetChatMenuButtonP) (BaseMenuButton, er
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetChatMenuButtonWithContext is the context-aware variant of GetChatMenuButton.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getchatmenubutton
|
||||||
|
func (api *API) GetChatMenuButtonWithContext(ctx context.Context, params GetChatMenuButtonP) (BaseMenuButton, error) {
|
||||||
|
req := NewRequest[BaseMenuButton]("getChatMenuButton", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetMyDefaultAdministratorRightsP holds parameters for the setMyDefaultAdministratorRights method.
|
// SetMyDefaultAdministratorRightsP holds parameters for the setMyDefaultAdministratorRights method.
|
||||||
// See https://core.telegram.org/bots/api#setmydefaultadministratorrights
|
// See https://core.telegram.org/bots/api#setmydefaultadministratorrights
|
||||||
type SetMyDefaultAdministratorRightsP struct {
|
type SetMyDefaultAdministratorRightsP struct {
|
||||||
@@ -194,6 +300,14 @@ func (api *API) SetMyDefaultAdministratorRights(params SetMyDefaultAdministrator
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetMyDefaultAdministratorRightsWithContext is the context-aware variant of SetMyDefaultAdministratorRights.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setmydefaultadministratorrights
|
||||||
|
func (api *API) SetMyDefaultAdministratorRightsWithContext(ctx context.Context, params SetMyDefaultAdministratorRightsP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setMyDefaultAdministratorRights", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetMyDefaultAdministratorRightsP holds parameters for the getMyDefaultAdministratorRights method.
|
// GetMyDefaultAdministratorRightsP holds parameters for the getMyDefaultAdministratorRights method.
|
||||||
// See https://core.telegram.org/bots/api#getmydefaultadministratorrights
|
// See https://core.telegram.org/bots/api#getmydefaultadministratorrights
|
||||||
type GetMyDefaultAdministratorRightsP struct {
|
type GetMyDefaultAdministratorRightsP struct {
|
||||||
@@ -207,6 +321,14 @@ func (api *API) GetMyDefaultAdministratorRights(params GetMyDefaultAdministrator
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetMyDefaultAdministratorRightsWithContext is the context-aware variant of GetMyDefaultAdministratorRights.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getmydefaultadministratorrights
|
||||||
|
func (api *API) GetMyDefaultAdministratorRightsWithContext(ctx context.Context, params GetMyDefaultAdministratorRightsP) (ChatAdministratorRights, error) {
|
||||||
|
req := NewRequest[ChatAdministratorRights]("getMyDefaultAdministratorRights", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetAvailableGifts returns the list of gifts that can be sent by the bot.
|
// GetAvailableGifts returns the list of gifts that can be sent by the bot.
|
||||||
// See https://core.telegram.org/bots/api#getavailablegifts
|
// See https://core.telegram.org/bots/api#getavailablegifts
|
||||||
func (api *API) GetAvailableGifts() (Gifts, error) {
|
func (api *API) GetAvailableGifts() (Gifts, error) {
|
||||||
@@ -214,6 +336,14 @@ func (api *API) GetAvailableGifts() (Gifts, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetAvailableGiftsWithContext is the context-aware variant of GetAvailableGifts.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getavailablegifts
|
||||||
|
func (api *API) GetAvailableGiftsWithContext(ctx context.Context) (Gifts, error) {
|
||||||
|
req := NewRequest[Gifts]("getAvailableGifts", NoParams)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendGiftP holds parameters for the sendGift method.
|
// SendGiftP holds parameters for the sendGift method.
|
||||||
// See https://core.telegram.org/bots/api#sendgift
|
// See https://core.telegram.org/bots/api#sendgift
|
||||||
type SendGiftP struct {
|
type SendGiftP struct {
|
||||||
@@ -234,6 +364,14 @@ func (api *API) SendGift(params SendGiftP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendGiftWithContext is the context-aware variant of SendGift.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendgift
|
||||||
|
func (api *API) SendGiftWithContext(ctx context.Context, params SendGiftP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("sendGift", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GiftPremiumSubscriptionP holds parameters for the giftPremiumSubscription method.
|
// GiftPremiumSubscriptionP holds parameters for the giftPremiumSubscription method.
|
||||||
// See https://core.telegram.org/bots/api#giftpremiumsubscription
|
// See https://core.telegram.org/bots/api#giftpremiumsubscription
|
||||||
type GiftPremiumSubscriptionP struct {
|
type GiftPremiumSubscriptionP struct {
|
||||||
@@ -252,3 +390,11 @@ func (api *API) GiftPremiumSubscription(params GiftPremiumSubscriptionP) (bool,
|
|||||||
req := NewRequest[bool]("giftPremiumSubscription", params)
|
req := NewRequest[bool]("giftPremiumSubscription", params)
|
||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GiftPremiumSubscriptionWithContext is the context-aware variant of GiftPremiumSubscription.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#giftpremiumsubscription
|
||||||
|
func (api *API) GiftPremiumSubscriptionWithContext(ctx context.Context, params GiftPremiumSubscriptionP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("giftPremiumSubscription", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package tgapi
|
package tgapi
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
// VerifyUserP holds parameters for the verifyUser method.
|
// VerifyUserP holds parameters for the verifyUser method.
|
||||||
// See https://core.telegram.org/bots/api#verifyuser
|
// See https://core.telegram.org/bots/api#verifyuser
|
||||||
type VerifyUserP struct {
|
type VerifyUserP struct {
|
||||||
@@ -15,6 +17,14 @@ func (api *API) VerifyUser(params VerifyUserP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// VerifyUserWithContext is the context-aware variant of VerifyUser.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#verifyuser
|
||||||
|
func (api *API) VerifyUserWithContext(ctx context.Context, params VerifyUserP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("verifyUser", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// VerifyChatP holds parameters for the verifyChat method.
|
// VerifyChatP holds parameters for the verifyChat method.
|
||||||
// See https://core.telegram.org/bots/api#verifychat
|
// See https://core.telegram.org/bots/api#verifychat
|
||||||
type VerifyChatP struct {
|
type VerifyChatP struct {
|
||||||
@@ -30,6 +40,14 @@ func (api *API) VerifyChat(params VerifyChatP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// VerifyChatWithContext is the context-aware variant of VerifyChat.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#verifychat
|
||||||
|
func (api *API) VerifyChatWithContext(ctx context.Context, params VerifyChatP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("verifyChat", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// RemoveUserVerificationP holds parameters for the removeUserVerification method.
|
// RemoveUserVerificationP holds parameters for the removeUserVerification method.
|
||||||
// See https://core.telegram.org/bots/api#removeuserverification
|
// See https://core.telegram.org/bots/api#removeuserverification
|
||||||
type RemoveUserVerificationP struct {
|
type RemoveUserVerificationP struct {
|
||||||
@@ -44,6 +62,14 @@ func (api *API) RemoveUserVerification(params RemoveUserVerificationP) (bool, er
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RemoveUserVerificationWithContext is the context-aware variant of RemoveUserVerification.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#removeuserverification
|
||||||
|
func (api *API) RemoveUserVerificationWithContext(ctx context.Context, params RemoveUserVerificationP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("removeUserVerification", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// RemoveChatVerificationP holds parameters for the removeChatVerification method.
|
// RemoveChatVerificationP holds parameters for the removeChatVerification method.
|
||||||
// See https://core.telegram.org/bots/api#removechatverification
|
// See https://core.telegram.org/bots/api#removechatverification
|
||||||
type RemoveChatVerificationP struct {
|
type RemoveChatVerificationP struct {
|
||||||
@@ -58,6 +84,14 @@ func (api *API) RemoveChatVerification(params RemoveChatVerificationP) (bool, er
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RemoveChatVerificationWithContext is the context-aware variant of RemoveChatVerification.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#removechatverification
|
||||||
|
func (api *API) RemoveChatVerificationWithContext(ctx context.Context, params RemoveChatVerificationP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("removeChatVerification", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// ReadBusinessMessageP holds parameters for the readBusinessMessage method.
|
// ReadBusinessMessageP holds parameters for the readBusinessMessage method.
|
||||||
// See https://core.telegram.org/bots/api#readbusinessmessage
|
// See https://core.telegram.org/bots/api#readbusinessmessage
|
||||||
type ReadBusinessMessageP struct {
|
type ReadBusinessMessageP struct {
|
||||||
@@ -74,6 +108,14 @@ func (api *API) ReadBusinessMessage(params ReadBusinessMessageP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReadBusinessMessageWithContext is the context-aware variant of ReadBusinessMessage.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#readbusinessmessage
|
||||||
|
func (api *API) ReadBusinessMessageWithContext(ctx context.Context, params ReadBusinessMessageP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("readBusinessMessage", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetBusinessConnectionP holds parameters for the getBusinessConnection method.
|
// GetBusinessConnectionP holds parameters for the getBusinessConnection method.
|
||||||
// See https://core.telegram.org/bots/api#getbusinessconnection
|
// See https://core.telegram.org/bots/api#getbusinessconnection
|
||||||
type GetBusinessConnectionP struct {
|
type GetBusinessConnectionP struct {
|
||||||
@@ -87,6 +129,14 @@ func (api *API) GetBusinessConnection(params GetBusinessConnectionP) (BusinessCo
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetBusinessConnectionWithContext is the context-aware variant of GetBusinessConnection.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getbusinessconnection
|
||||||
|
func (api *API) GetBusinessConnectionWithContext(ctx context.Context, params GetBusinessConnectionP) (BusinessConnection, error) {
|
||||||
|
req := NewRequest[BusinessConnection]("getBusinessConnection", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// DeleteBusinessMessagesP holds parameters for the deleteBusinessMessages method.
|
// DeleteBusinessMessagesP holds parameters for the deleteBusinessMessages method.
|
||||||
// See https://core.telegram.org/bots/api#deletebusinessmessages
|
// See https://core.telegram.org/bots/api#deletebusinessmessages
|
||||||
type DeleteBusinessMessagesP struct {
|
type DeleteBusinessMessagesP struct {
|
||||||
@@ -102,6 +152,14 @@ func (api *API) DeleteBusinessMessages(params DeleteBusinessMessagesP) (bool, er
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteBusinessMessagesWithContext is the context-aware variant of DeleteBusinessMessages.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#deletebusinessmessages
|
||||||
|
func (api *API) DeleteBusinessMessagesWithContext(ctx context.Context, params DeleteBusinessMessagesP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("deleteBusinessMessages", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetBusinessAccountNameP holds parameters for the setBusinessAccountName method.
|
// SetBusinessAccountNameP holds parameters for the setBusinessAccountName method.
|
||||||
// See https://core.telegram.org/bots/api#setbusinessaccountname
|
// See https://core.telegram.org/bots/api#setbusinessaccountname
|
||||||
type SetBusinessAccountNameP struct {
|
type SetBusinessAccountNameP struct {
|
||||||
@@ -118,6 +176,14 @@ func (api *API) SetBusinessAccountName(params SetBusinessAccountNameP) (bool, er
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetBusinessAccountNameWithContext is the context-aware variant of SetBusinessAccountName.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setbusinessaccountname
|
||||||
|
func (api *API) SetBusinessAccountNameWithContext(ctx context.Context, params SetBusinessAccountNameP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setBusinessAccountName", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetBusinessAccountUsernameP holds parameters for the setBusinessAccountUsername method.
|
// SetBusinessAccountUsernameP holds parameters for the setBusinessAccountUsername method.
|
||||||
// See https://core.telegram.org/bots/api#setbusinessaccountusername
|
// See https://core.telegram.org/bots/api#setbusinessaccountusername
|
||||||
type SetBusinessAccountUsernameP struct {
|
type SetBusinessAccountUsernameP struct {
|
||||||
@@ -133,6 +199,14 @@ func (api *API) SetBusinessAccountUsername(params SetBusinessAccountUsernameP) (
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetBusinessAccountUsernameWithContext is the context-aware variant of SetBusinessAccountUsername.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setbusinessaccountusername
|
||||||
|
func (api *API) SetBusinessAccountUsernameWithContext(ctx context.Context, params SetBusinessAccountUsernameP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setBusinessAccountUsername", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetBusinessAccountBioP holds parameters for the setBusinessAccountBio method.
|
// SetBusinessAccountBioP holds parameters for the setBusinessAccountBio method.
|
||||||
// See https://core.telegram.org/bots/api#setbusinessaccountbio
|
// See https://core.telegram.org/bots/api#setbusinessaccountbio
|
||||||
type SetBusinessAccountBioP struct {
|
type SetBusinessAccountBioP struct {
|
||||||
@@ -148,6 +222,14 @@ func (api *API) SetBusinessAccountBio(params SetBusinessAccountBioP) (bool, erro
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetBusinessAccountBioWithContext is the context-aware variant of SetBusinessAccountBio.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setbusinessaccountbio
|
||||||
|
func (api *API) SetBusinessAccountBioWithContext(ctx context.Context, params SetBusinessAccountBioP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setBusinessAccountBio", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetBusinessAccountProfilePhoto holds parameters for the setBusinessAccountProfilePhoto method.
|
// SetBusinessAccountProfilePhoto holds parameters for the setBusinessAccountProfilePhoto method.
|
||||||
// See https://core.telegram.org/bots/api#setbusinessaccountprofilephoto
|
// See https://core.telegram.org/bots/api#setbusinessaccountprofilephoto
|
||||||
type SetBusinessAccountProfilePhoto struct {
|
type SetBusinessAccountProfilePhoto struct {
|
||||||
@@ -164,6 +246,14 @@ func (api *API) SetBusinessAccountProfilePhoto(params SetBusinessAccountProfileP
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetBusinessAccountProfilePhotoWithContext is the context-aware variant of SetBusinessAccountProfilePhoto.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setbusinessaccountprofilephoto
|
||||||
|
func (api *API) SetBusinessAccountProfilePhotoWithContext(ctx context.Context, params SetBusinessAccountProfilePhoto) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setBusinessAccountProfilePhoto", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// RemoveBusinessAccountProfilePhotoP holds parameters for the removeBusinessAccountProfilePhoto method.
|
// RemoveBusinessAccountProfilePhotoP holds parameters for the removeBusinessAccountProfilePhoto method.
|
||||||
// See https://core.telegram.org/bots/api#removebusinessaccountprofilephoto
|
// See https://core.telegram.org/bots/api#removebusinessaccountprofilephoto
|
||||||
type RemoveBusinessAccountProfilePhotoP struct {
|
type RemoveBusinessAccountProfilePhotoP struct {
|
||||||
@@ -179,6 +269,14 @@ func (api *API) RemoveBusinessAccountProfilePhoto(params RemoveBusinessAccountPr
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RemoveBusinessAccountProfilePhotoWithContext is the context-aware variant of RemoveBusinessAccountProfilePhoto.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#removebusinessaccountprofilephoto
|
||||||
|
func (api *API) RemoveBusinessAccountProfilePhotoWithContext(ctx context.Context, params RemoveBusinessAccountProfilePhotoP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("removeBusinessAccountProfilePhoto", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetBusinessAccountGiftSettingsP holds parameters for the setBusinessAccountGiftSettings method.
|
// SetBusinessAccountGiftSettingsP holds parameters for the setBusinessAccountGiftSettings method.
|
||||||
// See https://core.telegram.org/bots/api#setbusinessaccountgiftsettings
|
// See https://core.telegram.org/bots/api#setbusinessaccountgiftsettings
|
||||||
type SetBusinessAccountGiftSettingsP struct {
|
type SetBusinessAccountGiftSettingsP struct {
|
||||||
@@ -195,6 +293,14 @@ func (api *API) SetBusinessAccountGiftSettings(params SetBusinessAccountGiftSett
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetBusinessAccountGiftSettingsWithContext is the context-aware variant of SetBusinessAccountGiftSettings.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setbusinessaccountgiftsettings
|
||||||
|
func (api *API) SetBusinessAccountGiftSettingsWithContext(ctx context.Context, params SetBusinessAccountGiftSettingsP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setBusinessAccountGiftSettings", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetBusinessAccountStarBalanceP holds parameters for the getBusinessAccountStarBalance method.
|
// GetBusinessAccountStarBalanceP holds parameters for the getBusinessAccountStarBalance method.
|
||||||
// See https://core.telegram.org/bots/api#getbusinessaccountstarbalance
|
// See https://core.telegram.org/bots/api#getbusinessaccountstarbalance
|
||||||
type GetBusinessAccountStarBalanceP struct {
|
type GetBusinessAccountStarBalanceP struct {
|
||||||
@@ -208,6 +314,14 @@ func (api *API) GetBusinessAccountStarBalance(params GetBusinessAccountStarBalan
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetBusinessAccountStarBalanceWithContext is the context-aware variant of GetBusinessAccountStarBalance.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getbusinessaccountstarbalance
|
||||||
|
func (api *API) GetBusinessAccountStarBalanceWithContext(ctx context.Context, params GetBusinessAccountStarBalanceP) (StarAmount, error) {
|
||||||
|
req := NewRequest[StarAmount]("getBusinessAccountStarBalance", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// TransferBusinessAccountStarsP holds parameters for the transferBusinessAccountStars method.
|
// TransferBusinessAccountStarsP holds parameters for the transferBusinessAccountStars method.
|
||||||
// See https://core.telegram.org/bots/api#transferbusinessaccountstars
|
// See https://core.telegram.org/bots/api#transferbusinessaccountstars
|
||||||
type TransferBusinessAccountStarsP struct {
|
type TransferBusinessAccountStarsP struct {
|
||||||
@@ -223,6 +337,14 @@ func (api *API) TransferBusinessAccountStars(params TransferBusinessAccountStars
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TransferBusinessAccountStarsWithContext is the context-aware variant of TransferBusinessAccountStars.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#transferbusinessaccountstars
|
||||||
|
func (api *API) TransferBusinessAccountStarsWithContext(ctx context.Context, params TransferBusinessAccountStarsP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("transferBusinessAccountStars", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetBusinessAccountGiftsP holds parameters for the getBusinessAccountGifts method.
|
// GetBusinessAccountGiftsP holds parameters for the getBusinessAccountGifts method.
|
||||||
// See https://core.telegram.org/bots/api#getbusinessaccountgifts
|
// See https://core.telegram.org/bots/api#getbusinessaccountgifts
|
||||||
type GetBusinessAccountGiftsP struct {
|
type GetBusinessAccountGiftsP struct {
|
||||||
@@ -246,6 +368,14 @@ func (api *API) GetBusinessAccountGifts(params GetBusinessAccountGiftsP) (OwnedG
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetBusinessAccountGiftsWithContext is the context-aware variant of GetBusinessAccountGifts.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getbusinessaccountgifts
|
||||||
|
func (api *API) GetBusinessAccountGiftsWithContext(ctx context.Context, params GetBusinessAccountGiftsP) (OwnedGifts, error) {
|
||||||
|
req := NewRequest[OwnedGifts]("getBusinessAccountGifts", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// ConvertGiftToStarsP holds parameters for the convertGiftToStars method.
|
// ConvertGiftToStarsP holds parameters for the convertGiftToStars method.
|
||||||
// See https://core.telegram.org/bots/api#convertgifttostars
|
// See https://core.telegram.org/bots/api#convertgifttostars
|
||||||
type ConvertGiftToStarsP struct {
|
type ConvertGiftToStarsP struct {
|
||||||
@@ -261,6 +391,14 @@ func (api *API) ConvertGiftToStars(params ConvertGiftToStarsP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ConvertGiftToStarsWithContext is the context-aware variant of ConvertGiftToStars.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#convertgifttostars
|
||||||
|
func (api *API) ConvertGiftToStarsWithContext(ctx context.Context, params ConvertGiftToStarsP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("convertGiftToStars", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// UpgradeGiftP holds parameters for the upgradeGift method.
|
// UpgradeGiftP holds parameters for the upgradeGift method.
|
||||||
// See https://core.telegram.org/bots/api#upgradegift
|
// See https://core.telegram.org/bots/api#upgradegift
|
||||||
type UpgradeGiftP struct {
|
type UpgradeGiftP struct {
|
||||||
@@ -278,6 +416,14 @@ func (api *API) UpgradeGift(params UpgradeGiftP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UpgradeGiftWithContext is the context-aware variant of UpgradeGift.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#upgradegift
|
||||||
|
func (api *API) UpgradeGiftWithContext(ctx context.Context, params UpgradeGiftP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("upgradeGift", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// TransferGiftP holds parameters for the transferGift method.
|
// TransferGiftP holds parameters for the transferGift method.
|
||||||
// See https://core.telegram.org/bots/api#transfergift
|
// See https://core.telegram.org/bots/api#transfergift
|
||||||
type TransferGiftP struct {
|
type TransferGiftP struct {
|
||||||
@@ -295,6 +441,14 @@ func (api *API) TransferGift(params TransferGiftP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TransferGiftWithContext is the context-aware variant of TransferGift.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#transfergift
|
||||||
|
func (api *API) TransferGiftWithContext(ctx context.Context, params TransferGiftP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("transferGift", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// PostStoryP holds parameters for the postStory method.
|
// PostStoryP holds parameters for the postStory method.
|
||||||
// See https://core.telegram.org/bots/api#poststory
|
// See https://core.telegram.org/bots/api#poststory
|
||||||
type PostStoryP struct {
|
type PostStoryP struct {
|
||||||
@@ -318,6 +472,14 @@ func (api *API) PostStoryPhoto(params PostStoryP) (Story, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PostStoryPhotoWithContext is the context-aware variant of PostStoryPhoto.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#poststory
|
||||||
|
func (api *API) PostStoryPhotoWithContext(ctx context.Context, params PostStoryP) (Story, error) {
|
||||||
|
req := NewRequest[Story]("postStory", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// PostStoryVideo posts a story with a video.
|
// PostStoryVideo posts a story with a video.
|
||||||
// See https://core.telegram.org/bots/api#poststory
|
// See https://core.telegram.org/bots/api#poststory
|
||||||
func (api *API) PostStoryVideo(params PostStoryP) (Story, error) {
|
func (api *API) PostStoryVideo(params PostStoryP) (Story, error) {
|
||||||
@@ -325,6 +487,14 @@ func (api *API) PostStoryVideo(params PostStoryP) (Story, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PostStoryVideoWithContext is the context-aware variant of PostStoryVideo.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#poststory
|
||||||
|
func (api *API) PostStoryVideoWithContext(ctx context.Context, params PostStoryP) (Story, error) {
|
||||||
|
req := NewRequest[Story]("postStory", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// RepostStoryP holds parameters for the repostStory method.
|
// RepostStoryP holds parameters for the repostStory method.
|
||||||
// See https://core.telegram.org/bots/api#repoststory
|
// See https://core.telegram.org/bots/api#repoststory
|
||||||
type RepostStoryP struct {
|
type RepostStoryP struct {
|
||||||
@@ -344,6 +514,14 @@ func (api *API) RepostStory(params RepostStoryP) (Story, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RepostStoryWithContext is the context-aware variant of RepostStory.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#repoststory
|
||||||
|
func (api *API) RepostStoryWithContext(ctx context.Context, params RepostStoryP) (Story, error) {
|
||||||
|
req := NewRequest[Story]("repostStory", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// EditStoryP holds parameters for the editStory method.
|
// EditStoryP holds parameters for the editStory method.
|
||||||
// See https://core.telegram.org/bots/api#editstory
|
// See https://core.telegram.org/bots/api#editstory
|
||||||
type EditStoryP struct {
|
type EditStoryP struct {
|
||||||
@@ -365,6 +543,14 @@ func (api *API) EditStory(params EditStoryP) (Story, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EditStoryWithContext is the context-aware variant of EditStory.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#editstory
|
||||||
|
func (api *API) EditStoryWithContext(ctx context.Context, params EditStoryP) (Story, error) {
|
||||||
|
req := NewRequest[Story]("editStory", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// DeleteStoryP holds parameters for the deleteStory method.
|
// DeleteStoryP holds parameters for the deleteStory method.
|
||||||
// See https://core.telegram.org/bots/api#deletestory
|
// See https://core.telegram.org/bots/api#deletestory
|
||||||
type DeleteStoryP struct {
|
type DeleteStoryP struct {
|
||||||
@@ -379,3 +565,11 @@ func (api *API) DeleteStory(params DeleteStoryP) (bool, error) {
|
|||||||
req := NewRequest[bool]("deleteStory", params)
|
req := NewRequest[bool]("deleteStory", params)
|
||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteStoryWithContext is the context-aware variant of DeleteStory.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#deletestory
|
||||||
|
func (api *API) DeleteStoryWithContext(ctx context.Context, params DeleteStoryP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("deleteStory", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package tgapi
|
package tgapi
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
// BanChatMemberP holds parameters for the banChatMember method.
|
// BanChatMemberP holds parameters for the banChatMember method.
|
||||||
// See https://core.telegram.org/bots/api#banchatmember
|
// See https://core.telegram.org/bots/api#banchatmember
|
||||||
type BanChatMemberP struct {
|
type BanChatMemberP struct {
|
||||||
@@ -17,6 +19,14 @@ func (api *API) BanChatMember(params BanChatMemberP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BanChatMemberWithContext is the context-aware variant of BanChatMember.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#banchatmember
|
||||||
|
func (api *API) BanChatMemberWithContext(ctx context.Context, params BanChatMemberP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("banChatMember", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// UnbanChatMemberP holds parameters for the unbanChatMember method.
|
// UnbanChatMemberP holds parameters for the unbanChatMember method.
|
||||||
// See https://core.telegram.org/bots/api#unbanchatmember
|
// See https://core.telegram.org/bots/api#unbanchatmember
|
||||||
type UnbanChatMemberP struct {
|
type UnbanChatMemberP struct {
|
||||||
@@ -33,6 +43,14 @@ func (api *API) UnbanChatMember(params UnbanChatMemberP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnbanChatMemberWithContext is the context-aware variant of UnbanChatMember.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#unbanchatmember
|
||||||
|
func (api *API) UnbanChatMemberWithContext(ctx context.Context, params UnbanChatMemberP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("unbanChatMember", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// RestrictChatMemberP holds parameters for the restrictChatMember method.
|
// RestrictChatMemberP holds parameters for the restrictChatMember method.
|
||||||
// See https://core.telegram.org/bots/api#restrictchatmember
|
// See https://core.telegram.org/bots/api#restrictchatmember
|
||||||
type RestrictChatMemberP struct {
|
type RestrictChatMemberP struct {
|
||||||
@@ -51,6 +69,14 @@ func (api *API) RestrictChatMember(params RestrictChatMemberP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RestrictChatMemberWithContext is the context-aware variant of RestrictChatMember.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#restrictchatmember
|
||||||
|
func (api *API) RestrictChatMemberWithContext(ctx context.Context, params RestrictChatMemberP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("restrictChatMember", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// PromoteChatMember holds parameters for the promoteChatMember method.
|
// PromoteChatMember holds parameters for the promoteChatMember method.
|
||||||
// See https://core.telegram.org/bots/api#promotechatmember
|
// See https://core.telegram.org/bots/api#promotechatmember
|
||||||
type PromoteChatMember struct {
|
type PromoteChatMember struct {
|
||||||
@@ -84,6 +110,14 @@ func (api *API) PromoteChatMember(params PromoteChatMember) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PromoteChatMemberWithContext is the context-aware variant of PromoteChatMember.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#promotechatmember
|
||||||
|
func (api *API) PromoteChatMemberWithContext(ctx context.Context, params PromoteChatMember) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("promoteChatMember", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetChatAdministratorCustomTitleP holds parameters for the setChatAdministratorCustomTitle method.
|
// SetChatAdministratorCustomTitleP holds parameters for the setChatAdministratorCustomTitle method.
|
||||||
// See https://core.telegram.org/bots/api#setchatadministratorcustomtitle
|
// See https://core.telegram.org/bots/api#setchatadministratorcustomtitle
|
||||||
type SetChatAdministratorCustomTitleP struct {
|
type SetChatAdministratorCustomTitleP struct {
|
||||||
@@ -100,6 +134,14 @@ func (api *API) SetChatAdministratorCustomTitle(params SetChatAdministratorCusto
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetChatAdministratorCustomTitleWithContext is the context-aware variant of SetChatAdministratorCustomTitle.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setchatadministratorcustomtitle
|
||||||
|
func (api *API) SetChatAdministratorCustomTitleWithContext(ctx context.Context, params SetChatAdministratorCustomTitleP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("setChatAdministratorCustomTitle", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetChatMemberTagP holds parameters for the setChatMemberTag method.
|
// SetChatMemberTagP holds parameters for the setChatMemberTag method.
|
||||||
// See https://core.telegram.org/bots/api#setchatmembertag
|
// See https://core.telegram.org/bots/api#setchatmembertag
|
||||||
type SetChatMemberTagP struct {
|
type SetChatMemberTagP struct {
|
||||||
@@ -116,6 +158,14 @@ func (api *API) SetChatMemberTag(params SetChatMemberTagP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetChatMemberTagWithContext is the context-aware variant of SetChatMemberTag.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setchatmembertag
|
||||||
|
func (api *API) SetChatMemberTagWithContext(ctx context.Context, params SetChatMemberTagP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("setChatMemberTag", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// BanChatSenderChatP holds parameters for the banChatSenderChat method.
|
// BanChatSenderChatP holds parameters for the banChatSenderChat method.
|
||||||
// See https://core.telegram.org/bots/api#banchatsenderchat
|
// See https://core.telegram.org/bots/api#banchatsenderchat
|
||||||
type BanChatSenderChatP struct {
|
type BanChatSenderChatP struct {
|
||||||
@@ -131,6 +181,14 @@ func (api *API) BanChatSenderChat(params BanChatSenderChatP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BanChatSenderChatWithContext is the context-aware variant of BanChatSenderChat.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#banchatsenderchat
|
||||||
|
func (api *API) BanChatSenderChatWithContext(ctx context.Context, params BanChatSenderChatP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("banChatSenderChat", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// UnbanChatSenderChatP holds parameters for the unbanChatSenderChat method.
|
// UnbanChatSenderChatP holds parameters for the unbanChatSenderChat method.
|
||||||
// See https://core.telegram.org/bots/api#unbanchatsenderchat
|
// See https://core.telegram.org/bots/api#unbanchatsenderchat
|
||||||
type UnbanChatSenderChatP struct {
|
type UnbanChatSenderChatP struct {
|
||||||
@@ -146,6 +204,14 @@ func (api *API) UnbanChatSenderChat(params UnbanChatSenderChatP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnbanChatSenderChatWithContext is the context-aware variant of UnbanChatSenderChat.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#unbanchatsenderchat
|
||||||
|
func (api *API) UnbanChatSenderChatWithContext(ctx context.Context, params UnbanChatSenderChatP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("unbanChatSenderChat", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetChatPermissionsP holds parameters for the setChatPermissions method.
|
// SetChatPermissionsP holds parameters for the setChatPermissions method.
|
||||||
// See https://core.telegram.org/bots/api#setchatpermissions
|
// See https://core.telegram.org/bots/api#setchatpermissions
|
||||||
type SetChatPermissionsP struct {
|
type SetChatPermissionsP struct {
|
||||||
@@ -162,6 +228,14 @@ func (api *API) SetChatPermissions(params SetChatPermissionsP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetChatPermissionsWithContext is the context-aware variant of SetChatPermissions.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setchatpermissions
|
||||||
|
func (api *API) SetChatPermissionsWithContext(ctx context.Context, params SetChatPermissionsP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("setChatPermissions", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// ExportChatInviteLinkP holds parameters for the exportChatInviteLink method.
|
// ExportChatInviteLinkP holds parameters for the exportChatInviteLink method.
|
||||||
// See https://core.telegram.org/bots/api#exportchatinvitelink
|
// See https://core.telegram.org/bots/api#exportchatinvitelink
|
||||||
type ExportChatInviteLinkP struct {
|
type ExportChatInviteLinkP struct {
|
||||||
@@ -176,6 +250,14 @@ func (api *API) ExportChatInviteLink(params ExportChatInviteLinkP) (string, erro
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ExportChatInviteLinkWithContext is the context-aware variant of ExportChatInviteLink.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#exportchatinvitelink
|
||||||
|
func (api *API) ExportChatInviteLinkWithContext(ctx context.Context, params ExportChatInviteLinkP) (string, error) {
|
||||||
|
req := NewRequestWithChatID[string]("exportChatInviteLink", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// CreateChatInviteLinkP holds parameters for the createChatInviteLink method.
|
// CreateChatInviteLinkP holds parameters for the createChatInviteLink method.
|
||||||
// See https://core.telegram.org/bots/api#createchatinvitelink
|
// See https://core.telegram.org/bots/api#createchatinvitelink
|
||||||
type CreateChatInviteLinkP struct {
|
type CreateChatInviteLinkP struct {
|
||||||
@@ -194,6 +276,14 @@ func (api *API) CreateChatInviteLink(params CreateChatInviteLinkP) (ChatInviteLi
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CreateChatInviteLinkWithContext is the context-aware variant of CreateChatInviteLink.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#createchatinvitelink
|
||||||
|
func (api *API) CreateChatInviteLinkWithContext(ctx context.Context, params CreateChatInviteLinkP) (ChatInviteLink, error) {
|
||||||
|
req := NewRequestWithChatID[ChatInviteLink]("createChatInviteLink", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// EditChatInviteLinkP holds parameters for the editChatInviteLink method.
|
// EditChatInviteLinkP holds parameters for the editChatInviteLink method.
|
||||||
// See https://core.telegram.org/bots/api#editchatinvitelink
|
// See https://core.telegram.org/bots/api#editchatinvitelink
|
||||||
type EditChatInviteLinkP struct {
|
type EditChatInviteLinkP struct {
|
||||||
@@ -214,6 +304,14 @@ func (api *API) EditChatInviteLink(params EditChatInviteLinkP) (ChatInviteLink,
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EditChatInviteLinkWithContext is the context-aware variant of EditChatInviteLink.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#editchatinvitelink
|
||||||
|
func (api *API) EditChatInviteLinkWithContext(ctx context.Context, params EditChatInviteLinkP) (ChatInviteLink, error) {
|
||||||
|
req := NewRequestWithChatID[ChatInviteLink]("editChatInviteLink", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// CreateChatSubscriptionInviteLinkP holds parameters for the createChatSubscriptionInviteLink method.
|
// CreateChatSubscriptionInviteLinkP holds parameters for the createChatSubscriptionInviteLink method.
|
||||||
// See https://core.telegram.org/bots/api#createchatsubscriptioninvitelink
|
// See https://core.telegram.org/bots/api#createchatsubscriptioninvitelink
|
||||||
type CreateChatSubscriptionInviteLinkP struct {
|
type CreateChatSubscriptionInviteLinkP struct {
|
||||||
@@ -231,6 +329,14 @@ func (api *API) CreateChatSubscriptionInviteLink(params CreateChatSubscriptionIn
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CreateChatSubscriptionInviteLinkWithContext is the context-aware variant of CreateChatSubscriptionInviteLink.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#createchatsubscriptioninvitelink
|
||||||
|
func (api *API) CreateChatSubscriptionInviteLinkWithContext(ctx context.Context, params CreateChatSubscriptionInviteLinkP) (ChatInviteLink, error) {
|
||||||
|
req := NewRequestWithChatID[ChatInviteLink]("createChatSubscriptionInviteLink", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// EditChatSubscriptionInviteLinkP holds parameters for the editChatSubscriptionInviteLink method.
|
// EditChatSubscriptionInviteLinkP holds parameters for the editChatSubscriptionInviteLink method.
|
||||||
// See https://core.telegram.org/bots/api#editchatsubscriptioninvitelink
|
// See https://core.telegram.org/bots/api#editchatsubscriptioninvitelink
|
||||||
type EditChatSubscriptionInviteLinkP struct {
|
type EditChatSubscriptionInviteLinkP struct {
|
||||||
@@ -247,6 +353,14 @@ func (api *API) EditChatSubscriptionInviteLink(params EditChatSubscriptionInvite
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EditChatSubscriptionInviteLinkWithContext is the context-aware variant of EditChatSubscriptionInviteLink.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#editchatsubscriptioninvitelink
|
||||||
|
func (api *API) EditChatSubscriptionInviteLinkWithContext(ctx context.Context, params EditChatSubscriptionInviteLinkP) (ChatInviteLink, error) {
|
||||||
|
req := NewRequestWithChatID[ChatInviteLink]("editChatSubscriptionInviteLink", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// RevokeChatInviteLinkP holds parameters for the revokeChatInviteLink method.
|
// RevokeChatInviteLinkP holds parameters for the revokeChatInviteLink method.
|
||||||
// See https://core.telegram.org/bots/api#revokechatinvitelink
|
// See https://core.telegram.org/bots/api#revokechatinvitelink
|
||||||
type RevokeChatInviteLinkP struct {
|
type RevokeChatInviteLinkP struct {
|
||||||
@@ -262,6 +376,14 @@ func (api *API) RevokeChatInviteLink(params RevokeChatInviteLinkP) (ChatInviteLi
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RevokeChatInviteLinkWithContext is the context-aware variant of RevokeChatInviteLink.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#revokechatinvitelink
|
||||||
|
func (api *API) RevokeChatInviteLinkWithContext(ctx context.Context, params RevokeChatInviteLinkP) (ChatInviteLink, error) {
|
||||||
|
req := NewRequestWithChatID[ChatInviteLink]("revokeChatInviteLink", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// ApproveChatJoinRequestP holds parameters for the approveChatJoinRequest method.
|
// ApproveChatJoinRequestP holds parameters for the approveChatJoinRequest method.
|
||||||
// See https://core.telegram.org/bots/api#approvechatjoinrequest
|
// See https://core.telegram.org/bots/api#approvechatjoinrequest
|
||||||
type ApproveChatJoinRequestP struct {
|
type ApproveChatJoinRequestP struct {
|
||||||
@@ -277,6 +399,14 @@ func (api *API) ApproveChatJoinRequest(params ApproveChatJoinRequestP) (bool, er
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ApproveChatJoinRequestWithContext is the context-aware variant of ApproveChatJoinRequest.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#approvechatjoinrequest
|
||||||
|
func (api *API) ApproveChatJoinRequestWithContext(ctx context.Context, params ApproveChatJoinRequestP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("approveChatJoinRequest", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// DeclineChatJoinRequestP holds parameters for the declineChatJoinRequest method.
|
// DeclineChatJoinRequestP holds parameters for the declineChatJoinRequest method.
|
||||||
// See https://core.telegram.org/bots/api#declinechatjoinrequest
|
// See https://core.telegram.org/bots/api#declinechatjoinrequest
|
||||||
type DeclineChatJoinRequestP struct {
|
type DeclineChatJoinRequestP struct {
|
||||||
@@ -292,6 +422,14 @@ func (api *API) DeclineChatJoinRequest(params DeclineChatJoinRequestP) (bool, er
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeclineChatJoinRequestWithContext is the context-aware variant of DeclineChatJoinRequest.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#declinechatjoinrequest
|
||||||
|
func (api *API) DeclineChatJoinRequestWithContext(ctx context.Context, params DeclineChatJoinRequestP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("declineChatJoinRequest", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetChatPhotoP holds parameters for the setChatPhoto method.
|
// SetChatPhotoP holds parameters for the setChatPhoto method.
|
||||||
// See https://core.telegram.org/bots/api#setchatphoto
|
// See https://core.telegram.org/bots/api#setchatphoto
|
||||||
type SetChatPhotoP struct {
|
type SetChatPhotoP struct {
|
||||||
@@ -325,6 +463,14 @@ func (api *API) DeleteChatPhoto(params DeleteChatPhotoP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteChatPhotoWithContext is the context-aware variant of DeleteChatPhoto.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#deletechatphoto
|
||||||
|
func (api *API) DeleteChatPhotoWithContext(ctx context.Context, params DeleteChatPhotoP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("deleteChatPhoto", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetChatTitleP holds parameters for the setChatTitle method.
|
// SetChatTitleP holds parameters for the setChatTitle method.
|
||||||
// See https://core.telegram.org/bots/api#setchattitle
|
// See https://core.telegram.org/bots/api#setchattitle
|
||||||
type SetChatTitleP struct {
|
type SetChatTitleP struct {
|
||||||
@@ -340,6 +486,14 @@ func (api *API) SetChatTitle(params SetChatTitleP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetChatTitleWithContext is the context-aware variant of SetChatTitle.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setchattitle
|
||||||
|
func (api *API) SetChatTitleWithContext(ctx context.Context, params SetChatTitleP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("setChatTitle", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetChatDescriptionP holds parameters for the setChatDescription method.
|
// SetChatDescriptionP holds parameters for the setChatDescription method.
|
||||||
// See https://core.telegram.org/bots/api#setchatdescription
|
// See https://core.telegram.org/bots/api#setchatdescription
|
||||||
type SetChatDescriptionP struct {
|
type SetChatDescriptionP struct {
|
||||||
@@ -355,6 +509,14 @@ func (api *API) SetChatDescription(params SetChatDescriptionP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetChatDescriptionWithContext is the context-aware variant of SetChatDescription.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setchatdescription
|
||||||
|
func (api *API) SetChatDescriptionWithContext(ctx context.Context, params SetChatDescriptionP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("setChatDescription", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// PinChatMessageP holds parameters for the pinChatMessage method.
|
// PinChatMessageP holds parameters for the pinChatMessage method.
|
||||||
// See https://core.telegram.org/bots/api#pinchatmessage
|
// See https://core.telegram.org/bots/api#pinchatmessage
|
||||||
type PinChatMessageP struct {
|
type PinChatMessageP struct {
|
||||||
@@ -372,6 +534,14 @@ func (api *API) PinChatMessage(params PinChatMessageP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PinChatMessageWithContext is the context-aware variant of PinChatMessage.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#pinchatmessage
|
||||||
|
func (api *API) PinChatMessageWithContext(ctx context.Context, params PinChatMessageP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("pinChatMessage", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpinChatMessageP holds parameters for the unpinChatMessage method.
|
// UnpinChatMessageP holds parameters for the unpinChatMessage method.
|
||||||
// See https://core.telegram.org/bots/api#unpinchatmessage
|
// See https://core.telegram.org/bots/api#unpinchatmessage
|
||||||
type UnpinChatMessageP struct {
|
type UnpinChatMessageP struct {
|
||||||
@@ -388,6 +558,14 @@ func (api *API) UnpinChatMessage(params UnpinChatMessageP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnpinChatMessageWithContext is the context-aware variant of UnpinChatMessage.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#unpinchatmessage
|
||||||
|
func (api *API) UnpinChatMessageWithContext(ctx context.Context, params UnpinChatMessageP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("unpinChatMessage", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpinAllChatMessagesP holds parameters for the unpinAllChatMessages method.
|
// UnpinAllChatMessagesP holds parameters for the unpinAllChatMessages method.
|
||||||
// See https://core.telegram.org/bots/api#unpinallchatmessages
|
// See https://core.telegram.org/bots/api#unpinallchatmessages
|
||||||
type UnpinAllChatMessagesP struct {
|
type UnpinAllChatMessagesP struct {
|
||||||
@@ -402,6 +580,14 @@ func (api *API) UnpinAllChatMessages(params UnpinAllChatMessagesP) (bool, error)
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnpinAllChatMessagesWithContext is the context-aware variant of UnpinAllChatMessages.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#unpinallchatmessages
|
||||||
|
func (api *API) UnpinAllChatMessagesWithContext(ctx context.Context, params UnpinAllChatMessagesP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("unpinAllChatMessages", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// LeaveChatP holds parameters for the leaveChat method.
|
// LeaveChatP holds parameters for the leaveChat method.
|
||||||
// See https://core.telegram.org/bots/api#leavechat
|
// See https://core.telegram.org/bots/api#leavechat
|
||||||
type LeaveChatP struct {
|
type LeaveChatP struct {
|
||||||
@@ -416,6 +602,14 @@ func (api *API) LeaveChat(params LeaveChatP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LeaveChatWithContext is the context-aware variant of LeaveChat.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#leavechat
|
||||||
|
func (api *API) LeaveChatWithContext(ctx context.Context, params LeaveChatP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("leaveChat", params, params.ChatID) // fixed method name
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetChatP holds parameters for the getChat method.
|
// GetChatP holds parameters for the getChat method.
|
||||||
// See https://core.telegram.org/bots/api#getchat
|
// See https://core.telegram.org/bots/api#getchat
|
||||||
type GetChatP struct {
|
type GetChatP struct {
|
||||||
@@ -429,6 +623,14 @@ func (api *API) GetChat(params GetChatP) (ChatFullInfo, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetChatWithContext is the context-aware variant of GetChat.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getchat
|
||||||
|
func (api *API) GetChatWithContext(ctx context.Context, params GetChatP) (ChatFullInfo, error) {
|
||||||
|
req := NewRequestWithChatID[ChatFullInfo]("getChat", params, params.ChatID) // fixed method name
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetChatAdministratorsP holds parameters for the getChatAdministrators method.
|
// GetChatAdministratorsP holds parameters for the getChatAdministrators method.
|
||||||
// See https://core.telegram.org/bots/api#getchatadministrators
|
// See https://core.telegram.org/bots/api#getchatadministrators
|
||||||
type GetChatAdministratorsP struct {
|
type GetChatAdministratorsP struct {
|
||||||
@@ -442,6 +644,14 @@ func (api *API) GetChatAdministrators(params GetChatAdministratorsP) ([]ChatMemb
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetChatAdministratorsWithContext is the context-aware variant of GetChatAdministrators.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getchatadministrators
|
||||||
|
func (api *API) GetChatAdministratorsWithContext(ctx context.Context, params GetChatAdministratorsP) ([]ChatMember, error) {
|
||||||
|
req := NewRequestWithChatID[[]ChatMember]("getChatAdministrators", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetChatMembersCountP holds parameters for the getChatMemberCount method.
|
// GetChatMembersCountP holds parameters for the getChatMemberCount method.
|
||||||
// See https://core.telegram.org/bots/api#getchatmembercount
|
// See https://core.telegram.org/bots/api#getchatmembercount
|
||||||
type GetChatMembersCountP struct {
|
type GetChatMembersCountP struct {
|
||||||
@@ -455,6 +665,14 @@ func (api *API) GetChatMemberCount(params GetChatMembersCountP) (int, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetChatMemberCountWithContext is the context-aware variant of GetChatMemberCount.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getchatmembercount
|
||||||
|
func (api *API) GetChatMemberCountWithContext(ctx context.Context, params GetChatMembersCountP) (int, error) {
|
||||||
|
req := NewRequestWithChatID[int]("getChatMemberCount", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetChatMemberP holds parameters for the getChatMember method.
|
// GetChatMemberP holds parameters for the getChatMember method.
|
||||||
// See https://core.telegram.org/bots/api#getchatmember
|
// See https://core.telegram.org/bots/api#getchatmember
|
||||||
type GetChatMemberP struct {
|
type GetChatMemberP struct {
|
||||||
@@ -469,6 +687,14 @@ func (api *API) GetChatMember(params GetChatMemberP) (ChatMember, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetChatMemberWithContext is the context-aware variant of GetChatMember.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getchatmember
|
||||||
|
func (api *API) GetChatMemberWithContext(ctx context.Context, params GetChatMemberP) (ChatMember, error) {
|
||||||
|
req := NewRequestWithChatID[ChatMember]("getChatMember", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetChatStickerSetP holds parameters for the setChatStickerSet method.
|
// SetChatStickerSetP holds parameters for the setChatStickerSet method.
|
||||||
// See https://core.telegram.org/bots/api#setchatstickerset
|
// See https://core.telegram.org/bots/api#setchatstickerset
|
||||||
type SetChatStickerSetP struct {
|
type SetChatStickerSetP struct {
|
||||||
@@ -484,6 +710,14 @@ func (api *API) SetChatStickerSet(params SetChatStickerSetP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetChatStickerSetWithContext is the context-aware variant of SetChatStickerSet.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setchatstickerset
|
||||||
|
func (api *API) SetChatStickerSetWithContext(ctx context.Context, params SetChatStickerSetP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("setChatStickerSet", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// DeleteChatStickerSetP holds parameters for the deleteChatStickerSet method.
|
// DeleteChatStickerSetP holds parameters for the deleteChatStickerSet method.
|
||||||
// See https://core.telegram.org/bots/api#deletechatstickerset
|
// See https://core.telegram.org/bots/api#deletechatstickerset
|
||||||
type DeleteChatStickerSetP struct {
|
type DeleteChatStickerSetP struct {
|
||||||
@@ -498,6 +732,14 @@ func (api *API) DeleteChatStickerSet(params DeleteChatStickerSetP) (bool, error)
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteChatStickerSetWithContext is the context-aware variant of DeleteChatStickerSet.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#deletechatstickerset
|
||||||
|
func (api *API) DeleteChatStickerSetWithContext(ctx context.Context, params DeleteChatStickerSetP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("deleteChatStickerSet", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetUserChatBoostsP holds parameters for the getUserChatBoosts method.
|
// GetUserChatBoostsP holds parameters for the getUserChatBoosts method.
|
||||||
// See https://core.telegram.org/bots/api#getuserchatboosts
|
// See https://core.telegram.org/bots/api#getuserchatboosts
|
||||||
type GetUserChatBoostsP struct {
|
type GetUserChatBoostsP struct {
|
||||||
@@ -512,6 +754,14 @@ func (api *API) GetUserChatBoosts(params GetUserChatBoostsP) (UserChatBoosts, er
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetUserChatBoostsWithContext is the context-aware variant of GetUserChatBoosts.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getuserchatboosts
|
||||||
|
func (api *API) GetUserChatBoostsWithContext(ctx context.Context, params GetUserChatBoostsP) (UserChatBoosts, error) {
|
||||||
|
req := NewRequestWithChatID[UserChatBoosts]("getUserChatBoosts", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetChatGiftsP holds parameters for the getChatGifts method.
|
// GetChatGiftsP holds parameters for the getChatGifts method.
|
||||||
// See https://core.telegram.org/bots/api#getchatgifts
|
// See https://core.telegram.org/bots/api#getchatgifts
|
||||||
type GetChatGiftsP struct {
|
type GetChatGiftsP struct {
|
||||||
@@ -534,3 +784,11 @@ func (api *API) GetChatGifts(params GetChatGiftsP) (OwnedGifts, error) {
|
|||||||
req := NewRequestWithChatID[OwnedGifts]("getChatGifts", params, params.ChatID)
|
req := NewRequestWithChatID[OwnedGifts]("getChatGifts", params, params.ChatID)
|
||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetChatGiftsWithContext is the context-aware variant of GetChatGifts.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getchatgifts
|
||||||
|
func (api *API) GetChatGiftsWithContext(ctx context.Context, params GetChatGiftsP) (OwnedGifts, error) {
|
||||||
|
req := NewRequestWithChatID[OwnedGifts]("getChatGifts", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package tgapi
|
package tgapi
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
// BaseForumTopicP contains common fields for forum topic operations that require a chat ID and a message thread ID.
|
// BaseForumTopicP contains common fields for forum topic operations that require a chat ID and a message thread ID.
|
||||||
type BaseForumTopicP struct {
|
type BaseForumTopicP struct {
|
||||||
ChatID int64 `json:"chat_id"`
|
ChatID int64 `json:"chat_id"`
|
||||||
@@ -13,6 +15,14 @@ func (api *API) GetForumTopicIconStickers() ([]Sticker, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetForumTopicIconStickersWithContext is the context-aware variant of GetForumTopicIconStickers.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getforumtopiciconstickers
|
||||||
|
func (api *API) GetForumTopicIconStickersWithContext(ctx context.Context) ([]Sticker, error) {
|
||||||
|
req := NewRequest[[]Sticker]("getForumTopicIconStickers", NoParams)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// CreateForumTopicP holds parameters for the createForumTopic method.
|
// CreateForumTopicP holds parameters for the createForumTopic method.
|
||||||
// See https://core.telegram.org/bots/api#createforumtopic
|
// See https://core.telegram.org/bots/api#createforumtopic
|
||||||
type CreateForumTopicP struct {
|
type CreateForumTopicP struct {
|
||||||
@@ -30,6 +40,14 @@ func (api *API) CreateForumTopic(params CreateForumTopicP) (ForumTopic, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CreateForumTopicWithContext is the context-aware variant of CreateForumTopic.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#createforumtopic
|
||||||
|
func (api *API) CreateForumTopicWithContext(ctx context.Context, params CreateForumTopicP) (ForumTopic, error) {
|
||||||
|
req := NewRequestWithChatID[ForumTopic]("createForumTopic", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// EditForumTopicP holds parameters for the editForumTopic method.
|
// EditForumTopicP holds parameters for the editForumTopic method.
|
||||||
// See https://core.telegram.org/bots/api#editforumtopic
|
// See https://core.telegram.org/bots/api#editforumtopic
|
||||||
type EditForumTopicP struct {
|
type EditForumTopicP struct {
|
||||||
@@ -46,6 +64,14 @@ func (api *API) EditForumTopic(params EditForumTopicP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EditForumTopicWithContext is the context-aware variant of EditForumTopic.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#editforumtopic
|
||||||
|
func (api *API) EditForumTopicWithContext(ctx context.Context, params EditForumTopicP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("editForumTopic", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// CloseForumTopic closes an open forum topic.
|
// CloseForumTopic closes an open forum topic.
|
||||||
// Returns True on success.
|
// Returns True on success.
|
||||||
// See https://core.telegram.org/bots/api#closeforumtopic
|
// See https://core.telegram.org/bots/api#closeforumtopic
|
||||||
@@ -54,6 +80,14 @@ func (api *API) CloseForumTopic(params BaseForumTopicP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CloseForumTopicWithContext is the context-aware variant of CloseForumTopic.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#closeforumtopic
|
||||||
|
func (api *API) CloseForumTopicWithContext(ctx context.Context, params BaseForumTopicP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("closeForumTopic", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// ReopenForumTopic reopens a closed forum topic.
|
// ReopenForumTopic reopens a closed forum topic.
|
||||||
// Returns True on success.
|
// Returns True on success.
|
||||||
// See https://core.telegram.org/bots/api#reopenforumtopic
|
// See https://core.telegram.org/bots/api#reopenforumtopic
|
||||||
@@ -62,6 +96,14 @@ func (api *API) ReopenForumTopic(params BaseForumTopicP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReopenForumTopicWithContext is the context-aware variant of ReopenForumTopic.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#reopenforumtopic
|
||||||
|
func (api *API) ReopenForumTopicWithContext(ctx context.Context, params BaseForumTopicP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("reopenForumTopic", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// DeleteForumTopic deletes a forum topic.
|
// DeleteForumTopic deletes a forum topic.
|
||||||
// Returns True on success.
|
// Returns True on success.
|
||||||
// See https://core.telegram.org/bots/api#deleteforumtopic
|
// See https://core.telegram.org/bots/api#deleteforumtopic
|
||||||
@@ -70,6 +112,14 @@ func (api *API) DeleteForumTopic(params BaseForumTopicP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteForumTopicWithContext is the context-aware variant of DeleteForumTopic.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#deleteforumtopic
|
||||||
|
func (api *API) DeleteForumTopicWithContext(ctx context.Context, params BaseForumTopicP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("deleteForumTopic", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpinAllForumTopicMessages clears the list of pinned messages in a forum topic.
|
// UnpinAllForumTopicMessages clears the list of pinned messages in a forum topic.
|
||||||
// Returns True on success.
|
// Returns True on success.
|
||||||
// See https://core.telegram.org/bots/api#unpinallforumtopicmessages
|
// See https://core.telegram.org/bots/api#unpinallforumtopicmessages
|
||||||
@@ -78,6 +128,14 @@ func (api *API) UnpinAllForumTopicMessages(params BaseForumTopicP) (bool, error)
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnpinAllForumTopicMessagesWithContext is the context-aware variant of UnpinAllForumTopicMessages.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#unpinallforumtopicmessages
|
||||||
|
func (api *API) UnpinAllForumTopicMessagesWithContext(ctx context.Context, params BaseForumTopicP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("unpinAllForumTopicMessages", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// BaseGeneralForumTopicP contains common fields for general forum topic operations that require a chat ID.
|
// BaseGeneralForumTopicP contains common fields for general forum topic operations that require a chat ID.
|
||||||
type BaseGeneralForumTopicP struct {
|
type BaseGeneralForumTopicP struct {
|
||||||
ChatID int64 `json:"chat_id"`
|
ChatID int64 `json:"chat_id"`
|
||||||
@@ -98,6 +156,14 @@ func (api *API) EditGeneralForumTopic(params EditGeneralForumTopicP) (bool, erro
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EditGeneralForumTopicWithContext is the context-aware variant of EditGeneralForumTopic.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#editgeneralforumtopic
|
||||||
|
func (api *API) EditGeneralForumTopicWithContext(ctx context.Context, params EditGeneralForumTopicP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("editGeneralForumTopic", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// CloseGeneralForumTopic closes the 'General' topic in a forum supergroup.
|
// CloseGeneralForumTopic closes the 'General' topic in a forum supergroup.
|
||||||
// Returns True on success.
|
// Returns True on success.
|
||||||
// See https://core.telegram.org/bots/api#closegeneralforumtopic
|
// See https://core.telegram.org/bots/api#closegeneralforumtopic
|
||||||
@@ -106,6 +172,14 @@ func (api *API) CloseGeneralForumTopic(params BaseGeneralForumTopicP) (bool, err
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CloseGeneralForumTopicWithContext is the context-aware variant of CloseGeneralForumTopic.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#closegeneralforumtopic
|
||||||
|
func (api *API) CloseGeneralForumTopicWithContext(ctx context.Context, params BaseGeneralForumTopicP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("closeGeneralForumTopic", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// ReopenGeneralForumTopic reopens the 'General' topic in a forum supergroup.
|
// ReopenGeneralForumTopic reopens the 'General' topic in a forum supergroup.
|
||||||
// Returns True on success.
|
// Returns True on success.
|
||||||
// See https://core.telegram.org/bots/api#reopengeneralforumtopic
|
// See https://core.telegram.org/bots/api#reopengeneralforumtopic
|
||||||
@@ -114,6 +188,14 @@ func (api *API) ReopenGeneralForumTopic(params BaseGeneralForumTopicP) (bool, er
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReopenGeneralForumTopicWithContext is the context-aware variant of ReopenGeneralForumTopic.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#reopengeneralforumtopic
|
||||||
|
func (api *API) ReopenGeneralForumTopicWithContext(ctx context.Context, params BaseGeneralForumTopicP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("reopenGeneralForumTopic", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// HideGeneralForumTopic hides the 'General' topic in a forum supergroup.
|
// HideGeneralForumTopic hides the 'General' topic in a forum supergroup.
|
||||||
// Returns True on success.
|
// Returns True on success.
|
||||||
// See https://core.telegram.org/bots/api#hidegeneralforumtopic
|
// See https://core.telegram.org/bots/api#hidegeneralforumtopic
|
||||||
@@ -122,6 +204,14 @@ func (api *API) HideGeneralForumTopic(params BaseGeneralForumTopicP) (bool, erro
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HideGeneralForumTopicWithContext is the context-aware variant of HideGeneralForumTopic.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#hidegeneralforumtopic
|
||||||
|
func (api *API) HideGeneralForumTopicWithContext(ctx context.Context, params BaseGeneralForumTopicP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("hideGeneralForumTopic", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// UnhideGeneralForumTopic unhides the 'General' topic in a forum supergroup.
|
// UnhideGeneralForumTopic unhides the 'General' topic in a forum supergroup.
|
||||||
// Returns True on success.
|
// Returns True on success.
|
||||||
// See https://core.telegram.org/bots/api#unhidegeneralforumtopic
|
// See https://core.telegram.org/bots/api#unhidegeneralforumtopic
|
||||||
@@ -130,6 +220,14 @@ func (api *API) UnhideGeneralForumTopic(params BaseGeneralForumTopicP) (bool, er
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnhideGeneralForumTopicWithContext is the context-aware variant of UnhideGeneralForumTopic.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#unhidegeneralforumtopic
|
||||||
|
func (api *API) UnhideGeneralForumTopicWithContext(ctx context.Context, params BaseGeneralForumTopicP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("unhideGeneralForumTopic", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// UnpinAllGeneralForumTopicMessages clears the list of pinned messages in the 'General' topic.
|
// UnpinAllGeneralForumTopicMessages clears the list of pinned messages in the 'General' topic.
|
||||||
// Returns True on success.
|
// Returns True on success.
|
||||||
// See https://core.telegram.org/bots/api#unpinallgeneralforumtopicmessages
|
// See https://core.telegram.org/bots/api#unpinallgeneralforumtopicmessages
|
||||||
@@ -137,3 +235,11 @@ func (api *API) UnpinAllGeneralForumTopicMessages(params BaseGeneralForumTopicP)
|
|||||||
req := NewRequestWithChatID[bool]("unpinAllGeneralForumTopicMessages", params, params.ChatID)
|
req := NewRequestWithChatID[bool]("unpinAllGeneralForumTopicMessages", params, params.ChatID)
|
||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnpinAllGeneralForumTopicMessagesWithContext is the context-aware variant of UnpinAllGeneralForumTopicMessages.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#unpinallgeneralforumtopicmessages
|
||||||
|
func (api *API) UnpinAllGeneralForumTopicMessagesWithContext(ctx context.Context, params BaseGeneralForumTopicP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("unpinAllGeneralForumTopicMessages", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package tgapi
|
package tgapi
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
// SendGameP holds parameters for the sendGame method.
|
// SendGameP holds parameters for the sendGame method.
|
||||||
// See https://core.telegram.org/bots/api#sendgame
|
// See https://core.telegram.org/bots/api#sendgame
|
||||||
type SendGameP struct {
|
type SendGameP struct {
|
||||||
@@ -24,6 +26,14 @@ func (api *API) SendGame(params SendGameP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendGameWithContext is the context-aware variant of SendGame.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendgame
|
||||||
|
func (api *API) SendGameWithContext(ctx context.Context, params SendGameP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendGame", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetGameScoreP holds parameters for the setGameScore method.
|
// SetGameScoreP holds parameters for the setGameScore method.
|
||||||
// See https://core.telegram.org/bots/api#setgamescore
|
// See https://core.telegram.org/bots/api#setgamescore
|
||||||
type SetGameScoreP struct {
|
type SetGameScoreP struct {
|
||||||
@@ -52,6 +62,21 @@ func (api *API) SetGameScore(params SetGameScoreP) (Message, bool, error) {
|
|||||||
return res, false, err
|
return res, false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetGameScoreWithContext is the context-aware variant of SetGameScore.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setgamescore
|
||||||
|
func (api *API) SetGameScoreWithContext(ctx context.Context, params SetGameScoreP) (Message, bool, error) {
|
||||||
|
var zero Message
|
||||||
|
if params.InlineMessageID != "" {
|
||||||
|
req := NewRequestWithChatID[bool]("setGameScore", params, params.ChatID)
|
||||||
|
res, err := req.DoWithContext(ctx, api)
|
||||||
|
return zero, res, err
|
||||||
|
}
|
||||||
|
req := NewRequestWithChatID[Message]("setGameScore", params, params.ChatID)
|
||||||
|
res, err := req.DoWithContext(ctx, api)
|
||||||
|
return res, false, err
|
||||||
|
}
|
||||||
|
|
||||||
// GetGameHighScoresP holds parameters for the getGameHighScores method.
|
// GetGameHighScoresP holds parameters for the getGameHighScores method.
|
||||||
// See https://core.telegram.org/bots/api#getgamehighscores
|
// See https://core.telegram.org/bots/api#getgamehighscores
|
||||||
type GetGameHighScoresP struct {
|
type GetGameHighScoresP struct {
|
||||||
@@ -67,3 +92,11 @@ func (api *API) GetGameHighScores(params GetGameHighScoresP) ([]GameHighScore, e
|
|||||||
req := NewRequestWithChatID[[]GameHighScore]("getGameHighScores", params, params.ChatID)
|
req := NewRequestWithChatID[[]GameHighScore]("getGameHighScores", params, params.ChatID)
|
||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetGameHighScoresWithContext is the context-aware variant of GetGameHighScores.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getgamehighscores
|
||||||
|
func (api *API) GetGameHighScoresWithContext(ctx context.Context, params GetGameHighScoresP) ([]GameHighScore, error) {
|
||||||
|
req := NewRequestWithChatID[[]GameHighScore]("getGameHighScores", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package tgapi
|
package tgapi
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
// AnswerInlineQueryP holds parameters for the answerInlineQuery method.
|
// AnswerInlineQueryP holds parameters for the answerInlineQuery method.
|
||||||
// See https://core.telegram.org/bots/api#answerinlinequery
|
// See https://core.telegram.org/bots/api#answerinlinequery
|
||||||
type AnswerInlineQueryP struct {
|
type AnswerInlineQueryP struct {
|
||||||
@@ -19,6 +21,14 @@ func (api *API) AnswerInlineQuery(params AnswerInlineQueryP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AnswerInlineQueryWithContext is the context-aware variant of AnswerInlineQuery.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#answerinlinequery
|
||||||
|
func (api *API) AnswerInlineQueryWithContext(ctx context.Context, params AnswerInlineQueryP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("answerInlineQuery", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// AnswerWebAppQueryP holds parameters for the answerWebAppQuery method.
|
// AnswerWebAppQueryP holds parameters for the answerWebAppQuery method.
|
||||||
// See https://core.telegram.org/bots/api#answerwebappquery
|
// See https://core.telegram.org/bots/api#answerwebappquery
|
||||||
type AnswerWebAppQueryP struct {
|
type AnswerWebAppQueryP struct {
|
||||||
@@ -33,6 +43,14 @@ func (api *API) AnswerWebAppQuery(params AnswerWebAppQueryP) (SentWebAppMessage,
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AnswerWebAppQueryWithContext is the context-aware variant of AnswerWebAppQuery.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#answerwebappquery
|
||||||
|
func (api *API) AnswerWebAppQueryWithContext(ctx context.Context, params AnswerWebAppQueryP) (SentWebAppMessage, error) {
|
||||||
|
req := NewRequest[SentWebAppMessage]("answerWebAppQuery", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SavePreparedInlineMessageP holds parameters for the savePreparedInlineMessage method.
|
// SavePreparedInlineMessageP holds parameters for the savePreparedInlineMessage method.
|
||||||
// See https://core.telegram.org/bots/api#savepreparedinlinemessage
|
// See https://core.telegram.org/bots/api#savepreparedinlinemessage
|
||||||
type SavePreparedInlineMessageP struct {
|
type SavePreparedInlineMessageP struct {
|
||||||
@@ -50,3 +68,11 @@ func (api *API) SavePreparedInlineMessage(params SavePreparedInlineMessageP) (Pr
|
|||||||
req := NewRequest[PreparedInlineMessage]("savePreparedInlineMessage", params)
|
req := NewRequest[PreparedInlineMessage]("savePreparedInlineMessage", params)
|
||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SavePreparedInlineMessageWithContext is the context-aware variant of SavePreparedInlineMessage.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#savepreparedinlinemessage
|
||||||
|
func (api *API) SavePreparedInlineMessageWithContext(ctx context.Context, params SavePreparedInlineMessageP) (PreparedInlineMessage, error) {
|
||||||
|
req := NewRequest[PreparedInlineMessage]("savePreparedInlineMessage", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|||||||
+285
-18
@@ -1,5 +1,7 @@
|
|||||||
package tgapi
|
package tgapi
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
// SendMessageP holds parameters for the sendMessage method.
|
// SendMessageP holds parameters for the sendMessage method.
|
||||||
// See https://core.telegram.org/bots/api#sendmessage
|
// See https://core.telegram.org/bots/api#sendmessage
|
||||||
type SendMessageP struct {
|
type SendMessageP struct {
|
||||||
@@ -29,6 +31,14 @@ func (api *API) SendMessage(params SendMessageP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendMessageWithContext is the context-aware variant of SendMessage.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendmessage
|
||||||
|
func (api *API) SendMessageWithContext(ctx context.Context, params SendMessageP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message, SendMessageP]("sendMessage", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// ForwardMessageP holds parameters for the forwardMessage method.
|
// ForwardMessageP holds parameters for the forwardMessage method.
|
||||||
// See https://core.telegram.org/bots/api#forwardmessage
|
// See https://core.telegram.org/bots/api#forwardmessage
|
||||||
type ForwardMessageP struct {
|
type ForwardMessageP struct {
|
||||||
@@ -53,6 +63,14 @@ func (api *API) ForwardMessage(params ForwardMessageP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ForwardMessageWithContext is the context-aware variant of ForwardMessage.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#forwardmessage
|
||||||
|
func (api *API) ForwardMessageWithContext(ctx context.Context, params ForwardMessageP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("forwardMessage", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// ForwardMessagesP holds parameters for the forwardMessages method.
|
// ForwardMessagesP holds parameters for the forwardMessages method.
|
||||||
// See https://core.telegram.org/bots/api#forwardmessages
|
// See https://core.telegram.org/bots/api#forwardmessages
|
||||||
type ForwardMessagesP struct {
|
type ForwardMessagesP struct {
|
||||||
@@ -74,6 +92,14 @@ func (api *API) ForwardMessages(params ForwardMessagesP) ([]MessageID, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ForwardMessagesWithContext is the context-aware variant of ForwardMessages.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#forwardmessages
|
||||||
|
func (api *API) ForwardMessagesWithContext(ctx context.Context, params ForwardMessagesP) ([]MessageID, error) {
|
||||||
|
req := NewRequestWithChatID[[]MessageID]("forwardMessages", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// CopyMessageP holds parameters for the copyMessage method.
|
// CopyMessageP holds parameters for the copyMessage method.
|
||||||
// See https://core.telegram.org/bots/api#copymessage
|
// See https://core.telegram.org/bots/api#copymessage
|
||||||
type CopyMessageP struct {
|
type CopyMessageP struct {
|
||||||
@@ -110,6 +136,17 @@ func (api *API) CopyMessage(params CopyMessageP) (int, error) {
|
|||||||
return msgID.MessageID, nil
|
return msgID.MessageID, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CopyMessageWithContext is the context-aware variant of CopyMessage.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#copymessage
|
||||||
|
func (api *API) CopyMessageWithContext(ctx context.Context, params CopyMessageP) (int, error) {
|
||||||
|
msgID, err := NewRequestWithChatID[MessageID]("copyMessage", params, params.ChatID).DoWithContext(ctx, api)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
return msgID.MessageID, nil
|
||||||
|
}
|
||||||
|
|
||||||
// CopyMessagesP holds parameters for the copyMessages method.
|
// CopyMessagesP holds parameters for the copyMessages method.
|
||||||
// See https://core.telegram.org/bots/api#copymessages
|
// See https://core.telegram.org/bots/api#copymessages
|
||||||
type CopyMessagesP struct {
|
type CopyMessagesP struct {
|
||||||
@@ -132,6 +169,14 @@ func (api *API) CopyMessages(params CopyMessagesP) ([]MessageID, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CopyMessagesWithContext is the context-aware variant of CopyMessages.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#copymessages
|
||||||
|
func (api *API) CopyMessagesWithContext(ctx context.Context, params CopyMessagesP) ([]MessageID, error) {
|
||||||
|
req := NewRequestWithChatID[[]MessageID]("copyMessages", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendLocationP holds parameters for the sendLocation method.
|
// SendLocationP holds parameters for the sendLocation method.
|
||||||
// See https://core.telegram.org/bots/api#sendlocation
|
// See https://core.telegram.org/bots/api#sendlocation
|
||||||
type SendLocationP struct {
|
type SendLocationP struct {
|
||||||
@@ -164,6 +209,14 @@ func (api *API) SendLocation(params SendLocationP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendLocationWithContext is the context-aware variant of SendLocation.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendlocation
|
||||||
|
func (api *API) SendLocationWithContext(ctx context.Context, params SendLocationP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendLocation", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendVenueP holds parameters for the sendVenue method.
|
// SendVenueP holds parameters for the sendVenue method.
|
||||||
// See https://core.telegram.org/bots/api#sendvenue
|
// See https://core.telegram.org/bots/api#sendvenue
|
||||||
type SendVenueP struct {
|
type SendVenueP struct {
|
||||||
@@ -198,6 +251,14 @@ func (api *API) SendVenue(params SendVenueP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendVenueWithContext is the context-aware variant of SendVenue.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendvenue
|
||||||
|
func (api *API) SendVenueWithContext(ctx context.Context, params SendVenueP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendVenue", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendContactP holds parameters for the sendContact method.
|
// SendContactP holds parameters for the sendContact method.
|
||||||
// See https://core.telegram.org/bots/api#sendcontact
|
// See https://core.telegram.org/bots/api#sendcontact
|
||||||
type SendContactP struct {
|
type SendContactP struct {
|
||||||
@@ -228,6 +289,14 @@ func (api *API) SendContact(params SendContactP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendContactWithContext is the context-aware variant of SendContact.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendcontact
|
||||||
|
func (api *API) SendContactWithContext(ctx context.Context, params SendContactP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendContact", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendPollP holds parameters for the sendPoll method.
|
// SendPollP holds parameters for the sendPoll method.
|
||||||
// See https://core.telegram.org/bots/api#sendpoll
|
// See https://core.telegram.org/bots/api#sendpoll
|
||||||
type SendPollP struct {
|
type SendPollP struct {
|
||||||
@@ -266,6 +335,14 @@ func (api *API) SendPoll(params SendPollP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendPollWithContext is the context-aware variant of SendPoll.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendpoll
|
||||||
|
func (api *API) SendPollWithContext(ctx context.Context, params SendPollP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendPoll", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendChecklistP holds parameters for the sendChecklist method.
|
// SendChecklistP holds parameters for the sendChecklist method.
|
||||||
// See https://core.telegram.org/bots/api#sendchecklist
|
// See https://core.telegram.org/bots/api#sendchecklist
|
||||||
type SendChecklistP struct {
|
type SendChecklistP struct {
|
||||||
@@ -288,6 +365,14 @@ func (api *API) SendChecklist(params SendChecklistP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendChecklistWithContext is the context-aware variant of SendChecklist.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendchecklist
|
||||||
|
func (api *API) SendChecklistWithContext(ctx context.Context, params SendChecklistP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendChecklist", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendDiceP holds parameters for the sendDice method.
|
// SendDiceP holds parameters for the sendDice method.
|
||||||
// See https://core.telegram.org/bots/api#senddice
|
// See https://core.telegram.org/bots/api#senddice
|
||||||
type SendDiceP struct {
|
type SendDiceP struct {
|
||||||
@@ -315,6 +400,14 @@ func (api *API) SendDice(params SendDiceP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendDiceWithContext is the context-aware variant of SendDice.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#senddice
|
||||||
|
func (api *API) SendDiceWithContext(ctx context.Context, params SendDiceP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendDice", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendMessageDraftP holds parameters for the sendMessageDraft method.
|
// SendMessageDraftP holds parameters for the sendMessageDraft method.
|
||||||
// See https://core.telegram.org/bots/api#sendmessagedraft
|
// See https://core.telegram.org/bots/api#sendmessagedraft
|
||||||
type SendMessageDraftP struct {
|
type SendMessageDraftP struct {
|
||||||
@@ -334,6 +427,14 @@ func (api *API) SendMessageDraft(params SendMessageDraftP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendMessageDraftWithContext is the context-aware variant of SendMessageDraft.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendmessagedraft
|
||||||
|
func (api *API) SendMessageDraftWithContext(ctx context.Context, params SendMessageDraftP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("sendMessageDraft", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SendChatActionP holds parameters for the sendChatAction method.
|
// SendChatActionP holds parameters for the sendChatAction method.
|
||||||
// See https://core.telegram.org/bots/api#sendchataction
|
// See https://core.telegram.org/bots/api#sendchataction
|
||||||
type SendChatActionP struct {
|
type SendChatActionP struct {
|
||||||
@@ -351,6 +452,14 @@ func (api *API) SendChatAction(params SendChatActionP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendChatActionWithContext is the context-aware variant of SendChatAction.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendchataction
|
||||||
|
func (api *API) SendChatActionWithContext(ctx context.Context, params SendChatActionP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("sendChatAction", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetMessageReactionP holds parameters for the setMessageReaction method.
|
// SetMessageReactionP holds parameters for the setMessageReaction method.
|
||||||
// See https://core.telegram.org/bots/api#setmessagereaction
|
// See https://core.telegram.org/bots/api#setmessagereaction
|
||||||
type SetMessageReactionP struct {
|
type SetMessageReactionP struct {
|
||||||
@@ -368,16 +477,26 @@ func (api *API) SetMessageReaction(params SetMessageReactionP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetMessageReactionWithContext is the context-aware variant of SetMessageReaction.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setmessagereaction
|
||||||
|
func (api *API) SetMessageReactionWithContext(ctx context.Context, params SetMessageReactionP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("setMessageReaction", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// EditMessageTextP holds parameters for the editMessageText method.
|
// EditMessageTextP holds parameters for the editMessageText method.
|
||||||
// See https://core.telegram.org/bots/api#editmessagetext
|
// See https://core.telegram.org/bots/api#editmessagetext
|
||||||
type EditMessageTextP struct {
|
type EditMessageTextP struct {
|
||||||
BusinessConnectionID string `json:"business_connection_id,omitempty"`
|
BusinessConnectionID string `json:"business_connection_id,omitempty"`
|
||||||
ChatID int64 `json:"chat_id,omitempty"`
|
ChatID int64 `json:"chat_id,omitempty"`
|
||||||
MessageID int `json:"message_id,omitempty"`
|
MessageID int `json:"message_id,omitempty"`
|
||||||
InlineMessageID string `json:"inline_message_id,omitempty"`
|
InlineMessageID string `json:"inline_message_id,omitempty"`
|
||||||
Text string `json:"text"`
|
Text string `json:"text"`
|
||||||
ParseMode ParseMode `json:"parse_mode,omitempty"`
|
ParseMode ParseMode `json:"parse_mode,omitempty"`
|
||||||
ReplyMarkup *ReplyMarkup `json:"reply_markup,omitempty"`
|
Entities []MessageEntity `json:"entities,omitempty"`
|
||||||
|
LinkPreviewOptions *LinkPreviewOptions `json:"link_preview_options,omitempty"`
|
||||||
|
ReplyMarkup *ReplyMarkup `json:"reply_markup,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// EditMessageText edits text messages.
|
// EditMessageText edits text messages.
|
||||||
@@ -396,16 +515,33 @@ func (api *API) EditMessageText(params EditMessageTextP) (Message, bool, error)
|
|||||||
return res, false, err
|
return res, false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EditMessageTextWithContext is the context-aware variant of EditMessageText.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#editmessagetext
|
||||||
|
func (api *API) EditMessageTextWithContext(ctx context.Context, params EditMessageTextP) (Message, bool, error) {
|
||||||
|
var zero Message
|
||||||
|
if params.InlineMessageID != "" {
|
||||||
|
req := NewRequestWithChatID[bool]("editMessageText", params, params.ChatID)
|
||||||
|
res, err := req.DoWithContext(ctx, api)
|
||||||
|
return zero, res, err
|
||||||
|
}
|
||||||
|
req := NewRequestWithChatID[Message]("editMessageText", params, params.ChatID)
|
||||||
|
res, err := req.DoWithContext(ctx, api)
|
||||||
|
return res, false, err
|
||||||
|
}
|
||||||
|
|
||||||
// EditMessageCaptionP holds parameters for the editMessageCaption method.
|
// EditMessageCaptionP holds parameters for the editMessageCaption method.
|
||||||
// See https://core.telegram.org/bots/api#editmessagecaption
|
// See https://core.telegram.org/bots/api#editmessagecaption
|
||||||
type EditMessageCaptionP struct {
|
type EditMessageCaptionP struct {
|
||||||
BusinessConnectionID string `json:"business_connection_id,omitempty"`
|
BusinessConnectionID string `json:"business_connection_id,omitempty"`
|
||||||
ChatID int64 `json:"chat_id,omitempty"`
|
ChatID int64 `json:"chat_id,omitempty"`
|
||||||
MessageID int `json:"message_id,omitempty"`
|
MessageID int `json:"message_id,omitempty"`
|
||||||
InlineMessageID string `json:"inline_message_id,omitempty"`
|
InlineMessageID string `json:"inline_message_id,omitempty"`
|
||||||
Caption string `json:"caption"`
|
Caption string `json:"caption"`
|
||||||
ParseMode ParseMode `json:"parse_mode,omitempty"`
|
ParseMode ParseMode `json:"parse_mode,omitempty"`
|
||||||
ReplyMarkup *ReplyMarkup `json:"reply_markup,omitempty"`
|
CaptionEntities []MessageEntity `json:"caption_entities,omitempty"`
|
||||||
|
ShowCaptionAboveMedia bool `json:"show_caption_above_media,omitempty"`
|
||||||
|
ReplyMarkup *ReplyMarkup `json:"reply_markup,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// EditMessageCaption edits captions of messages.
|
// EditMessageCaption edits captions of messages.
|
||||||
@@ -424,6 +560,21 @@ func (api *API) EditMessageCaption(params EditMessageCaptionP) (Message, bool, e
|
|||||||
return res, false, err
|
return res, false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EditMessageCaptionWithContext is the context-aware variant of EditMessageCaption.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#editmessagecaption
|
||||||
|
func (api *API) EditMessageCaptionWithContext(ctx context.Context, params EditMessageCaptionP) (Message, bool, error) {
|
||||||
|
var zero Message
|
||||||
|
if params.InlineMessageID != "" {
|
||||||
|
req := NewRequestWithChatID[bool]("editMessageCaption", params, params.ChatID)
|
||||||
|
res, err := req.DoWithContext(ctx, api)
|
||||||
|
return zero, res, err
|
||||||
|
}
|
||||||
|
req := NewRequestWithChatID[Message]("editMessageCaption", params, params.ChatID)
|
||||||
|
res, err := req.DoWithContext(ctx, api)
|
||||||
|
return res, false, err
|
||||||
|
}
|
||||||
|
|
||||||
// EditMessageMediaP holds parameters for the editMessageMedia method.
|
// EditMessageMediaP holds parameters for the editMessageMedia method.
|
||||||
// See https://core.telegram.org/bots/api#editmessagemedia
|
// See https://core.telegram.org/bots/api#editmessagemedia
|
||||||
type EditMessageMediaP struct {
|
type EditMessageMediaP struct {
|
||||||
@@ -451,6 +602,21 @@ func (api *API) EditMessageMedia(params EditMessageMediaP) (Message, bool, error
|
|||||||
return res, false, err
|
return res, false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EditMessageMediaWithContext is the context-aware variant of EditMessageMedia.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#editmessagemedia
|
||||||
|
func (api *API) EditMessageMediaWithContext(ctx context.Context, params EditMessageMediaP) (Message, bool, error) {
|
||||||
|
var zero Message
|
||||||
|
if params.InlineMessageID != "" {
|
||||||
|
req := NewRequestWithChatID[bool]("editMessageMedia", params, params.ChatID)
|
||||||
|
res, err := req.DoWithContext(ctx, api)
|
||||||
|
return zero, res, err
|
||||||
|
}
|
||||||
|
req := NewRequestWithChatID[Message]("editMessageMedia", params, params.ChatID)
|
||||||
|
res, err := req.DoWithContext(ctx, api)
|
||||||
|
return res, false, err
|
||||||
|
}
|
||||||
|
|
||||||
// EditMessageLiveLocationP holds parameters for the editMessageLiveLocation method.
|
// EditMessageLiveLocationP holds parameters for the editMessageLiveLocation method.
|
||||||
// See https://core.telegram.org/bots/api#editmessagelivelocation
|
// See https://core.telegram.org/bots/api#editmessagelivelocation
|
||||||
type EditMessageLiveLocationP struct {
|
type EditMessageLiveLocationP struct {
|
||||||
@@ -484,6 +650,21 @@ func (api *API) EditMessageLiveLocation(params EditMessageLiveLocationP) (Messag
|
|||||||
return res, false, err
|
return res, false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EditMessageLiveLocationWithContext is the context-aware variant of EditMessageLiveLocation.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#editmessagelivelocation
|
||||||
|
func (api *API) EditMessageLiveLocationWithContext(ctx context.Context, params EditMessageLiveLocationP) (Message, bool, error) {
|
||||||
|
var zero Message
|
||||||
|
if params.InlineMessageID != "" {
|
||||||
|
req := NewRequestWithChatID[bool]("editMessageLiveLocation", params, params.ChatID)
|
||||||
|
res, err := req.DoWithContext(ctx, api)
|
||||||
|
return zero, res, err
|
||||||
|
}
|
||||||
|
req := NewRequestWithChatID[Message]("editMessageLiveLocation", params, params.ChatID)
|
||||||
|
res, err := req.DoWithContext(ctx, api)
|
||||||
|
return res, false, err
|
||||||
|
}
|
||||||
|
|
||||||
// StopMessageLiveLocationP holds parameters for the stopMessageLiveLocation method.
|
// StopMessageLiveLocationP holds parameters for the stopMessageLiveLocation method.
|
||||||
// See https://core.telegram.org/bots/api#stopmessagelivelocation
|
// See https://core.telegram.org/bots/api#stopmessagelivelocation
|
||||||
type StopMessageLiveLocationP struct {
|
type StopMessageLiveLocationP struct {
|
||||||
@@ -510,6 +691,21 @@ func (api *API) StopMessageLiveLocation(params StopMessageLiveLocationP) (Messag
|
|||||||
return res, false, err
|
return res, false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// StopMessageLiveLocationWithContext is the context-aware variant of StopMessageLiveLocation.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#stopmessagelivelocation
|
||||||
|
func (api *API) StopMessageLiveLocationWithContext(ctx context.Context, params StopMessageLiveLocationP) (Message, bool, error) {
|
||||||
|
var zero Message
|
||||||
|
if params.InlineMessageID != "" {
|
||||||
|
req := NewRequestWithChatID[bool]("stopMessageLiveLocation", params, params.ChatID)
|
||||||
|
res, err := req.DoWithContext(ctx, api)
|
||||||
|
return zero, res, err
|
||||||
|
}
|
||||||
|
req := NewRequestWithChatID[Message]("stopMessageLiveLocation", params, params.ChatID)
|
||||||
|
res, err := req.DoWithContext(ctx, api)
|
||||||
|
return res, false, err
|
||||||
|
}
|
||||||
|
|
||||||
// EditMessageChecklistP holds parameters for the editMessageChecklist method.
|
// EditMessageChecklistP holds parameters for the editMessageChecklist method.
|
||||||
type EditMessageChecklistP struct {
|
type EditMessageChecklistP struct {
|
||||||
BusinessConnectionID string `json:"business_connection_id"`
|
BusinessConnectionID string `json:"business_connection_id"`
|
||||||
@@ -526,6 +722,14 @@ func (api *API) EditMessageChecklist(params EditMessageChecklistP) (Message, err
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EditMessageChecklistWithContext is the context-aware variant of EditMessageChecklist.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#editmessagechecklist
|
||||||
|
func (api *API) EditMessageChecklistWithContext(ctx context.Context, params EditMessageChecklistP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("editMessageChecklist", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// EditMessageReplyMarkupP holds parameters for the editMessageReplyMarkup method.
|
// EditMessageReplyMarkupP holds parameters for the editMessageReplyMarkup method.
|
||||||
// See https://core.telegram.org/bots/api#editmessagereplymarkup
|
// See https://core.telegram.org/bots/api#editmessagereplymarkup
|
||||||
type EditMessageReplyMarkupP struct {
|
type EditMessageReplyMarkupP struct {
|
||||||
@@ -552,13 +756,28 @@ func (api *API) EditMessageReplyMarkup(params EditMessageReplyMarkupP) (Message,
|
|||||||
return res, false, err
|
return res, false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EditMessageReplyMarkupWithContext is the context-aware variant of EditMessageReplyMarkup.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#editmessagereplymarkup
|
||||||
|
func (api *API) EditMessageReplyMarkupWithContext(ctx context.Context, params EditMessageReplyMarkupP) (Message, bool, error) {
|
||||||
|
var zero Message
|
||||||
|
if params.InlineMessageID != "" {
|
||||||
|
req := NewRequestWithChatID[bool]("editMessageReplyMarkup", params, params.ChatID)
|
||||||
|
res, err := req.DoWithContext(ctx, api)
|
||||||
|
return zero, res, err
|
||||||
|
}
|
||||||
|
req := NewRequestWithChatID[Message]("editMessageReplyMarkup", params, params.ChatID)
|
||||||
|
res, err := req.DoWithContext(ctx, api)
|
||||||
|
return res, false, err
|
||||||
|
}
|
||||||
|
|
||||||
// StopPollP holds parameters for the stopPoll method.
|
// StopPollP holds parameters for the stopPoll method.
|
||||||
// See https://core.telegram.org/bots/api#stoppoll
|
// See https://core.telegram.org/bots/api#stoppoll
|
||||||
type StopPollP struct {
|
type StopPollP struct {
|
||||||
BusinessConnectionID string `json:"business_connection_id,omitempty"`
|
BusinessConnectionID string `json:"business_connection_id,omitempty"`
|
||||||
ChatID int64 `json:"chat_id"`
|
ChatID int64 `json:"chat_id"`
|
||||||
MessageID int `json:"message_id"`
|
MessageID int `json:"message_id"`
|
||||||
InlineMessageID string `json:"inline_message_id,omitempty"`
|
ReplyMarkup *InlineKeyboardMarkup `json:"reply_markup,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// StopPoll stops a poll that was sent by the bot.
|
// StopPoll stops a poll that was sent by the bot.
|
||||||
@@ -569,6 +788,14 @@ func (api *API) StopPoll(params StopPollP) (Poll, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// StopPollWithContext is the context-aware variant of StopPoll.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#stoppoll
|
||||||
|
func (api *API) StopPollWithContext(ctx context.Context, params StopPollP) (Poll, error) {
|
||||||
|
req := NewRequestWithChatID[Poll]("stopPoll", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// ApproveSuggestedPostP holds parameters for the approveSuggestedPost method.
|
// ApproveSuggestedPostP holds parameters for the approveSuggestedPost method.
|
||||||
// See https://core.telegram.org/bots/api#approvesuggestedpost
|
// See https://core.telegram.org/bots/api#approvesuggestedpost
|
||||||
type ApproveSuggestedPostP struct {
|
type ApproveSuggestedPostP struct {
|
||||||
@@ -585,6 +812,14 @@ func (api *API) ApproveSuggestedPost(params ApproveSuggestedPostP) (bool, error)
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ApproveSuggestedPostWithContext is the context-aware variant of ApproveSuggestedPost.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#approvesuggestedpost
|
||||||
|
func (api *API) ApproveSuggestedPostWithContext(ctx context.Context, params ApproveSuggestedPostP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("approveSuggestedPost", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// DeclineSuggestedPostP holds parameters for the declineSuggestedPost method.
|
// DeclineSuggestedPostP holds parameters for the declineSuggestedPost method.
|
||||||
// See https://core.telegram.org/bots/api#declinesuggestedpost
|
// See https://core.telegram.org/bots/api#declinesuggestedpost
|
||||||
type DeclineSuggestedPostP struct {
|
type DeclineSuggestedPostP struct {
|
||||||
@@ -601,6 +836,14 @@ func (api *API) DeclineSuggestedPost(params DeclineSuggestedPostP) (bool, error)
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeclineSuggestedPostWithContext is the context-aware variant of DeclineSuggestedPost.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#declinesuggestedpost
|
||||||
|
func (api *API) DeclineSuggestedPostWithContext(ctx context.Context, params DeclineSuggestedPostP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("declineSuggestedPost", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// DeleteMessageP holds parameters for the deleteMessage method.
|
// DeleteMessageP holds parameters for the deleteMessage method.
|
||||||
// See https://core.telegram.org/bots/api#deletemessage
|
// See https://core.telegram.org/bots/api#deletemessage
|
||||||
type DeleteMessageP struct {
|
type DeleteMessageP struct {
|
||||||
@@ -616,6 +859,14 @@ func (api *API) DeleteMessage(params DeleteMessageP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteMessageWithContext is the context-aware variant of DeleteMessage.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#deletemessage
|
||||||
|
func (api *API) DeleteMessageWithContext(ctx context.Context, params DeleteMessageP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("deleteMessage", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// DeleteMessagesP holds parameters for the deleteMessages method.
|
// DeleteMessagesP holds parameters for the deleteMessages method.
|
||||||
// See https://core.telegram.org/bots/api#deletemessages
|
// See https://core.telegram.org/bots/api#deletemessages
|
||||||
type DeleteMessagesP struct {
|
type DeleteMessagesP struct {
|
||||||
@@ -631,6 +882,14 @@ func (api *API) DeleteMessages(params DeleteMessagesP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteMessagesWithContext is the context-aware variant of DeleteMessages.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#deletemessages
|
||||||
|
func (api *API) DeleteMessagesWithContext(ctx context.Context, params DeleteMessagesP) (bool, error) {
|
||||||
|
req := NewRequestWithChatID[bool]("deleteMessages", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// AnswerCallbackQueryP holds parameters for the answerCallbackQuery method.
|
// AnswerCallbackQueryP holds parameters for the answerCallbackQuery method.
|
||||||
// See https://core.telegram.org/bots/api#answercallbackquery
|
// See https://core.telegram.org/bots/api#answercallbackquery
|
||||||
type AnswerCallbackQueryP struct {
|
type AnswerCallbackQueryP struct {
|
||||||
@@ -648,3 +907,11 @@ func (api *API) AnswerCallbackQuery(params AnswerCallbackQueryP) (bool, error) {
|
|||||||
req := NewRequest[bool]("answerCallbackQuery", params)
|
req := NewRequest[bool]("answerCallbackQuery", params)
|
||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AnswerCallbackQueryWithContext is the context-aware variant of AnswerCallbackQuery.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#answercallbackquery
|
||||||
|
func (api *API) AnswerCallbackQueryWithContext(ctx context.Context, params AnswerCallbackQueryP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("answerCallbackQuery", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|||||||
+76
-4
@@ -25,6 +25,14 @@ func (api *API) GetMe() (User, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetMeWithContext is the context-aware variant of GetMe.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getme
|
||||||
|
func (api *API) GetMeWithContext(ctx context.Context) (User, error) {
|
||||||
|
req := NewRequest[User, EmptyParams]("getMe", NoParams)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// LogOut logs the bot out from the cloud Bot API server.
|
// LogOut logs the bot out from the cloud Bot API server.
|
||||||
// Returns true on success.
|
// Returns true on success.
|
||||||
// See https://core.telegram.org/bots/api#logout
|
// See https://core.telegram.org/bots/api#logout
|
||||||
@@ -33,14 +41,30 @@ func (api *API) LogOut() (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close closes the bot instance on the local server.
|
// LogOutWithContext is the context-aware variant of LogOut.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#logout
|
||||||
|
func (api *API) LogOutWithContext(ctx context.Context) (bool, error) {
|
||||||
|
req := NewRequest[bool, EmptyParams]("logOut", NoParams)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CloseRemote closes the bot instance on the local server.
|
||||||
// Returns true on success.
|
// Returns true on success.
|
||||||
// See https://core.telegram.org/bots/api#close
|
// See https://core.telegram.org/bots/api#close
|
||||||
func (api *API) Close() (bool, error) {
|
func (api *API) CloseRemote() (bool, error) {
|
||||||
req := NewRequest[bool, EmptyParams]("close", NoParams)
|
req := NewRequest[bool, EmptyParams]("close", NoParams)
|
||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CloseRemoteWithContext is the context-aware variant of CloseRemote.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#close
|
||||||
|
func (api *API) CloseRemoteWithContext(ctx context.Context) (bool, error) {
|
||||||
|
req := NewRequest[bool, EmptyParams]("close", NoParams)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetUpdates receives incoming updates using long polling.
|
// GetUpdates receives incoming updates using long polling.
|
||||||
// See https://core.telegram.org/bots/api#getupdates
|
// See https://core.telegram.org/bots/api#getupdates
|
||||||
func (api *API) GetUpdates(params UpdateParams) ([]Update, error) {
|
func (api *API) GetUpdates(params UpdateParams) ([]Update, error) {
|
||||||
@@ -48,16 +72,19 @@ func (api *API) GetUpdates(params UpdateParams) ([]Update, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetUpdatesWithContext is the context-aware variant of GetUpdates.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getupdates
|
||||||
func (api *API) GetUpdatesWithContext(ctx context.Context, params UpdateParams) ([]Update, error) {
|
func (api *API) GetUpdatesWithContext(ctx context.Context, params UpdateParams) ([]Update, error) {
|
||||||
req := NewRequest[[]Update]("getUpdates", params)
|
req := NewRequest[[]Update]("getUpdates", params)
|
||||||
return req.DoWithContext(ctx, api)
|
return req.DoWithContext(ctx, api)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetWebhookP holds parameters for the setWebhook method.
|
// SetWebhookP holds parameters for the setWebhook method.
|
||||||
|
// To upload a self-signed certificate, use Uploader.SetWebhook.
|
||||||
// See https://core.telegram.org/bots/api#setwebhook
|
// See https://core.telegram.org/bots/api#setwebhook
|
||||||
type SetWebhookP struct {
|
type SetWebhookP struct {
|
||||||
URL string `json:"url"`
|
URL string `json:"url"`
|
||||||
Certificate string `json:"certificate,omitempty"`
|
|
||||||
IPAddress string `json:"ip_address,omitempty"`
|
IPAddress string `json:"ip_address,omitempty"`
|
||||||
MaxConnections int `json:"max_connections,omitempty"`
|
MaxConnections int `json:"max_connections,omitempty"`
|
||||||
AllowedUpdates []UpdateType `json:"allowed_updates,omitempty"`
|
AllowedUpdates []UpdateType `json:"allowed_updates,omitempty"`
|
||||||
@@ -66,6 +93,7 @@ type SetWebhookP struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetWebhook sets a webhook URL for incoming updates.
|
// SetWebhook sets a webhook URL for incoming updates.
|
||||||
|
// For certificate upload, use Uploader.SetWebhook.
|
||||||
// Returns true on success.
|
// Returns true on success.
|
||||||
// See https://core.telegram.org/bots/api#setwebhook
|
// See https://core.telegram.org/bots/api#setwebhook
|
||||||
func (api *API) SetWebhook(params SetWebhookP) (bool, error) {
|
func (api *API) SetWebhook(params SetWebhookP) (bool, error) {
|
||||||
@@ -73,6 +101,15 @@ func (api *API) SetWebhook(params SetWebhookP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetWebhookWithContext is the context-aware variant of SetWebhook.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// For certificate upload, use Uploader.SetWebhook.
|
||||||
|
// See https://core.telegram.org/bots/api#setwebhook
|
||||||
|
func (api *API) SetWebhookWithContext(ctx context.Context, params SetWebhookP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setWebhook", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// DeleteWebhookP holds parameters for the deleteWebhook method.
|
// DeleteWebhookP holds parameters for the deleteWebhook method.
|
||||||
// See https://core.telegram.org/bots/api#deletewebhook
|
// See https://core.telegram.org/bots/api#deletewebhook
|
||||||
type DeleteWebhookP struct {
|
type DeleteWebhookP struct {
|
||||||
@@ -87,6 +124,14 @@ func (api *API) DeleteWebhook(params DeleteWebhookP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteWebhookWithContext is the context-aware variant of DeleteWebhook.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#deletewebhook
|
||||||
|
func (api *API) DeleteWebhookWithContext(ctx context.Context, params DeleteWebhookP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("deleteWebhook", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetWebhookInfo returns the current webhook status.
|
// GetWebhookInfo returns the current webhook status.
|
||||||
// See https://core.telegram.org/bots/api#getwebhookinfo
|
// See https://core.telegram.org/bots/api#getwebhookinfo
|
||||||
func (api *API) GetWebhookInfo() (WebhookInfo, error) {
|
func (api *API) GetWebhookInfo() (WebhookInfo, error) {
|
||||||
@@ -94,6 +139,14 @@ func (api *API) GetWebhookInfo() (WebhookInfo, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetWebhookInfoWithContext is the context-aware variant of GetWebhookInfo.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getwebhookinfo
|
||||||
|
func (api *API) GetWebhookInfoWithContext(ctx context.Context) (WebhookInfo, error) {
|
||||||
|
req := NewRequest[WebhookInfo]("getWebhookInfo", NoParams)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetFileP holds parameters for the getFile method.
|
// GetFileP holds parameters for the getFile method.
|
||||||
// See https://core.telegram.org/bots/api#getfile
|
// See https://core.telegram.org/bots/api#getfile
|
||||||
type GetFileP struct {
|
type GetFileP struct {
|
||||||
@@ -107,17 +160,36 @@ func (api *API) GetFile(params GetFileP) (File, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetFileWithContext is the context-aware variant of GetFile.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getfile
|
||||||
|
func (api *API) GetFileWithContext(ctx context.Context, params GetFileP) (File, error) {
|
||||||
|
req := NewRequest[File]("getFile", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetFileByLink downloads a file from Telegram's file server using the provided file link.
|
// GetFileByLink downloads a file from Telegram's file server using the provided file link.
|
||||||
// The link is usually obtained from File.FilePath.
|
// The link is usually obtained from File.FilePath.
|
||||||
// See https://core.telegram.org/bots/api#file
|
// See https://core.telegram.org/bots/api#file
|
||||||
func (api *API) GetFileByLink(link string) ([]byte, error) {
|
func (api *API) GetFileByLink(link string) ([]byte, error) {
|
||||||
|
return api.getFileByLink(context.Background(), link)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFileByLinkWithContext is the context-aware variant of GetFileByLink.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#file
|
||||||
|
func (api *API) GetFileByLinkWithContext(ctx context.Context, link string) ([]byte, error) {
|
||||||
|
return api.getFileByLink(ctx, link)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (api *API) getFileByLink(ctx context.Context, link string) ([]byte, error) {
|
||||||
methodPrefix := ""
|
methodPrefix := ""
|
||||||
if api.useTestServer {
|
if api.useTestServer {
|
||||||
methodPrefix = "/test"
|
methodPrefix = "/test"
|
||||||
}
|
}
|
||||||
u := fmt.Sprintf("%s/file/bot%s%s/%s", api.apiUrl, api.token, methodPrefix, link)
|
u := fmt.Sprintf("%s/file/bot%s%s/%s", api.apiUrl, api.token, methodPrefix, link)
|
||||||
|
|
||||||
req, err := http.NewRequestWithContext(context.Background(), http.MethodGet, u, nil)
|
req, err := http.NewRequestWithContext(ctx, http.MethodGet, u, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,8 +27,8 @@ func TestGetFileByLinkUsesConfiguredAPIURL(t *testing.T) {
|
|||||||
SetHTTPClient(client),
|
SetHTTPClient(client),
|
||||||
)
|
)
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := api.CloseApi(); err != nil {
|
if err := api.Close(); err != nil {
|
||||||
t.Fatalf("CloseApi returned error: %v", err)
|
t.Fatalf("Close returned error: %v", err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@@ -60,8 +60,8 @@ func TestGetFileByLinkReturnsHTTPStatusError(t *testing.T) {
|
|||||||
SetHTTPClient(client),
|
SetHTTPClient(client),
|
||||||
)
|
)
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := api.CloseApi(); err != nil {
|
if err := api.Close(); err != nil {
|
||||||
t.Fatalf("CloseApi returned error: %v", err)
|
t.Fatalf("Close returned error: %v", err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@@ -97,8 +97,8 @@ func TestGetUpdatesOmitsAllowedUpdatesWhenEmpty(t *testing.T) {
|
|||||||
SetHTTPClient(client),
|
SetHTTPClient(client),
|
||||||
)
|
)
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := api.CloseApi(); err != nil {
|
if err := api.Close(); err != nil {
|
||||||
t.Fatalf("CloseApi returned error: %v", err)
|
t.Fatalf("Close returned error: %v", err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package tgapi
|
package tgapi
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
// SetPassportDataErrorsP holds parameters for the setPassportDataErrors method.
|
// SetPassportDataErrorsP holds parameters for the setPassportDataErrors method.
|
||||||
// See https://core.telegram.org/bots/api#setpassportdataerrors
|
// See https://core.telegram.org/bots/api#setpassportdataerrors
|
||||||
type SetPassportDataErrorsP struct {
|
type SetPassportDataErrorsP struct {
|
||||||
@@ -14,3 +16,11 @@ func (api *API) SetPassportDataErrors(params SetPassportDataErrorsP) (bool, erro
|
|||||||
req := NewRequest[bool]("setPassportDataErrors", params)
|
req := NewRequest[bool]("setPassportDataErrors", params)
|
||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetPassportDataErrorsWithContext is the context-aware variant of SetPassportDataErrors.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setpassportdataerrors
|
||||||
|
func (api *API) SetPassportDataErrorsWithContext(ctx context.Context, params SetPassportDataErrorsP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setPassportDataErrors", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
package tgapi
|
package tgapi
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
// SendInvoiceP holds parameters for the sendInvoice method.
|
// SendInvoiceP holds parameters for the sendInvoice method.
|
||||||
// See https://core.telegram.org/bots/api#sendinvoice
|
// See https://core.telegram.org/bots/api#sendinvoice
|
||||||
type SendInvoiceP struct {
|
type SendInvoiceP struct {
|
||||||
BusinessConnectionID string `json:"business_connection_id,omitempty"`
|
ChatID int64 `json:"chat_id"`
|
||||||
ChatID int64 `json:"chat_id"`
|
MessageThreadID int `json:"message_thread_id,omitempty"`
|
||||||
MessageThreadID int `json:"message_thread_id,omitempty"`
|
DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"`
|
||||||
DirectMessagesTopicID int `json:"direct_messages_topic_id,omitempty"`
|
|
||||||
|
|
||||||
Title string `json:"title"`
|
Title string `json:"title"`
|
||||||
Description string `json:"description"`
|
Description string `json:"description"`
|
||||||
@@ -47,6 +48,14 @@ func (api *API) SendInvoice(params SendInvoiceP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendInvoiceWithContext is the context-aware variant of SendInvoice.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendinvoice
|
||||||
|
func (api *API) SendInvoiceWithContext(ctx context.Context, params SendInvoiceP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendInvoice", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// CreateInvoiceLinkP holds parameters for the createInvoiceLink method.
|
// CreateInvoiceLinkP holds parameters for the createInvoiceLink method.
|
||||||
// See https://core.telegram.org/bots/api#createinvoicelink
|
// See https://core.telegram.org/bots/api#createinvoicelink
|
||||||
type CreateInvoiceLinkP struct {
|
type CreateInvoiceLinkP struct {
|
||||||
@@ -83,6 +92,14 @@ func (api *API) CreateInvoiceLink(params CreateInvoiceLinkP) (string, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CreateInvoiceLinkWithContext is the context-aware variant of CreateInvoiceLink.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#createinvoicelink
|
||||||
|
func (api *API) CreateInvoiceLinkWithContext(ctx context.Context, params CreateInvoiceLinkP) (string, error) {
|
||||||
|
req := NewRequest[string]("createInvoiceLink", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// AnswerShippingQueryP holds parameters for the answerShippingQuery method.
|
// AnswerShippingQueryP holds parameters for the answerShippingQuery method.
|
||||||
// See https://core.telegram.org/bots/api#answershippingquery
|
// See https://core.telegram.org/bots/api#answershippingquery
|
||||||
type AnswerShippingQueryP struct {
|
type AnswerShippingQueryP struct {
|
||||||
@@ -100,6 +117,14 @@ func (api *API) AnswerShippingQuery(params AnswerShippingQueryP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AnswerShippingQueryWithContext is the context-aware variant of AnswerShippingQuery.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#answershippingquery
|
||||||
|
func (api *API) AnswerShippingQueryWithContext(ctx context.Context, params AnswerShippingQueryP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("answerShippingQuery", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// AnswerPreCheckoutQueryP holds parameters for the answerPreCheckoutQuery method.
|
// AnswerPreCheckoutQueryP holds parameters for the answerPreCheckoutQuery method.
|
||||||
// See https://core.telegram.org/bots/api#answerprecheckoutquery
|
// See https://core.telegram.org/bots/api#answerprecheckoutquery
|
||||||
type AnswerPreCheckoutQueryP struct {
|
type AnswerPreCheckoutQueryP struct {
|
||||||
@@ -115,3 +140,11 @@ func (api *API) AnswerPreCheckoutQuery(params AnswerPreCheckoutQueryP) (bool, er
|
|||||||
req := NewRequest[bool]("answerPreCheckoutQuery", params)
|
req := NewRequest[bool]("answerPreCheckoutQuery", params)
|
||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AnswerPreCheckoutQueryWithContext is the context-aware variant of AnswerPreCheckoutQuery.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#answerprecheckoutquery
|
||||||
|
func (api *API) AnswerPreCheckoutQueryWithContext(ctx context.Context, params AnswerPreCheckoutQueryP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("answerPreCheckoutQuery", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package tgapi
|
package tgapi
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
// GetStarTransactionsP holds parameters for the getStarTransactions method.
|
// GetStarTransactionsP holds parameters for the getStarTransactions method.
|
||||||
// See https://core.telegram.org/bots/api#getstartransactions
|
// See https://core.telegram.org/bots/api#getstartransactions
|
||||||
type GetStarTransactionsP struct {
|
type GetStarTransactionsP struct {
|
||||||
@@ -14,6 +16,14 @@ func (api *API) GetMyStarBalance() (StarAmount, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetMyStarBalanceWithContext is the context-aware variant of GetMyStarBalance.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getmystarbalance
|
||||||
|
func (api *API) GetMyStarBalanceWithContext(ctx context.Context) (StarAmount, error) {
|
||||||
|
req := NewRequest[StarAmount]("getMyStarBalance", NoParams)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetStarTransactions returns Telegram Star transactions for the bot.
|
// GetStarTransactions returns Telegram Star transactions for the bot.
|
||||||
// See https://core.telegram.org/bots/api#getstartransactions
|
// See https://core.telegram.org/bots/api#getstartransactions
|
||||||
func (api *API) GetStarTransactions(params GetStarTransactionsP) (StarTransactions, error) {
|
func (api *API) GetStarTransactions(params GetStarTransactionsP) (StarTransactions, error) {
|
||||||
@@ -21,6 +31,14 @@ func (api *API) GetStarTransactions(params GetStarTransactionsP) (StarTransactio
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetStarTransactionsWithContext is the context-aware variant of GetStarTransactions.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getstartransactions
|
||||||
|
func (api *API) GetStarTransactionsWithContext(ctx context.Context, params GetStarTransactionsP) (StarTransactions, error) {
|
||||||
|
req := NewRequest[StarTransactions]("getStarTransactions", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// RefundStarPaymentP holds parameters for the refundStarPayment method.
|
// RefundStarPaymentP holds parameters for the refundStarPayment method.
|
||||||
// See https://core.telegram.org/bots/api#refundstarpayment
|
// See https://core.telegram.org/bots/api#refundstarpayment
|
||||||
type RefundStarPaymentP struct {
|
type RefundStarPaymentP struct {
|
||||||
@@ -36,6 +54,14 @@ func (api *API) RefundStarPayment(params RefundStarPaymentP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RefundStarPaymentWithContext is the context-aware variant of RefundStarPayment.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#refundstarpayment
|
||||||
|
func (api *API) RefundStarPaymentWithContext(ctx context.Context, params RefundStarPaymentP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("refundStarPayment", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// EditUserStarSubscriptionP holds parameters for the editUserStarSubscription method.
|
// EditUserStarSubscriptionP holds parameters for the editUserStarSubscription method.
|
||||||
// See https://core.telegram.org/bots/api#edituserstarsubscription
|
// See https://core.telegram.org/bots/api#edituserstarsubscription
|
||||||
type EditUserStarSubscriptionP struct {
|
type EditUserStarSubscriptionP struct {
|
||||||
@@ -51,3 +77,11 @@ func (api *API) EditUserStarSubscription(params EditUserStarSubscriptionP) (bool
|
|||||||
req := NewRequest[bool]("editUserStarSubscription", params)
|
req := NewRequest[bool]("editUserStarSubscription", params)
|
||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EditUserStarSubscriptionWithContext is the context-aware variant of EditUserStarSubscription.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#edituserstarsubscription
|
||||||
|
func (api *API) EditUserStarSubscriptionWithContext(ctx context.Context, params EditUserStarSubscriptionP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("editUserStarSubscription", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package tgapi
|
package tgapi
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
// SendStickerP holds parameters for the sendSticker method.
|
// SendStickerP holds parameters for the sendSticker method.
|
||||||
// See https://core.telegram.org/bots/api#sendsticker
|
// See https://core.telegram.org/bots/api#sendsticker
|
||||||
type SendStickerP struct {
|
type SendStickerP struct {
|
||||||
@@ -14,6 +16,10 @@ type SendStickerP struct {
|
|||||||
ProtectContent bool `json:"protect_content,omitempty"`
|
ProtectContent bool `json:"protect_content,omitempty"`
|
||||||
AllowPaidBroadcast bool `json:"allow_paid_broadcast,omitempty"`
|
AllowPaidBroadcast bool `json:"allow_paid_broadcast,omitempty"`
|
||||||
MessageEffectID string `json:"message_effect_id,omitempty"`
|
MessageEffectID string `json:"message_effect_id,omitempty"`
|
||||||
|
|
||||||
|
SuggestedPostParameters *SuggestedPostParameters `json:"suggested_post_parameters,omitempty"`
|
||||||
|
ReplyParameters *ReplyParameters `json:"reply_parameters,omitempty"`
|
||||||
|
ReplyMarkup *ReplyMarkup `json:"reply_markup,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendSticker sends a static .WEBP, animated .TGS, or video .WEBM sticker.
|
// SendSticker sends a static .WEBP, animated .TGS, or video .WEBM sticker.
|
||||||
@@ -23,6 +29,14 @@ func (api *API) SendSticker(params SendStickerP) (Message, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendStickerWithContext is the context-aware variant of SendSticker.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendsticker
|
||||||
|
func (api *API) SendStickerWithContext(ctx context.Context, params SendStickerP) (Message, error) {
|
||||||
|
req := NewRequestWithChatID[Message]("sendSticker", params, params.ChatID)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetStickerSetP holds parameters for the getStickerSet method.
|
// GetStickerSetP holds parameters for the getStickerSet method.
|
||||||
// See https://core.telegram.org/bots/api#getstickerset
|
// See https://core.telegram.org/bots/api#getstickerset
|
||||||
type GetStickerSetP struct {
|
type GetStickerSetP struct {
|
||||||
@@ -36,6 +50,14 @@ func (api *API) GetStickerSet(params GetStickerSetP) (StickerSet, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetStickerSetWithContext is the context-aware variant of GetStickerSet.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getstickerset
|
||||||
|
func (api *API) GetStickerSetWithContext(ctx context.Context, params GetStickerSetP) (StickerSet, error) {
|
||||||
|
req := NewRequest[StickerSet]("getStickerSet", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetCustomEmojiStickersP holds parameters for the getCustomEmojiStickers method.
|
// GetCustomEmojiStickersP holds parameters for the getCustomEmojiStickers method.
|
||||||
// See https://core.telegram.org/bots/api#getcustomemojistickers
|
// See https://core.telegram.org/bots/api#getcustomemojistickers
|
||||||
type GetCustomEmojiStickersP struct {
|
type GetCustomEmojiStickersP struct {
|
||||||
@@ -49,6 +71,14 @@ func (api *API) GetCustomEmojiStickers(params GetCustomEmojiStickersP) ([]Sticke
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetCustomEmojiStickersWithContext is the context-aware variant of GetCustomEmojiStickers.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getcustomemojistickers
|
||||||
|
func (api *API) GetCustomEmojiStickersWithContext(ctx context.Context, params GetCustomEmojiStickersP) ([]Sticker, error) {
|
||||||
|
req := NewRequest[[]Sticker]("getCustomEmojiStickers", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// UploadStickerFileP holds parameters for the uploadStickerFile method.
|
// UploadStickerFileP holds parameters for the uploadStickerFile method.
|
||||||
// See https://core.telegram.org/bots/api#uploadstickerfile
|
// See https://core.telegram.org/bots/api#uploadstickerfile
|
||||||
type UploadStickerFileP struct {
|
type UploadStickerFileP struct {
|
||||||
@@ -68,6 +98,18 @@ func (api *API) UploadStickerFile(params UploadStickerFileP, sticker UploaderFil
|
|||||||
return req.Do(uploader)
|
return req.Do(uploader)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UploadStickerFileWithContext is the context-aware variant of UploadStickerFile.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#uploadstickerfile
|
||||||
|
func (api *API) UploadStickerFileWithContext(ctx context.Context, params UploadStickerFileP, sticker UploaderFile) (File, error) {
|
||||||
|
uploader := NewUploader(api)
|
||||||
|
defer func() {
|
||||||
|
_ = uploader.Close()
|
||||||
|
}()
|
||||||
|
req := NewUploaderRequest[File]("uploadStickerFile", params, sticker.SetType(UploaderStickerType))
|
||||||
|
return req.DoWithContext(ctx, uploader)
|
||||||
|
}
|
||||||
|
|
||||||
// CreateNewStickerSetP holds parameters for the createNewStickerSet method.
|
// CreateNewStickerSetP holds parameters for the createNewStickerSet method.
|
||||||
// See https://core.telegram.org/bots/api#createnewstickerset
|
// See https://core.telegram.org/bots/api#createnewstickerset
|
||||||
type CreateNewStickerSetP struct {
|
type CreateNewStickerSetP struct {
|
||||||
@@ -88,6 +130,14 @@ func (api *API) CreateNewStickerSet(params CreateNewStickerSetP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CreateNewStickerSetWithContext is the context-aware variant of CreateNewStickerSet.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#createnewstickerset
|
||||||
|
func (api *API) CreateNewStickerSetWithContext(ctx context.Context, params CreateNewStickerSetP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("createNewStickerSet", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// AddStickerToSetP holds parameters for the addStickerToSet method.
|
// AddStickerToSetP holds parameters for the addStickerToSet method.
|
||||||
// See https://core.telegram.org/bots/api#addstickertoset
|
// See https://core.telegram.org/bots/api#addstickertoset
|
||||||
type AddStickerToSetP struct {
|
type AddStickerToSetP struct {
|
||||||
@@ -104,6 +154,14 @@ func (api *API) AddStickerToSet(params AddStickerToSetP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AddStickerToSetWithContext is the context-aware variant of AddStickerToSet.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#addstickertoset
|
||||||
|
func (api *API) AddStickerToSetWithContext(ctx context.Context, params AddStickerToSetP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("addStickerToSet", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetStickerPositionInSetP holds parameters for the setStickerPositionInSet method.
|
// SetStickerPositionInSetP holds parameters for the setStickerPositionInSet method.
|
||||||
// See https://core.telegram.org/bots/api#setstickerpositioninset
|
// See https://core.telegram.org/bots/api#setstickerpositioninset
|
||||||
type SetStickerPositionInSetP struct {
|
type SetStickerPositionInSetP struct {
|
||||||
@@ -119,6 +177,14 @@ func (api *API) SetStickerPositionInSet(params SetStickerPositionInSetP) (bool,
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetStickerPositionInSetWithContext is the context-aware variant of SetStickerPositionInSet.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setstickerpositioninset
|
||||||
|
func (api *API) SetStickerPositionInSetWithContext(ctx context.Context, params SetStickerPositionInSetP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setStickerPositionInSet", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// DeleteStickerFromSetP holds parameters for the deleteStickerFromSet method.
|
// DeleteStickerFromSetP holds parameters for the deleteStickerFromSet method.
|
||||||
// See https://core.telegram.org/bots/api#deletestickerfromset
|
// See https://core.telegram.org/bots/api#deletestickerfromset
|
||||||
type DeleteStickerFromSetP struct {
|
type DeleteStickerFromSetP struct {
|
||||||
@@ -133,6 +199,14 @@ func (api *API) DeleteStickerFromSet(params DeleteStickerFromSetP) (bool, error)
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteStickerFromSetWithContext is the context-aware variant of DeleteStickerFromSet.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#deletestickerfromset
|
||||||
|
func (api *API) DeleteStickerFromSetWithContext(ctx context.Context, params DeleteStickerFromSetP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("deleteStickerFromSet", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// ReplaceStickerInSetP holds parameters for the replaceStickerInSet method.
|
// ReplaceStickerInSetP holds parameters for the replaceStickerInSet method.
|
||||||
// See https://core.telegram.org/bots/api#replacestickerinset
|
// See https://core.telegram.org/bots/api#replacestickerinset
|
||||||
type ReplaceStickerInSetP struct {
|
type ReplaceStickerInSetP struct {
|
||||||
@@ -150,6 +224,14 @@ func (api *API) ReplaceStickerInSet(params ReplaceStickerInSetP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReplaceStickerInSetWithContext is the context-aware variant of ReplaceStickerInSet.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#replacestickerinset
|
||||||
|
func (api *API) ReplaceStickerInSetWithContext(ctx context.Context, params ReplaceStickerInSetP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("replaceStickerInSet", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetStickerEmojiListP holds parameters for the setStickerEmojiList method.
|
// SetStickerEmojiListP holds parameters for the setStickerEmojiList method.
|
||||||
// See https://core.telegram.org/bots/api#setstickeremojilist
|
// See https://core.telegram.org/bots/api#setstickeremojilist
|
||||||
type SetStickerEmojiListP struct {
|
type SetStickerEmojiListP struct {
|
||||||
@@ -165,6 +247,14 @@ func (api *API) SetStickerEmojiList(params SetStickerEmojiListP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetStickerEmojiListWithContext is the context-aware variant of SetStickerEmojiList.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setstickeremojilist
|
||||||
|
func (api *API) SetStickerEmojiListWithContext(ctx context.Context, params SetStickerEmojiListP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setStickerEmojiList", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetStickerKeywordsP holds parameters for the setStickerKeywords method.
|
// SetStickerKeywordsP holds parameters for the setStickerKeywords method.
|
||||||
// See https://core.telegram.org/bots/api#setstickerkeywords
|
// See https://core.telegram.org/bots/api#setstickerkeywords
|
||||||
type SetStickerKeywordsP struct {
|
type SetStickerKeywordsP struct {
|
||||||
@@ -180,6 +270,14 @@ func (api *API) SetStickerKeywords(params SetStickerKeywordsP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetStickerKeywordsWithContext is the context-aware variant of SetStickerKeywords.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setstickerkeywords
|
||||||
|
func (api *API) SetStickerKeywordsWithContext(ctx context.Context, params SetStickerKeywordsP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setStickerKeywords", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetStickerMaskPositionP holds parameters for the setStickerMaskPosition method.
|
// SetStickerMaskPositionP holds parameters for the setStickerMaskPosition method.
|
||||||
// See https://core.telegram.org/bots/api#setstickermaskposition
|
// See https://core.telegram.org/bots/api#setstickermaskposition
|
||||||
type SetStickerMaskPositionP struct {
|
type SetStickerMaskPositionP struct {
|
||||||
@@ -195,6 +293,14 @@ func (api *API) SetStickerMaskPosition(params SetStickerMaskPositionP) (bool, er
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetStickerMaskPositionWithContext is the context-aware variant of SetStickerMaskPosition.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setstickermaskposition
|
||||||
|
func (api *API) SetStickerMaskPositionWithContext(ctx context.Context, params SetStickerMaskPositionP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setStickerMaskPosition", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetStickerSetTitleP holds parameters for the setStickerSetTitle method.
|
// SetStickerSetTitleP holds parameters for the setStickerSetTitle method.
|
||||||
// See https://core.telegram.org/bots/api#setstickersettitle
|
// See https://core.telegram.org/bots/api#setstickersettitle
|
||||||
type SetStickerSetTitleP struct {
|
type SetStickerSetTitleP struct {
|
||||||
@@ -210,6 +316,14 @@ func (api *API) SetStickerSetTitle(params SetStickerSetTitleP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetStickerSetTitleWithContext is the context-aware variant of SetStickerSetTitle.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setstickersettitle
|
||||||
|
func (api *API) SetStickerSetTitleWithContext(ctx context.Context, params SetStickerSetTitleP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setStickerSetTitle", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetStickerSetThumbnailP holds parameters for the setStickerSetThumbnail method.
|
// SetStickerSetThumbnailP holds parameters for the setStickerSetThumbnail method.
|
||||||
// See https://core.telegram.org/bots/api#setstickersetthumbnail
|
// See https://core.telegram.org/bots/api#setstickersetthumbnail
|
||||||
type SetStickerSetThumbnailP struct {
|
type SetStickerSetThumbnailP struct {
|
||||||
@@ -227,6 +341,14 @@ func (api *API) SetStickerSetThumbnail(params SetStickerSetThumbnailP) (bool, er
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetStickerSetThumbnailWithContext is the context-aware variant of SetStickerSetThumbnail.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setstickersetthumbnail
|
||||||
|
func (api *API) SetStickerSetThumbnailWithContext(ctx context.Context, params SetStickerSetThumbnailP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setStickerSetThumbnail", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetCustomEmojiStickerSetThumbnailP holds parameters for the setCustomEmojiStickerSetThumbnail method.
|
// SetCustomEmojiStickerSetThumbnailP holds parameters for the setCustomEmojiStickerSetThumbnail method.
|
||||||
// See https://core.telegram.org/bots/api#setcustomemojistickersetthumbnail
|
// See https://core.telegram.org/bots/api#setcustomemojistickersetthumbnail
|
||||||
type SetCustomEmojiStickerSetThumbnailP struct {
|
type SetCustomEmojiStickerSetThumbnailP struct {
|
||||||
@@ -242,6 +364,14 @@ func (api *API) SetCustomEmojiStickerSetThumbnail(params SetCustomEmojiStickerSe
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetCustomEmojiStickerSetThumbnailWithContext is the context-aware variant of SetCustomEmojiStickerSetThumbnail.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setcustomemojistickersetthumbnail
|
||||||
|
func (api *API) SetCustomEmojiStickerSetThumbnailWithContext(ctx context.Context, params SetCustomEmojiStickerSetThumbnailP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setCustomEmojiStickerSetThumbnail", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// DeleteStickerSetP holds parameters for the deleteStickerSet method.
|
// DeleteStickerSetP holds parameters for the deleteStickerSet method.
|
||||||
// See https://core.telegram.org/bots/api#deletestickerset
|
// See https://core.telegram.org/bots/api#deletestickerset
|
||||||
type DeleteStickerSetP struct {
|
type DeleteStickerSetP struct {
|
||||||
@@ -255,3 +385,11 @@ func (api *API) DeleteStickerSet(params DeleteStickerSetP) (bool, error) {
|
|||||||
req := NewRequest[bool]("deleteStickerSet", params)
|
req := NewRequest[bool]("deleteStickerSet", params)
|
||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteStickerSetWithContext is the context-aware variant of DeleteStickerSet.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#deletestickerset
|
||||||
|
func (api *API) DeleteStickerSetWithContext(ctx context.Context, params DeleteStickerSetP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("deleteStickerSet", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ const (
|
|||||||
UploaderThumbnailType UploaderFileType = "thumbnail"
|
UploaderThumbnailType UploaderFileType = "thumbnail"
|
||||||
// UploaderStickerType is the multipart field name for sticker uploads.
|
// UploaderStickerType is the multipart field name for sticker uploads.
|
||||||
UploaderStickerType UploaderFileType = "sticker"
|
UploaderStickerType UploaderFileType = "sticker"
|
||||||
|
// UploaderCertificateType is the multipart field name for webhook certificate uploads.
|
||||||
|
UploaderCertificateType UploaderFileType = "certificate"
|
||||||
)
|
)
|
||||||
|
|
||||||
// UploaderFileType represents the Telegram form field name for a file upload.
|
// UploaderFileType represents the Telegram form field name for a file upload.
|
||||||
@@ -67,8 +69,7 @@ type Uploader struct {
|
|||||||
|
|
||||||
// NewUploader creates a multipart uploader bound to an API client.
|
// NewUploader creates a multipart uploader bound to an API client.
|
||||||
func NewUploader(api *API) *Uploader {
|
func NewUploader(api *API) *Uploader {
|
||||||
logger := slog.CreateLogger().Level(utils.GetLoggerLevel()).Prefix("UPLOADER")
|
logger := utils.CreateLogger("UPLOADER", utils.GetLoggerLevel())
|
||||||
logger.AddWriter(logger.CreateJsonStdoutWriter())
|
|
||||||
return &Uploader{api, logger}
|
return &Uploader{api, logger}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,8 +44,8 @@ func TestUploaderEncodesJSONFieldsAndLeavesAcceptEncodingToHTTPTransport(t *test
|
|||||||
SetHTTPClient(client),
|
SetHTTPClient(client),
|
||||||
)
|
)
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := api.CloseApi(); err != nil {
|
if err := api.Close(); err != nil {
|
||||||
t.Fatalf("CloseApi returned error: %v", err)
|
t.Fatalf("Close returned error: %v", err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package tgapi
|
package tgapi
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
// UploadPhotoP holds parameters for uploading a photo using the Uploader.
|
// UploadPhotoP holds parameters for uploading a photo using the Uploader.
|
||||||
// See https://core.telegram.org/bots/api#sendphoto
|
// See https://core.telegram.org/bots/api#sendphoto
|
||||||
type UploadPhotoP struct {
|
type UploadPhotoP struct {
|
||||||
@@ -32,6 +34,16 @@ func (u *Uploader) SendPhoto(params UploadPhotoP, file UploaderFile) (Message, e
|
|||||||
return req.Do(u)
|
return req.Do(u)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendPhotoWithContext is the context-aware variant of SendPhoto.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// SendPhotoWithContext is the context-aware variant of SendPhoto.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendphoto
|
||||||
|
func (u *Uploader) SendPhotoWithContext(ctx context.Context, params UploadPhotoP, file UploaderFile) (Message, error) {
|
||||||
|
req := NewUploaderRequestWithChatID[Message]("sendPhoto", params, params.ChatID, file)
|
||||||
|
return req.DoWithContext(ctx, u)
|
||||||
|
}
|
||||||
|
|
||||||
// UploadAudioP holds parameters for uploading an audio file using the Uploader.
|
// UploadAudioP holds parameters for uploading an audio file using the Uploader.
|
||||||
// See https://core.telegram.org/bots/api#sendaudio
|
// See https://core.telegram.org/bots/api#sendaudio
|
||||||
type UploadAudioP struct {
|
type UploadAudioP struct {
|
||||||
@@ -66,6 +78,16 @@ func (u *Uploader) SendAudio(params UploadAudioP, files ...UploaderFile) (Messag
|
|||||||
return req.Do(u)
|
return req.Do(u)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendAudioWithContext is the context-aware variant of SendAudio.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// SendAudioWithContext is the context-aware variant of SendAudio.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendaudio
|
||||||
|
func (u *Uploader) SendAudioWithContext(ctx context.Context, params UploadAudioP, files ...UploaderFile) (Message, error) {
|
||||||
|
req := NewUploaderRequestWithChatID[Message]("sendAudio", params, params.ChatID, files...)
|
||||||
|
return req.DoWithContext(ctx, u)
|
||||||
|
}
|
||||||
|
|
||||||
// UploadDocumentP holds parameters for uploading a document using the Uploader.
|
// UploadDocumentP holds parameters for uploading a document using the Uploader.
|
||||||
// See https://core.telegram.org/bots/api#senddocument
|
// See https://core.telegram.org/bots/api#senddocument
|
||||||
type UploadDocumentP struct {
|
type UploadDocumentP struct {
|
||||||
@@ -97,6 +119,16 @@ func (u *Uploader) SendDocument(params UploadDocumentP, files ...UploaderFile) (
|
|||||||
return req.Do(u)
|
return req.Do(u)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendDocumentWithContext is the context-aware variant of SendDocument.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// SendDocumentWithContext is the context-aware variant of SendDocument.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#senddocument
|
||||||
|
func (u *Uploader) SendDocumentWithContext(ctx context.Context, params UploadDocumentP, files ...UploaderFile) (Message, error) {
|
||||||
|
req := NewUploaderRequestWithChatID[Message]("sendDocument", params, params.ChatID, files...)
|
||||||
|
return req.DoWithContext(ctx, u)
|
||||||
|
}
|
||||||
|
|
||||||
// UploadVideoP holds parameters for uploading a video using the Uploader.
|
// UploadVideoP holds parameters for uploading a video using the Uploader.
|
||||||
// See https://core.telegram.org/bots/api#sendvideo
|
// See https://core.telegram.org/bots/api#sendvideo
|
||||||
type UploadVideoP struct {
|
type UploadVideoP struct {
|
||||||
@@ -135,6 +167,16 @@ func (u *Uploader) SendVideo(params UploadVideoP, files ...UploaderFile) (Messag
|
|||||||
return req.Do(u)
|
return req.Do(u)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendVideoWithContext is the context-aware variant of SendVideo.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// SendVideoWithContext is the context-aware variant of SendVideo.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendvideo
|
||||||
|
func (u *Uploader) SendVideoWithContext(ctx context.Context, params UploadVideoP, files ...UploaderFile) (Message, error) {
|
||||||
|
req := NewUploaderRequestWithChatID[Message]("sendVideo", params, params.ChatID, files...)
|
||||||
|
return req.DoWithContext(ctx, u)
|
||||||
|
}
|
||||||
|
|
||||||
// UploadAnimationP holds parameters for uploading an animation using the Uploader.
|
// UploadAnimationP holds parameters for uploading an animation using the Uploader.
|
||||||
// See https://core.telegram.org/bots/api#sendanimation
|
// See https://core.telegram.org/bots/api#sendanimation
|
||||||
type UploadAnimationP struct {
|
type UploadAnimationP struct {
|
||||||
@@ -171,6 +213,16 @@ func (u *Uploader) SendAnimation(params UploadAnimationP, files ...UploaderFile)
|
|||||||
return req.Do(u)
|
return req.Do(u)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendAnimationWithContext is the context-aware variant of SendAnimation.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// SendAnimationWithContext is the context-aware variant of SendAnimation.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendanimation
|
||||||
|
func (u *Uploader) SendAnimationWithContext(ctx context.Context, params UploadAnimationP, files ...UploaderFile) (Message, error) {
|
||||||
|
req := NewUploaderRequestWithChatID[Message]("sendAnimation", params, params.ChatID, files...)
|
||||||
|
return req.DoWithContext(ctx, u)
|
||||||
|
}
|
||||||
|
|
||||||
// UploadVoiceP holds parameters for uploading a voice note using the Uploader.
|
// UploadVoiceP holds parameters for uploading a voice note using the Uploader.
|
||||||
// See https://core.telegram.org/bots/api#sendvoice
|
// See https://core.telegram.org/bots/api#sendvoice
|
||||||
type UploadVoiceP struct {
|
type UploadVoiceP struct {
|
||||||
@@ -202,6 +254,16 @@ func (u *Uploader) SendVoice(params UploadVoiceP, files ...UploaderFile) (Messag
|
|||||||
return req.Do(u)
|
return req.Do(u)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendVoiceWithContext is the context-aware variant of SendVoice.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// SendVoiceWithContext is the context-aware variant of SendVoice.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendvoice
|
||||||
|
func (u *Uploader) SendVoiceWithContext(ctx context.Context, params UploadVoiceP, files ...UploaderFile) (Message, error) {
|
||||||
|
req := NewUploaderRequestWithChatID[Message]("sendVoice", params, params.ChatID, files...)
|
||||||
|
return req.DoWithContext(ctx, u)
|
||||||
|
}
|
||||||
|
|
||||||
// UploadVideoNoteP holds parameters for uploading a video note (rounded video) using the Uploader.
|
// UploadVideoNoteP holds parameters for uploading a video note (rounded video) using the Uploader.
|
||||||
// See https://core.telegram.org/bots/api#sendvideonote
|
// See https://core.telegram.org/bots/api#sendvideonote
|
||||||
type UploadVideoNoteP struct {
|
type UploadVideoNoteP struct {
|
||||||
@@ -231,6 +293,16 @@ func (u *Uploader) SendVideoNote(params UploadVideoNoteP, files ...UploaderFile)
|
|||||||
return req.Do(u)
|
return req.Do(u)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendVideoNoteWithContext is the context-aware variant of SendVideoNote.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// SendVideoNoteWithContext is the context-aware variant of SendVideoNote.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#sendvideonote
|
||||||
|
func (u *Uploader) SendVideoNoteWithContext(ctx context.Context, params UploadVideoNoteP, files ...UploaderFile) (Message, error) {
|
||||||
|
req := NewUploaderRequestWithChatID[Message]("sendVideoNote", params, params.ChatID, files...)
|
||||||
|
return req.DoWithContext(ctx, u)
|
||||||
|
}
|
||||||
|
|
||||||
// UploadChatPhotoP holds parameters for uploading a chat photo using the Uploader.
|
// UploadChatPhotoP holds parameters for uploading a chat photo using the Uploader.
|
||||||
// See https://core.telegram.org/bots/api#setchatphoto
|
// See https://core.telegram.org/bots/api#setchatphoto
|
||||||
type UploadChatPhotoP struct {
|
type UploadChatPhotoP struct {
|
||||||
@@ -244,3 +316,41 @@ func (u *Uploader) SetChatPhoto(params UploadChatPhotoP, photo UploaderFile) (bo
|
|||||||
req := NewUploaderRequestWithChatID[bool]("setChatPhoto", params, params.ChatID, photo)
|
req := NewUploaderRequestWithChatID[bool]("setChatPhoto", params, params.ChatID, photo)
|
||||||
return req.Do(u)
|
return req.Do(u)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetChatPhotoWithContext is the context-aware variant of SetChatPhoto.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// SetChatPhotoWithContext is the context-aware variant of SetChatPhoto.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setchatphoto
|
||||||
|
func (u *Uploader) SetChatPhotoWithContext(ctx context.Context, params UploadChatPhotoP, photo UploaderFile) (bool, error) {
|
||||||
|
req := NewUploaderRequestWithChatID[bool]("setChatPhoto", params, params.ChatID, photo)
|
||||||
|
return req.DoWithContext(ctx, u)
|
||||||
|
}
|
||||||
|
|
||||||
|
// UploadSetWebhookP holds multipart parameters for the setWebhook method.
|
||||||
|
// Use this type when uploading a self-signed certificate file.
|
||||||
|
// See https://core.telegram.org/bots/api#setwebhook
|
||||||
|
type UploadSetWebhookP struct {
|
||||||
|
URL string `json:"url"`
|
||||||
|
IPAddress string `json:"ip_address,omitempty"`
|
||||||
|
MaxConnections int `json:"max_connections,omitempty"`
|
||||||
|
AllowedUpdates []UpdateType `json:"allowed_updates,omitempty"`
|
||||||
|
DropPendingUpdates bool `json:"drop_pending_updates,omitempty"`
|
||||||
|
SecretToken string `json:"secret_token,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetWebhook uploads a certificate and sets a webhook URL.
|
||||||
|
// certificate maps to the multipart field \"certificate\".
|
||||||
|
// See https://core.telegram.org/bots/api#setwebhook
|
||||||
|
func (u *Uploader) SetWebhook(params UploadSetWebhookP, certificate UploaderFile) (bool, error) {
|
||||||
|
req := NewUploaderRequest[bool]("setWebhook", params, certificate.SetType(UploaderCertificateType))
|
||||||
|
return req.Do(u)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetWebhookWithContext is the context-aware variant of SetWebhook.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setwebhook
|
||||||
|
func (u *Uploader) SetWebhookWithContext(ctx context.Context, params UploadSetWebhookP, certificate UploaderFile) (bool, error) {
|
||||||
|
req := NewUploaderRequest[bool]("setWebhook", params, certificate.SetType(UploaderCertificateType))
|
||||||
|
return req.DoWithContext(ctx, u)
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package tgapi
|
package tgapi
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
// GetUserProfilePhotosP holds parameters for the GetUserProfilePhotos method.
|
// GetUserProfilePhotosP holds parameters for the GetUserProfilePhotos method.
|
||||||
// See https://core.telegram.org/bots/api#getuserprofilephotos
|
// See https://core.telegram.org/bots/api#getuserprofilephotos
|
||||||
type GetUserProfilePhotosP struct {
|
type GetUserProfilePhotosP struct {
|
||||||
@@ -15,6 +17,14 @@ func (api *API) GetUserProfilePhotos(params GetUserProfilePhotosP) (UserProfileP
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetUserProfilePhotosWithContext is the context-aware variant of GetUserProfilePhotos.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getuserprofilephotos
|
||||||
|
func (api *API) GetUserProfilePhotosWithContext(ctx context.Context, params GetUserProfilePhotosP) (UserProfilePhotos, error) {
|
||||||
|
req := NewRequest[UserProfilePhotos]("getUserProfilePhotos", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetUserProfileAudiosP holds parameters for the GetUserProfileAudios method.
|
// GetUserProfileAudiosP holds parameters for the GetUserProfileAudios method.
|
||||||
// See https://core.telegram.org/bots/api#getuserprofileaudios
|
// See https://core.telegram.org/bots/api#getuserprofileaudios
|
||||||
type GetUserProfileAudiosP struct {
|
type GetUserProfileAudiosP struct {
|
||||||
@@ -30,6 +40,14 @@ func (api *API) GetUserProfileAudios(params GetUserProfileAudiosP) (UserProfileA
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetUserProfileAudiosWithContext is the context-aware variant of GetUserProfileAudios.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getuserprofileaudios
|
||||||
|
func (api *API) GetUserProfileAudiosWithContext(ctx context.Context, params GetUserProfileAudiosP) (UserProfileAudios, error) {
|
||||||
|
req := NewRequest[UserProfileAudios]("getUserProfileAudios", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// SetUserEmojiStatusP holds parameters for the SetUserEmojiStatus method.
|
// SetUserEmojiStatusP holds parameters for the SetUserEmojiStatus method.
|
||||||
// See https://core.telegram.org/bots/api#setuseremojistatus
|
// See https://core.telegram.org/bots/api#setuseremojistatus
|
||||||
type SetUserEmojiStatusP struct {
|
type SetUserEmojiStatusP struct {
|
||||||
@@ -46,6 +64,14 @@ func (api *API) SetUserEmojiStatus(params SetUserEmojiStatusP) (bool, error) {
|
|||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetUserEmojiStatusWithContext is the context-aware variant of SetUserEmojiStatus.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#setuseremojistatus
|
||||||
|
func (api *API) SetUserEmojiStatusWithContext(ctx context.Context, params SetUserEmojiStatusP) (bool, error) {
|
||||||
|
req := NewRequest[bool]("setUserEmojiStatus", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|
||||||
// GetUserGiftsP holds parameters for the GetUserGifts method.
|
// GetUserGiftsP holds parameters for the GetUserGifts method.
|
||||||
// See https://core.telegram.org/bots/api#getusergifts
|
// See https://core.telegram.org/bots/api#getusergifts
|
||||||
type GetUserGiftsP struct {
|
type GetUserGiftsP struct {
|
||||||
@@ -66,3 +92,11 @@ func (api *API) GetUserGifts(params GetUserGiftsP) (OwnedGifts, error) {
|
|||||||
req := NewRequest[OwnedGifts]("getUserGifts", params)
|
req := NewRequest[OwnedGifts]("getUserGifts", params)
|
||||||
return req.Do(api)
|
return req.Do(api)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetUserGiftsWithContext is the context-aware variant of GetUserGifts.
|
||||||
|
// It executes the same request but uses ctx for cancellation and deadlines.
|
||||||
|
// See https://core.telegram.org/bots/api#getusergifts
|
||||||
|
func (api *API) GetUserGiftsWithContext(ctx context.Context, params GetUserGiftsP) (OwnedGifts, error) {
|
||||||
|
req := NewRequest[OwnedGifts]("getUserGifts", params)
|
||||||
|
return req.DoWithContext(ctx, api)
|
||||||
|
}
|
||||||
|
|||||||
@@ -14,3 +14,29 @@ func GetLoggerLevel() slog.LogLevel {
|
|||||||
}
|
}
|
||||||
return level
|
return level
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CreateLogger creates a logger with the shared default policy:
|
||||||
|
// JSON stdout output, provided prefix, and provided level.
|
||||||
|
func CreateLogger(prefix string, level slog.LogLevel) *slog.Logger {
|
||||||
|
logger := slog.CreateLogger().Level(level)
|
||||||
|
if prefix != "" {
|
||||||
|
logger.Prefix(prefix)
|
||||||
|
}
|
||||||
|
logger.AddWriter(logger.CreateJsonStdoutWriter())
|
||||||
|
return logger
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateFileLogger creates a logger with the shared default policy and appends
|
||||||
|
// file output to the provided path.
|
||||||
|
//
|
||||||
|
// The returned logger is always non-nil. When file writer creation fails, the
|
||||||
|
// logger still writes to stdout and the error is returned to the caller.
|
||||||
|
func CreateFileLogger(prefix string, level slog.LogLevel, filePath string) (*slog.Logger, error) {
|
||||||
|
logger := CreateLogger(prefix, level)
|
||||||
|
fileWriter, err := logger.CreateTextFileWriter(filePath)
|
||||||
|
if err != nil {
|
||||||
|
return logger, err
|
||||||
|
}
|
||||||
|
logger.AddWriter(fileWriter)
|
||||||
|
return logger, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package utils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"git.nix13.pw/scuroneko/slog"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestCreateFileLoggerWritesToConfiguredFile(t *testing.T) {
|
||||||
|
logPath := filepath.Join(t.TempDir(), "main.log")
|
||||||
|
|
||||||
|
logger, err := CreateFileLogger("TEST", slog.DEBUG, logPath)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("CreateFileLogger returned error: %v", err)
|
||||||
|
}
|
||||||
|
logger.Infoln("hello from file logger")
|
||||||
|
if err := logger.Close(); err != nil {
|
||||||
|
t.Fatalf("Close returned error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
data, err := os.ReadFile(logPath)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("ReadFile returned error: %v", err)
|
||||||
|
}
|
||||||
|
if !strings.Contains(string(data), "hello from file logger") {
|
||||||
|
t.Fatalf("expected log message in file, got %q", string(data))
|
||||||
|
}
|
||||||
|
if !strings.Contains(string(data), "[TEST]") {
|
||||||
|
t.Fatalf("expected prefix in file, got %q", string(data))
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-2
@@ -1,9 +1,9 @@
|
|||||||
package utils
|
package utils
|
||||||
|
|
||||||
const (
|
const (
|
||||||
VersionString = "1.0.0-rc.3"
|
VersionString = "1.0.0-rc.7"
|
||||||
VersionMajor = 1
|
VersionMajor = 1
|
||||||
VersionMinor = 0
|
VersionMinor = 0
|
||||||
VersionPatch = 0
|
VersionPatch = 0
|
||||||
VersionBeta = 3
|
VersionBeta = 7
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user