Skip to content

Plugins & Extensions

MTGo has a rich extension ecosystem across three categories:

Plugin System

MTGo supports a plugin system that lets you encapsulate reusable logic and attach it to a Client via client.Use(plugin).

Every plugin implements the telegram.Plugin interface:

go
type Plugin interface {
    Name() string
    Start(ctx context.Context, client *telegram.Client) error
    Stop(ctx context.Context) error
}

Register a plugin before calling client.Connect:

go
client.Use(myPlugin)

Official Plugins

PluginDescription
i18nInternationalization with YAML/FTL formats, pluralization, and gender-aware translations
ConversationsStateful multi-step conversation flows with wait, filter, and timeout support

Middlewares

MTGo has two middleware levels for different concerns:

LevelMethodInterceptsUse case
InvokerUseInvokerMiddlewareOutgoing RPC callsRate limiting, flood wait, logging
HandlerUseMiddlewareIncoming update dispatchAuth, i18n, conversation state

Official invoker middlewares:

MiddlewareDescription
Flood WaitAuto-handles FLOOD_WAIT errors with sleep and retry
Rate LimitToken-bucket rate limiter for outgoing RPC calls

See Invoker Middlewares for full documentation.

Templates

Bootstrap new extensions with official templates:

TemplateDescription
Plugin TemplateStarting point for new plugins
Middleware TemplateStarting point for new invoker middlewares

Ecosystem Repositories

RepositoryDescription
mtgo-labs/mtgoCore library
mtgo-labs/storageStorage adapters (SQLite, PostgreSQL, MongoDB, Redis, GORM)
mtgo-labs/pluginsOfficial plugins (i18n, conversations)
mtgo-labs/middlewaresOfficial middlewares (flood wait, rate limit)
mtgo-labs/plugins-templatePlugin template
mtgo-labs/middlewares-templateMiddleware template

Released under the Apache-2.0 License.