Skip to content

v1.28.0

Latest

Choose a tag to compare

@negasus negasus released this 09 Nov 17:12
  • Add Update.EffectiveUser() and Update.EffectiveChat() helpers for resolving
    the user and chat associated with an update. They return pointers into the
    original update, or nil when unavailable, and support widget queries (#307, #310).
  • Add HandlerTypeInlineQuery for matching inline query text and
    RegisterHandlerInlineQuery for handling all inline queries, including empty
    queries (#294).
  • Fix: command matching skips invalid entity offsets and lengths instead of
    panicking on out-of-bounds string slices (#304).
  • Fix: Bot.ID() returns zero when the numeric token prefix overflows int64
    (#303).
  • Support Bot API 10.4 (November 9, 2026 update):
    • Widgets: new Widget (on Message and ExternalReplyInfo); WidgetQuery and SharedWidgetQuery on Update (and the matching allowed-update constants); the WidgetQueryType union (data, sign_data, sent_transaction) with WidgetQueryWallet; methods sendWidget, sendSharedWidget, answerWidgetQuery, editMessageWidgetData and editSharedWidgetData; InputWidgetMessageContent and InputSharedWidgetMessageContent for inline results.
    • editMessageWidgetData takes public_data and chat_data as *string: a nil pointer leaves the value unchanged and a pointer to "" clears it. editSharedWidgetData always sends public_data, including an empty string, which clears the shared value.
    • Ephemeral callback replies: EphemeralMessageParameters.receiver_user_id is omitted when zero, and chat_id is omitted when nil on the 14 send methods that accept ephemeral_message_parameters (sendMessage, sendPhoto, sendLivePhoto, sendAudio, sendDocument, sendVideo, sendAnimation, sendVoice, sendVideoNote, sendLocation, sendVenue, sendContact, sendSticker, sendRichMessage). Callers that set those fields are unchanged.
    • Quotes: rich_texts on TextQuote and quote_rich_texts on ReplyParameters. MessageEntity types bank_card_number and ton_address. RichTextTonAddress on the RichText union.
    • TON wallet: TonWalletCard (on ChatFullInfo and inside a data widget query), TonWalletCardSticker, TonNft, TonNftAttribute, and TonWalletTransfer on Message. Amounts and NFT indexes are strings. StoryAreaPosition is now AreaPosition; the old name remains an alias.
    • Chat share themes: ChatShareTheme and EmojiType unions, ChatShareThemeBackdrop, ChatShareThemeBackdrops, and getChatShareThemeBackdrops.
    • Gifts and verification: getUniqueGift, deleteBusinessAccountGift, and custom_description_parse_mode / custom_description_entities on verifyUser and verifyChat. PaidMessagesWaived on Message.
  • Add HandlerTypeWidgetQueryData and HandlerTypeSharedWidgetQueryData for
    matching widget query data. WidgetQuery.ChatType uses the string-based
    WidgetQueryChatType type with constants for the supported chat types (#310).
  • Write *string multipart fields verbatim, preserving quotes, backslashes,
    newlines and HTML-sensitive characters. Optional nil pointers are omitted;
    pointers to empty strings produce an explicit empty field (#310).
  • Split CI into separate lint, test and coverage-publishing jobs (#226).
  • No client change for the rest of the release: widget messages still cannot be copied, can_send_other_messages now also covers widgets, Premium secondary usernames are suggested through the existing suggested_username field, and private-chat topic links are ordinary URLs.