Versions in this module Expand all Collapse all v0 v0.1.3 Oct 11, 2026 v0.1.2 Oct 5, 2026 Changes in this version + func ChannelChatID(channelID int64) int64 + func ChatIDOf(p tg.PeerClass) int64 + func ChatIDOfInput(p tg.InputPeerClass) int64 + func DeleteMessages(ctx context.Context, api *tg.Client, peer tg.InputPeerClass, ids ...int) error + func GetMessages(ctx context.Context, api *tg.Client, peer tg.InputPeerClass, ids ...int) ([]*tg.Message, []tg.UserClass, []tg.ChatClass, error) + func SenderID(msg *tg.Message) int64 type CommandContext + func (c *CommandContext) ReplyMessage() (*tg.Message, error) type Host + Listen func(plugin string, fn MessageListener) (remove func()) + Prefixes func() []string + RunCommand func(ctx context.Context, msg *MessageEvent) (bool, error) type MessageEvent + func EventFromMessage(msg *tg.Message) *MessageEvent + type MessageListener func(ctx context.Context, msg *MessageEvent, edited bool) v0.1.1 Oct 2, 2026 Changes in this version + var ErrBotNotReady = errors.New("bot not ready") + func Bold(s string) string + func Code(v any) string + func Escape(s string) string + func Invalid(zh, en string) error + func Italic(s string) string + func Link(text, url string) string + func Mention(text string, id int64) string + func ParseMarkdown(text string, resolve func(int64) (tg.InputUserClass, error)) (string, []tg.MessageEntityClass) + func Pre(s string) string + type Bot interface + Edit func(ctx context.Context, chatID int64, msgID int, v *View) error + Notify func(ctx context.Context, v *View) (int, error) + Ready func() bool + Send func(ctx context.Context, chatID int64, v *View) (int, error) + SetPage func(p *Page) error + Username func() string + type BotContext struct + Ctx context.Context + Data string + Input string + Lang string + func (c *BotContext) Alert(text string) + func (c *BotContext) Ask(key string) + func (c *BotContext) Asked() string + func (c *BotContext) Context() context.Context + func (c *BotContext) Notice() (string, bool) + func (c *BotContext) Tlocal(zh, en string) string + func (c *BotContext) Toast(text string) + type Button struct + Data string + Style ButtonStyle + Text string + URL string + func Btn(text, data string) Button + func LinkBtn(text, url string) Button + func Row(b ...Button) []Button + func (b Button) Danger() Button + func (b Button) Primary() Button + func (b Button) Success() Button + type ButtonStyle uint8 + const StyleDanger + const StylePlain + const StylePrimary + const StyleSuccess + type Choice struct + Label string + LabelEN string + Value string type Command + DescEN string + UsageEN string type CommandContext + Lang string + SelfID int64 + func (c *CommandContext) DeleteMessages(ids ...int) error + func (c *CommandContext) IsSelf() bool + func (c *CommandContext) Tlocal(zh, en string) string + type DescENProvider interface + DescEN func() string + type Host interface + API func() *tg.Client + Bot func(plugin string) Bot + DataDir func(plugin string) (string, error) + Downloader func() MediaDownloader + Lang func(userID int64) string + Logger func(name string) Logger + Media func() MediaSender + PeerResolver func() PeerResolver + SelfID func() int64 + Send func(ctx context.Context, chatID int64, text string, replyTo int) (int, error) + Settings func(spec *SettingsSpec) (Settings, error) + type InvalidError struct + En string + Zh string + func (e *InvalidError) Error() string + func (e *InvalidError) Text(lang string) string type Manager + Host func() Host + type Page struct + Command string + Handle func(ctx *BotContext) (*View, error) + Title string + TitleEN string type PluginInfo + DescEN string type PluginMetadata + DescEN string + type Setting struct + Choices []Choice + Default any + Hint string + HintEN string + Key string + Kind SettingKind + Label string + LabelEN string + Max int + Min int + Secret bool + Validate func(string) (string, error) + type SettingKind int + const SettingChoice + const SettingNumber + const SettingText + const SettingToggle + type Settings interface + Bool func(key string) bool + Int func(key string) int + Set func(key string, value any) error + String func(key string) string + type SettingsSpec struct + OnChange func(key string) + Plugin string + Settings []Setting + Title string + TitleEN string + type View struct + Buttons [][]Button + Text string v0.1.0 Sep 25, 2026 Changes in this version + var ErrNoMessage = &CommandError + type Command struct + Aliases []string + Category string + Description string + Handler Handler + Hidden bool + Name string + OwnerOnly bool + Plugin string + RateLimit int + Usage string + type CommandContext struct + API *tg.Client + Args []string + Command string + Ctx context.Context + Downloader MediaDownloader + Emitter Emitter + I18n func(key string, args ...any) string + Logger Logger + Media MediaSender + Message *MessageEvent + Metadata map[string]any + PeerResolver PeerResolver + PluginName string + RawArgs string + Session *SessionContext + StartTime time.Time + func (c *CommandContext) ArgCount() int + func (c *CommandContext) Context() context.Context + func (c *CommandContext) Delete() error + func (c *CommandContext) Edit(text string) error + func (c *CommandContext) GetArg(index int) string + func (c *CommandContext) GetArgs() string + func (c *CommandContext) HasArg(arg string) bool + func (c *CommandContext) Reply(text string) error + func (c *CommandContext) ReplyMedia(path, caption string) error + func (c *CommandContext) ResolvePeer() (tg.InputPeerClass, error) + func (c *CommandContext) T(key string, args ...any) string + func (c *CommandContext) Typing() error + type CommandError struct + Code string + Err error + Message string + func (e *CommandError) Error() string + func (e *CommandError) Unwrap() error + type Emitter interface + Emit func(ctx context.Context, eventType string, data any) error + type Handler func(ctx *CommandContext) error + type Logger interface + Debug func(msg string, keysAndValues ...any) + Error func(msg string, keysAndValues ...any) + Info func(msg string, keysAndValues ...any) + Named func(name string) Logger + Warn func(msg string, keysAndValues ...any) + With func(keysAndValues ...any) Logger + type Manager interface + Commands func() RegistryProvider + Emit func(ctx context.Context, eventType string, data any) error + GetAllInfo func() []PluginInfo + GetInfo func(name string) (PluginInfo, bool) + GetPlugin func(name string) (Plugin, bool) + InitAll func(ctx context.Context) error + RegisterCommand func(cmd *Command) error + RegisterPlugin func(p Plugin) error + StartAll func(ctx context.Context) error + StopAll func(ctx context.Context) error + UnregisterCommand func(name string) + UnregisterPlugin func(name string) + type MediaDownloader interface + DownloadMedia func(ctx context.Context, msg *MessageEvent) (string, error) + type MediaSender interface + SendFile func(ctx context.Context, chatID int64, path string, caption string, replyTo int) error + type MessageEvent struct + ChatID int64 + Date int + Entities []tg.MessageEntityClass + IsOut bool + IsReply bool + Media tg.MessageMediaClass + Message *tg.Message + PeerID tg.PeerClass + Raw any + ReplyToID int + Text string + Update tg.UpdatesClass + UserID int64 + type Middleware func(next Handler) Handler + type PeerResolver interface + ResolveFromChatID func(ctx context.Context, chatID int64) (tg.InputPeerClass, error) + ResolveUserFromMessage func(ctx context.Context, peer tg.InputPeerClass, msgID int, userID int64) (tg.InputPeerClass, error) + ResolveUserInChannel func(ctx context.Context, channelPeer tg.InputChannelClass, userID int64) (tg.InputPeerClass, error) + ResolveUsername func(ctx context.Context, username string) (tg.InputPeerClass, error) + type Plugin interface + Description func() string + Init func(ctx context.Context, mgr Manager) error + Name func() string + Start func(ctx context.Context) error + Stop func(ctx context.Context) error + type PluginInfo struct + Description string + Name string + Status PluginStatus + type PluginMetadata struct + Author string + Description string + MinVersion string + Name string + Version string + type PluginStatus int + const StatusActive + const StatusError + const StatusInactive + func (s PluginStatus) String() string + type RegistryProvider interface + AddUserAlias func(name, cmd string) + Get func(name string) (*Command, bool) + GetAll func() map[string]*Command + GetByPlugin func(plugin string) map[string]*Command + GetPrefix func() string + GetPrefixes func() []string + RemoveUserAlias func(name string) + SetPrefixes func(prefixes []string) + UserAliases func() map[string]string + type Session struct + ChatID int64 + Data map[string]any + State string + Timestamp int64 + UserID int64 + type SessionContext struct + Context context.Context + Data map[string]any + Session *Session + func NewSessionContext(s *Session, ctx context.Context) *SessionContext + func (s *SessionContext) Ctx() context.Context + func (s *SessionContext) Delete(key string) + func (s *SessionContext) Get(key string) (any, bool) + func (s *SessionContext) Set(key string, value any)