Короткий список нових action-ів і змін контрактів. Повна специфікація залишається у Domain Core Reference.
Media upload
Outgoing media без S3
create_tg_media_upload_url тепер повертає backend URL /api/tg-client/local-upload/<token>/ і opaque local-upload: key. Raw PUT атомарно записує файл у shared session_data/_outgoing; owner передає його TDLib через inputFileGenerated + local_file_v1 без S3, CDN, presigned GET і повторного network download.
Старі object-storage keys, cloud_key, довільний inputFileGenerated/#url# та абсолютний inputFileLocal у WebSocket-контракті більше не підтримуються.
chat_list_sync.changes[] і live payload.chat_list_change більше не повторюють повний chat item для кожного оновлення. Новий чат приходить як upsert, наявний — як patch у форматі json_patch_v1, видалений — як remove.
get_chats.result.chat.notification_settings містить повний TDLib chatNotificationSettings. Зміни mute, sound, preview, stories, mentions і pinned-message notifications синхронізуються тим самим revision/patch flow.
Новий reply_to_story надсилає текст або media через нативний TDLib inputMessageReplyToStory. У вхідних повідомленнях story-reply поле replyInfo.is_expired показує, чи story вже вийшла з активного списку.
preview.thumbs[] у результатах chat-list містить browser-ready minithumbnail для photo, video, animation, document, audio, video note і sticker. У пересланих media нормалізований preview також приходить у forwardInfo.minithumbnail.
Для type="sticker" thumb також містить Unicode-поле emoji, якщо воно задане у Telegram sticker metadata.
Frontend застосовує операції add, replace і remove до вже наявного item та лише після успішного застосування зберігає revision. Масиви замінюються цілком. Якщо item відсутній, revision пропущена або reset_required=true, необхідно виконати повний get_chats.
Live update містить change у payload.chat_list_change. Після reconnect надішліть {"action":"sync_chat_list","userbot_id":183,"since_revision":1843}. Повний код застосування patch наведений у Domain Core Reference.
forward_message: альбомний flow
Для збереження grouping frontend передає всі повідомлення source-альбому одним масивом. Backend сортує ID, прибирає дублікати та робить один forwardMessages на кожний елемент to_chat_ids[]. Ліміт TDLib — 100 унікальних повідомлень за batch.
У нормалізованих message updates доступні обидві назви з однаковим значенням: album_id і media_album_id. Якщо передати тільки один елемент source-альбому, Telegram не може відновити інші елементи автоматично.
send_copy/without_sender, remove_caption/without_caption, new_caption і show_caption_above_media залишаються підтриманими.
Telegram notifications: actions та updates
Усі команди надсилаються через Control WebSocket. Детальні поля chatNotificationSettings, scopeNotificationSettings, aliases mute і правила active Notification API описані в Notification Settings — Core Reference.
Нові TDLib updates
Update
Коли приходить
Що робить frontend
updateChatNotificationSettings
Змінилися settings окремого чату.
Оновити mute, preview, sound, stories, mentions і pinned notifications цього чату.
updateScopeNotificationSettings
Змінилися defaults для private/group/channel scope.
Оновити глобальні settings відповідного scope.
updateReactionNotificationSettings
Змінилися правила сповіщень про reactions.
Оновити джерела message/story reactions, sound і preview.
updateSavedNotificationSounds
Змінився список Telegram custom sounds.
Перезапросити sounds через get_saved_notification_sounds.
updateActiveNotifications
Початковий snapshot після ввімкнення Notification API.
Атомарно замінити локальний список active notification groups.
updateNotificationGroup
Додані або видалені notifications у групі.
Застосувати added_notifications[] і removed_notification_ids[] за ID.
updateNotification
Змінився вміст активного notification.
Замінити notification за notification_group_id + notification.id.
updateHavePendingNotifications
TDLib має затримані або ще не отримані notifications.
Показати pending-state; не трактувати його як нове повідомлення.
Badge counter options зі скриншотів є локальними UI/OS preferences. Frontend розраховує badge з updateUnreadChatCount і updateUnreadMessageCount; вони не належать до Telegram notification settings.