tg_client WebSocket Docs: Domain Core Reference

← Назад до розділів |

Знайдено секцій: 0

Workflow (загальний)

  1. Frontend підключається до /ws/chats/.
  2. Надсилає {"action":"open_client","userbot_id":...} для старту слухача подій.
  3. Надсилає команди (open_dialog, send_message, ...).
  4. Consumer публікує їх у Redis канал tg_commands.
  5. Listener виконує TDLib методи і публікує відповіді в tg_commands:{ws_connection_id}.
  6. Live updates публікуються окремо в tg_updates:{userbot_id}, а media_ready — в tg_media:{ws_connection_id}.
  7. Consumer повертає WS-події клієнту: message, dialog_end, send_message, *_error, media_ready.

Формат запиту: завжди містить action + зазвичай userbot_id.

Client Session

ActionЩо приймаєЩо повертаєЩо робить
open_client userbot_id Починає стрім подій у цей WS (початково connected) Підписує consumer на tg_updates:{userbot_id} для вказаного userbot і тримає окремі канали tg_commands:{ws_connection_id} та tg_media:{ws_connection_id} для цього WS.
get_active_sessions userbot_id get_active_sessions / get_active_sessions_error Повертає активні Telegram-сесії поточного акаунта. У відповіді є sessions, current_session, other_sessions, count і inactive_session_ttl_days. Також приймається alias get_sessions.
terminate_session userbot_id, session_id terminate_session / terminate_session_error Завершує конкретну Telegram-сесію за session_id. Також приймається alias delete_session.
set_session_settings userbot_id, session_id, опц. can_accept_calls, can_accept_secret_chats set_session_settings / set_session_settings_error Оновлює налаштування конкретної сесії. Можна окремо перемикати прийом дзвінків і нових secret chats. Потрібно передати хоча б одне поле. Також приймається alias update_session_settings.
terminate_all_other_sessions userbot_id terminate_all_other_sessions / terminate_all_other_sessions_error Завершує всі інші Telegram-сесії, крім поточної. Також приймається alias terminate_all_sessions.

Приклади запитів

{
  "action": "open_client",
  "userbot_ids": [1,2,3]
}
{"action":"get_active_sessions","userbot_id":1}
{"action":"terminate_session","userbot_id":1,"session_id":987654321}
{"action":"set_session_settings","userbot_id":1,"session_id":987654321,"can_accept_calls":false,"can_accept_secret_chats":true}
{"action":"terminate_all_other_sessions","userbot_id":1}

Channel Commands

ActionЩо приймаєЩо повертаєЩо робить
get_chats userbot_id, опц. chat_list get_chats (один батч з items[]), або get_chats_error Віддає список чатів з останнім повідомленням і метаданими одним батчем: count, chat_ids[], items[].
get_recently_opened_chats userbot_id, опц. limit get_recently_opened_chats (потік елементів чату), або get_recently_opened_chats_error Віддає нещодавно відкриті приватні чати (TDLib getRecentlyOpenedChats + фільтр chatTypePrivate).
archive_chat userbot_id, chat_id archive_chat / archive_chat_error Переміщає чат в архів.
unarchive_chat userbot_id, chat_id unarchive_chat / unarchive_chat_error Повертає чат в main list.
pin_chat userbot_id, chat_id, опц. is_pinned, chat_list pin_chat / pin_chat_error Закріплює або відкріплює чат у списку.
chat_in_folder userbot_id, chat_id, chat_folder_id, опц. added/removed/pin/unpin chat_in_folder / chat_in_folder_error Керує членством чату у folder list.
create_chat_folder userbot_id, title (або name), опц. icon_name/icon, color_id, is_shareable, pinned_chat_ids[], included_chat_ids[], excluded_chat_ids[], флаги include_*/exclude_* create_chat_folder / create_chat_folder_error Створює нову папку чатів через TDLib createChatFolder.
get_chats_for_chat_folder_invite_link userbot_id, chat_folder_id get_chats_for_chat_folder_invite_link / get_chats_for_chat_folder_invite_link_error Повертає список чатів, які можна включити в invite link папки (TDLib get_chats_for_chat_folder_invite_link).
get_chat_folder_invite_links userbot_id, chat_folder_id get_chat_folder_invite_links / get_chat_folder_invite_links_error Повертає список існуючих invite links для папки (TDLib get_chat_folder_invite_links).
create_chat_folder_invite_link userbot_id, chat_folder_id, опц. name, chat_ids[] (або chatIds[]) create_chat_folder_invite_link / create_chat_folder_invite_link_error Створює нове invite link для папки через TDLib create_chat_folder_invite_link.
edit_chat_folder_invite_link userbot_id, chat_folder_id, invite_link, опц. name, chat_ids[] (або chatIds[]) edit_chat_folder_invite_link / edit_chat_folder_invite_link_error Редагує invite link папки через TDLib editChatFolderInviteLink.
delete_chat_folder_invite_link userbot_id, chat_folder_id, invite_link delete_chat_folder_invite_link / delete_chat_folder_invite_link_error Видаляє invite link папки через TDLib deleteChatFolderInviteLink.
delete_chat userbot_id, chat_id, опц. revoke, remove_from_chat_list delete_chat / delete_chat_error Очищає історію чату (і за параметрами прибирає зі списку).
delete_channel userbot_id, chat_id (або channel_id як alias того ж chat id), опц. revoke, remove_from_chat_list delete_channel / delete_channel_error Видаляє канал через TDLib deleteChatHistory; бекенд додатково перевіряє, що чат є саме каналом.
leave_chat userbot_id, chat_id leave_chat / leave_chat_error Вихід із групи/каналу.

Приклади запитів

{"action":"get_chats","userbot_id":1}
{"action":"get_recently_opened_chats","userbot_id":1,"limit":20}
{"action":"archive_chat","userbot_id":1,"chat_id":"123"}
{"action":"unarchive_chat","userbot_id":1,"chat_id":"123"}
{"action":"pin_chat","userbot_id":1,"chat_id":"123","is_pinned":true,"chat_list":"chatListMain"}
{"action":"chat_in_folder","userbot_id":1,"chat_id":"123","chat_folder_id":2,"added":true,"removed":false,"pin":false,"unpin":false}
{"action":"create_chat_folder","userbot_id":1,"title":"Робота","icon_name":"Work","is_shareable":true,"included_chat_ids":[-1001234567890]}
{"action":"get_chats_for_chat_folder_invite_link","userbot_id":1,"chat_folder_id":2}
{"action":"get_chat_folder_invite_links","userbot_id":1,"chat_folder_id":2}
{"action":"create_chat_folder_invite_link","userbot_id":1,"chat_folder_id":2,"name":"Команда","chat_ids":[-1001234567890,-1009876543210]}
{"action":"edit_chat_folder_invite_link","userbot_id":1,"chat_folder_id":2,"invite_link":"https://t.me/addlist/abc","name":"Команда v2","chat_ids":[-1001234567890]}
{"action":"delete_chat_folder_invite_link","userbot_id":1,"chat_folder_id":2,"invite_link":"https://t.me/addlist/abc"}
{"action":"delete_chat","userbot_id":1,"chat_id":"123","revoke":true,"remove_from_chat_list":true}
{"action":"delete_channel","userbot_id":1,"chat_id":"-1001234567890","revoke":true,"remove_from_chat_list":true}
{"action":"leave_chat","userbot_id":1,"chat_id":"123"}

Для get_chats і get_recently_opened_chats бекенд повертає тільки metadata. Якщо фронту потрібне медіа, він окремо викликає download_file або get_custom_emoji_media.

Dialog Commands

ActionЩо приймаєЩо повертаєЩо робить
open_dialog userbot_id, chat_id, опц. from_message_id, message_thread_id, limit, offset, center_message_id, window_before, window_after, pinned_limit Потік: dialog_access, message, опц. pinned_message, pagination_setup, dialog_end; або dialog_empty/dialog_error Завантажує історію чату/топіку, мапить у domain payload і надсилає порціями. dialog_access приходить першим і містить ефективні права поточного користувача для обмеження UI. Для окремого списку тем форуму використовуйте get_forum_topics. У message.sender.avatar приходить тільки meta фото відправника: file_id, remote_id, sizes, без авто-догрузки через media_ready. Для post/thread повідомлень може бути comments_meta з discussion_chat_id, message_thread_id, comment_count.
get_forum_topics userbot_id, chat_id get_forum_topics / get_forum_topics_error Повертає окремим запитом список topic payload для forum/supergroup. Використовуйте для екрана списку тем замість побічного payload з open_dialog.
open_comments userbot_id, comments_meta або discussion_chat_id + message_thread_id, опц. from_message_id, limit, offset, center_message_id, window_before, window_after, pinned_limit Потік: dialog_access, comments_access, message, pagination_setup, dialog_end; або dialog_empty/dialog_error Відкриває comments thread поста в linked discussion chat. comments_access містить ті самі ефективні права, що й dialog_access, плюс discussion_chat_id і message_thread_id для comments composer.
search_messages_in_chat userbot_id, chat_id, опц. query, filter/search_filter, limit, from_message_id, offset, message_thread_id search_messages_in_chat / search_messages_in_chat_error Пошук повідомлень у чаті через TDLib searchChatMessages з підтримкою searchMessagesFilter* і поверненням повідомлень у форматі domain payload.
search_messages_global userbot_id, опц. query, filter/search_filter, limit, offset_date, offset_chat_id, offset_message_id, chat_list search_messages_global / search_messages_global_error Глобальний пошук повідомлень по діалогах через TDLib searchMessages з підтримкою searchMessagesFilter* і поверненням нормалізованих message payload.
get_chat_recent_actions userbot_id, chat_id, опц. query, from_event_id, limit, user_ids[], event_filters get_chat_recent_actions / get_chat_recent_actions_error “Недавні дії” (TDLib getChatEventLog) для каналу/супергрупи. Повертає сирі події логу та next_from_event_id для пагінації. Потребує прав адміністратора.

Приклади запитів

{"action":"open_dialog","userbot_id":1,"chat_id":"123","from_message_id":"0"}
{"action":"open_dialog","userbot_id":1,"chat_id":"123","from_message_id":"987654321","limit":50,"offset":-50}
{"action":"open_dialog","userbot_id":1,"chat_id":"123","center_message_id":"987654321","window_before":20,"window_after":20}
{"action":"open_dialog","userbot_id":1,"chat_id":"123","message_thread_id":"456","limit":30,"offset":0}
{"action":"get_forum_topics","userbot_id":1,"chat_id":"-1001234567890"}
{"action":"open_comments","userbot_id":1,"comments_meta":{"discussion_chat_id":"-100999000777","message_thread_id":"9001"},"limit":50}
{"action":"open_comments","userbot_id":1,"discussion_chat_id":"-100999000777","message_thread_id":"9001","center_message_id":"987654321","window_before":20,"window_after":20}
{"action":"search_messages_in_chat","userbot_id":1,"chat_id":"123","query":"при","limit":30}
{"action":"search_messages_in_chat","userbot_id":1,"chat_id":"123","query":"","filter":"searchMessagesFilterPhotoAndVideo","limit":30}
{"action":"search_messages_in_chat","userbot_id":1,"chat_id":"123","filter":"searchMessagesFilterDocument","limit":30}
{"action":"search_messages_in_chat","userbot_id":1,"chat_id":"123","filter":"searchMessagesFilterUrl","limit":30}
{"action":"search_messages_in_chat","userbot_id":1,"chat_id":"123","filter":"searchMessagesFilterVoiceAndVideoNote","limit":30}
{"action":"search_messages_global","userbot_id":1,"query":"при","limit":30}
{"action":"search_messages_global","userbot_id":1,"filter":"searchMessagesFilterUnreadMention","limit":30}
{"action":"get_chat_recent_actions","userbot_id":1,"chat_id":"-1001234567890","limit":50}
{"action":"get_chat_recent_actions","userbot_id":1,"chat_id":"-1001234567890","from_event_id":"987654321","limit":50}

query необов'язковий: для вкладок медіа/файлів/посилань/голосових можна передавати порожній рядок.

Вкладка Недавні дії не є searchMessagesFilter*. Для неї використовуйте окрему команду get_chat_recent_actions (TDLib getChatEventLog).

Search Filters

Значення filterЩо знайдеВкладка UI (приклад)
searchMessagesFilterEmptyЗвичайний пошук без типового фільтра.Усі
searchMessagesFilterAnimationАнімації.Медіа
searchMessagesFilterAudioАудіо.Медіа
searchMessagesFilterDocumentДокументи/файли.Файли
searchMessagesFilterPhotoФото.Медіа
searchMessagesFilterVideoВідео.Медіа
searchMessagesFilterVoiceNoteVoice.Голосові
searchMessagesFilterPhotoAndVideoФото + відео.Медіа
searchMessagesFilterUrlПовідомлення з URL.Посилання
searchMessagesFilterChatPhotoОновлення фото чату.Системні
searchMessagesFilterVideoNoteVideo note.Голосові
searchMessagesFilterVoiceAndVideoNoteVoice + video note.Голосові
searchMessagesFilterMentionЗгадки.Мітки
searchMessagesFilterUnreadMentionНепрочитані згадки.Мітки
searchMessagesFilterUnreadReactionНепрочитані реакції.Мітки
searchMessagesFilterFailedToSendНе відправлені повідомлення.Чернетки/помилки

Filter Aliases

Бекенд також приймає короткі значення: media, files, links, voice, photo, video, document, url тощо.

Вкладка Групи не є окремим TDLib searchMessagesFilter*; її роблять на фронті групуванням результатів (наприклад, за album_id або датою).

comments_meta у message payload: discussion_chat_id — linked discussion chat, message_thread_id — thread поста, comment_count — кількість коментарів, якщо TDLib її віддає.

Message Commands

ActionЩо приймаєЩо повертаєЩо робить
send_message userbot_id, chat_id, text, опц. entities, media/media_items, reply_to, options send_message / send_message_error Відправляє текст або media повідомлення в чат. Підтримує cloud media upload/send, reply і media albums через media_items. Для деталей див. Media Uploads.
send_comment userbot_id, comments_meta або discussion_chat_id + message_thread_id, і той самий payload, що для send_message: text, entities, media, media_items, media_type, reply_to, reply_to_message_id, reply_markup, options, schedule_date, send_when_online, effect_id, message_effect_id, send_large_photos, тощо send_comment / send_comment_error Відправляє повідомлення в comments thread поста. Підтримує той самий набір текстових, media і send-options полів, що й send_message; різниця лише в target thread.
edit_message userbot_id, chat_id, message_id, text edit_message / edit_message_error Редагує повідомлення.
delete_messages userbot_id, chat_id, message_ids[], опц. revoke delete_messages / delete_messages_error Видаляє один або кілька меседжів.
reply_message userbot_id, chat_id, reply_to_message_id, text reply_message / reply_message_error Відправляє reply на конкретний message.
forward_message userbot_id, to_chat_ids[], from_chat_id, message_ids[], опц. send_copy/without_sender, remove_caption/without_caption, new_caption, show_caption_above_media forward_message / forward_message_error Форвардить повідомлення в один або кілька чатів. Підтримує режим “без імені відправника” і “без опису”.
pin_message userbot_id, chat_id, message_id, опц. disable_notification, only_for_self pin_message / pin_message_error Закріплює message у чаті.
unpin_message userbot_id, chat_id, message_id unpin_message / unpin_message_error Відкріплює message.
set_reaction userbot_id, chat_id, message_id, reaction, опц. is_big, add_to_recent set_reaction / set_reaction_error Ставить реакцію на message через TDLib addMessageReaction (emoji/custom emoji/paid).

Приклади запитів

{"action":"send_message","userbot_id":1,"chat_id":"123456","text":"Привіт","entities":[]}
{"action":"send_message","userbot_id":1,"chat_id":"222222","text":"Cross-chat reply","reply_to":{"replyToChatId":"111111","replyToMsgId":"555"}}
{"action":"send_message","userbot_id":1,"chat_id":"123456","text":"Album caption","entities":[{"offset":0,"length":5,"type":{"@type":"textEntityTypeBold"}}],"media_items":[{"type":"photo","key":"tg/outgoing/userbot_1/chat_123456/photo/one.jpg","file_name":"one.jpg"},{"type":"video","key":"tg/outgoing/userbot_1/chat_123456/video/two.mp4","file_name":"two.mp4"}],"reply_to_message_id":"555","protect_content":true}
{"action":"send_comment","userbot_id":1,"comments_meta":{"discussion_chat_id":"-100999000777","message_thread_id":"9001"},"text":"це коментар"}
{"action":"send_comment","userbot_id":1,"discussion_chat_id":"-100999000777","message_thread_id":"9001","text":"reply в comments","reply_to_message_id":"555"}
{"action":"send_comment","userbot_id":1,"discussion_chat_id":"-100999000777","message_thread_id":"9001","text":"Файл у коментарях","entities":[{"offset":0,"length":4,"type":{"@type":"textEntityTypeBold"}}],"media":{"type":"document","key":"tg/outgoing/userbot_1/chat_123/document/report.pdf","file_name":"report.pdf"},"protect_content":true}
{"type":"comments_access","userbot_id":1,"result":{"discussion_chat_id":"-100999000777","message_thread_id":"9001","can_send_messages":true,"needs_join_to_send":false,"join_to_send_messages":false,"join_by_request":false}}
{"action":"edit_message","userbot_id":1,"chat_id":"123456","message_id":"555","text":"Оновлений текст"}
{"action":"delete_messages","userbot_id":1,"chat_id":"123456","message_ids":["555","556"],"revoke":true}
{"action":"reply_message","userbot_id":1,"chat_id":"123456","reply_to_message_id":"555","text":"Відповідь"}
{"action":"forward_message","userbot_id":1,"to_chat_ids":["111","222"],"from_chat_id":"123456","message_ids":["555"],"without_sender":true,"without_caption":true}
{"action":"pin_message","userbot_id":1,"chat_id":"123456","message_id":"555","disable_notification":false,"only_for_self":false}
{"action":"unpin_message","userbot_id":1,"chat_id":"123456","message_id":"555"}
{"action":"set_reaction","userbot_id":1,"chat_id":"123456","message_id":"555","reaction":{"type":"emoji","emoji":"🔥"},"is_big":false,"add_to_recent":true}
{"action":"set_reaction","userbot_id":1,"chat_id":"123456","message_id":"555","reaction":{"type":"custom_emoji","custom_emoji_id":"5393021912655030923"}}

Media Commands

ActionЩо приймаєЩо повертаєЩо робить
download_file userbot_id, file_id, опц. source, chat_id, msg_id, message_thread_id, extra download_file (ack), далі media_ready; або download_file_error Запускає ручне завантаження файлу. Після готовності надсилає шлях/мета в media_ready.
get_prem_path userbot_id, emoji_id get_prem_path / get_prem_path_error Повертає asset для premium/custom emoji.
get_custom_emoji_media userbot_id, custom_emoji_ids[], опц. request_id get_custom_emoji_media (ack), далі media_ready; або get_custom_emoji_media_error Приймає масив custom emoji id, запускає їх завантаження і поступово надсилає окремі media_ready по кожному emoji. Використовуйте для видимих emoji зі sticker pack.
get_recent_stickers userbot_id, опц. is_attached get_recent_stickers / get_recent_stickers_error Повертає нещодавні стікери через TDLib getRecentStickers.
get_stickers_pack userbot_id, опц. query, limit, offset, with_lottie get_stickers_pack / get_stickers_pack_error Повертає згруповані паки емоджі/стікерів (включно з premium/recommended). Для visible custom emoji викликайте get_custom_emoji_media по items[].emoji_id, для regular stickers — download_file по items[].remote_id. Якщо with_lottie=true, asset-и custom emoji повертаються одразу в item.

Приклади запитів

{"action":"download_file","userbot_id":1,"file_id":123456,"source":"dialogs","chat_id":"123456","msg_id":"555","message_thread_id":"456","extra":{"kind":"manual"}}
{"action":"get_prem_path","userbot_id":1,"emoji_id":"5393021912655030923"}
{"action":"get_custom_emoji_media","userbot_id":1,"custom_emoji_ids":["5393021912655030923","5393021912655030924"],"request_id":"visible-stickers"}
{"action":"get_recent_stickers","userbot_id":1,"is_attached":false}
{"action":"get_stickers_pack","userbot_id":1,"query":"","limit":20,"offset":0,"with_lottie":false}

Подія media_ready

media_ready — асинхронна WS-подія, яка приходить окремо від основної відповіді, коли бекенд вже підготував медіа і може віддати URL або asset.

{"userbot_id":1,"type":"media_ready","result":{...}}

Варіант 1: файл

{"userbot_id":1,"type":"media_ready","result":{"file_id":123456,"path":"https://...","kind":"avatar","remote_unique_id":"AQAD...","chat_id":"-1001234567890","msg_id":"555"}}

Базові поля: file_id, path, kind. Додатково можуть приходити remote_unique_id, chat_id, msg_id, user_id, message_thread_id, album_id, preview_index, preview_kind, preview_media_type, preview_type, preview_for_file_id, preview_for_file_format, preview_for_file_size, waveform, sticker_format, emoji, source.

Варіант 2: premium/custom emoji

{"userbot_id":1,"type":"media_ready","result":{"emoji_id":"5393021912655030923","kind":"custom_emoji","file_id":987654,"path":"https://...","emoji_webm":"https://...","is_lottie":false,"source":"custom_emoji_batch","request_id":"composer-emoji-pack","batch_index":1,"batch_total":2}}

Для custom emoji приходять emoji_id, kind=custom_emoji і або path/emoji_json_url з is_lottie=true, або path/emoji_webm з is_lottie=false. Додатково можливі file_id, chat_id, msg_id, message_thread_id, source, request_id, batch_index, batch_total.

Порядок завантаження: медіа вантажиться тільки явною командою фронта. Для файлів спочатку перевіряється кеш/клауд, і тільки потім йде догрузка з TG. Поле path у media_ready — це URL на об'єкт у клауді; для public emoji/sticker bucket він може бути стабільним публічним URL, а для інших media — presigned URL.

Коли приходить:

User / Chat Profiles / Contacts

ActionЩо приймаєЩо повертаєЩо робить
search_user userbot_id, username search_user / search_user_error Пошук публічного чату/юзера за username. Підтримує і durov, і @durov.
search_chats_global userbot_id, query (або title/username), опц. limit search_chats_global / search_chats_global_error Глобальний пошук чатів по title і username через TDLib searchChats, searchChatsOnServer і searchPublicChats. Повертає масив items у форматі chat-list.
create_private_chat userbot_id, user_id (або tg_user_id), опц. force create_private_chat / create_private_chat_error Створює або повертає приватний чат через TDLib createPrivateChat. Повернений chat_id використовуйте далі в open_dialog.
create_supergroup_chat userbot_id, title, опц. is_channel, description create_supergroup_chat / create_supergroup_chat_error Створює нову групу або канал через TDLib createNewSupergroupChat. Якщо is_channel=true, буде створено канал.
get_user userbot_id, user_id get_user / get_user_error Повертає розширений профіль користувача: базові поля user, нормалізований parsed_status/last_seen, profile_photo і full_info.
get_chat_profile userbot_id, chat_id get_chat_profile / get_chat_profile_error Повертає розширений профіль чату/каналу/групи: chat + chat_full_info, а також supergroup/basic_group (коли доступно), і profile_photo.
set_name userbot_id, first_name, опц. last_name (або full_name/name) set_name / set_name_error Змінює імʼя/прізвище поточного акаунта через TDLib setName.
set_bio userbot_id, bio (або about) set_bio / set_bio_error Оновлює bio (About) поточного акаунта через TDLib setBio. Порожній рядок очищає bio.
set_username userbot_id, username set_username / set_username_error Оновлює @username поточного акаунта через TDLib setUsername. Порожній рядок прибирає username.
set_birthdate userbot_id, day, month, опц. year (або birthdate обʼєкт / null, опц. clear) set_birthdate / set_birthdate_error Оновлює день народження поточного акаунта через TDLib setBirthdate. Якщо рік не передано, використовується 0 (рік прихований). Для очищення дати передайте birthdate: null (або clear: true).
set_chat_title userbot_id, chat_id, title set_chat_title / set_chat_title_error Змінює назву чату/каналу через TDLib setChatTitle.
set_chat_description userbot_id, chat_id, description set_chat_description / set_chat_description_error Змінює опис чату/каналу через TDLib setChatDescription.
set_chat_permissions userbot_id, chat_id, permissions set_chat_permissions / set_chat_permissions_error Змінює загальні дозволи учасників чату через TDLib setChatPermissions. Підтримує частковий payload і alias полів (can_send_messages, can_add_web_page_previews, can_manage_topics).
check_chat_username userbot_id, chat_id, username check_chat_username / check_chat_username_error Перевіряє username для чату/каналу через TDLib checkChatUsername.
set_supergroup_username userbot_id, chat_id (або supergroup_id), username set_supergroup_username / set_supergroup_username_error Змінює @username каналу/супергрупи через TDLib setSupergroupUsername. Порожній рядок робить чат приватним.
toggle_chat_has_protected_content userbot_id, chat_id, has_protected_content toggle_chat_has_protected_content / toggle_chat_has_protected_content_error Вмикає/вимикає захист контенту (копіювання/пересилання) через TDLib toggleChatHasProtectedContent.
set_chat_slow_mode_delay userbot_id, chat_id, slow_mode_delay (або delay) set_chat_slow_mode_delay / set_chat_slow_mode_delay_error Керує “повільним режимом” у чаті через TDLib setChatSlowModeDelay. 0 вимикає slow mode.
set_chat_direct_messages_group userbot_id, chat_id, is_enabled, опц. paid_message_star_count (або star_count) set_chat_direct_messages_group / set_chat_direct_messages_group_error Керує блоком “Приймати повідомлення” в каналі через TDLib setChatDirectMessagesGroup: вмикає/вимикає прийом повідомлень і задає ціну в Stars за повідомлення.
set_chat_discussion_group userbot_id, chat_id, discussion_chat_id set_chat_discussion_group / set_chat_discussion_group_error Прив’язує або відв’язує групу обговорення каналу через TDLib setChatDiscussionGroup. Для відв’язки передайте discussion_chat_id=0.
get_suitable_discussion_chats userbot_id get_suitable_discussion_chats / get_suitable_discussion_chats_error Повертає список чатів, які підходять для прив’язки як група обговорення, через TDLib getSuitableDiscussionChats.
get_suitable_personal_chats userbot_id get_suitable_personal_chats / get_suitable_personal_chats_error Повертає список каналів, які можна вибрати як “особистий канал”, через TDLib getSuitablePersonalChats.
set_personal_chat userbot_id, chat_id set_personal_chat / set_personal_chat_error Встановлює канал як “особистий канал” через TDLib setPersonalChat. У відповіді додається item, зібраний через build_chat_item.
hide_personal_chat userbot_id hide_personal_chat / hide_personal_chat_error Приховує “особистий канал” через TDLib setPersonalChat з chat_id=0.
get_chat_members userbot_id, chat_id, опц. limit, offset, query, filter/member_filter get_chat_members / get_chat_members_error Повертає учасників чату з пагінацією. Для supergroup використовує getSupergroupMembers/searchChatMembers, для basic group — getBasicGroupFullInfo.
import_contacts userbot_id, phone, опц. first_name, last_name, vcard, contact_user_id import_contacts / import_contacts_error Імпортує контакт через TDLib importContacts і повертає requested_contact + масив contacts з профілем для збереження на фронті.
block_user userbot_id, user_id (або tg_user_id), опц. is_blocked, block_list block_user / block_user_error Блокує або розблоковує користувача через TDLib setMessageSenderBlockList.
unblock_user userbot_id, user_id (або tg_user_id) unblock_user / unblock_user_error Видаляє користувача зі списку блокування через TDLib setMessageSenderBlockList з block_list=null.
get_blocked_users userbot_id, опц. block_list, offset, limit get_blocked_users / get_blocked_users_error Повертає список заблокованих sender-ів через TDLib getBlockedMessageSenders з окремими масивами users і chats.
get_privacy_setting userbot_id, setting (або privacy_setting) get_privacy_setting / get_privacy_setting_error Повертає поточні правила приватності для одного налаштування. Для user rules використовує TDLib getUserPrivacySettingRules, для “Повідомлення” — getNewChatPrivacySettings.
get_privacy_settings userbot_id, опц. settings[] або CSV-рядок get_privacy_settings / get_privacy_settings_error Повертає набір privacy-налаштувань одним запитом (масив items + errors).
set_privacy_setting userbot_id, setting, опц. mode, allow_user_ids/always_allow_user_ids, restrict_user_ids/never_allow_user_ids, allow_chat_ids, restrict_chat_ids, allow_premium_users, rules, allow_new_chats_from_unknown_users set_privacy_setting / set_privacy_setting_error Змінює privacy-правила. Підтримує базові режими (all/contacts/nobody) і винятки для користувачів/чатів, або повний масив TDLib rules.
add_chat_member userbot_id, chat_id, user_id (або tg_user_id), опц. forward_limit add_chat_member / add_chat_member_error Додає користувача в чат/канал через TDLib addChatMember. Для груп може використовувати forward_limit (скільки останніх повідомлень показати новому учаснику).
add_chat_members userbot_id, chat_id, user_ids[] (або userids[]) add_chat_members / add_chat_members_error Додає кількох користувачів у чат/канал через TDLib addChatMembers одним запитом.
remove_chat_member userbot_id, chat_id, user_id (або tg_user_id), опц. revoke_messages remove_chat_member / remove_chat_member_error Вилучає користувача з каналу/чату через TDLib setChatMemberStatus зі статусом chatMemberStatusBanned.
restore_chat_member userbot_id, chat_id, user_id (або tg_user_id) restore_chat_member / restore_chat_member_error Відновлює користувачу можливість знову приєднатись (unban) через TDLib setChatMemberStatus зі статусом chatMemberStatusLeft. Не додає назад автоматично.
add_chat_administrator userbot_id, chat_id, user_id (або tg_user_id), опц. custom_title, rights, is_anonymous, can_be_edited add_chat_administrator / add_chat_administrator_error Призначає користувача адміністратором у каналі/групі через TDLib setChatMemberStatus з chatMemberStatusAdministrator.
remove_chat_administrator userbot_id, chat_id, user_id (або tg_user_id) remove_chat_administrator / remove_chat_administrator_error Знімає адмінські права і повертає користувача до звичайного member через TDLib setChatMemberStatus з chatMemberStatusMember.
transfer_chat_ownership userbot_id, chat_id, user_id (або tg_user_id), password (або current_password) transfer_chat_ownership / transfer_chat_ownership_error Передає право власника каналу/групи іншому адміністратору через TDLib transferChatOwnership. Потрібен пароль 2FA поточного власника.
get_password_state userbot_id get_password_state / get_password_state_error Повертає стан 2FA через TDLib getPasswordState: чи увімкнений пароль, password_hint, стан recovery email.
verify_2fa_password userbot_id, password (або current_password) verify_2fa_password / verify_2fa_password_error Перевіряє валідність поточного 2FA-пароля через TDLib getRecoveryEmailAddress (без зміни налаштувань).
change_2fa_password userbot_id, current_password (або old_password/password), new_password, опц. new_hint, set_recovery_email_address, new_recovery_email_address change_2fa_password / change_2fa_password_error Змінює 2FA-пароль через TDLib setPassword. Повертає оновлений password_state.
disable_2fa_password userbot_id, current_password (або password) disable_2fa_password / disable_2fa_password_error Вимикає 2FA-пароль через TDLib setPassword з порожнім new_password.
change_2fa_recovery_email userbot_id, current_password (або password), new_recovery_email_address (або recovery_email_address/email) change_2fa_recovery_email / change_2fa_recovery_email_error Змінює recovery email для 2FA через TDLib setRecoveryEmailAddress. Якщо пошта нова, потрібне підтвердження на email.
get_transfer_ownership_state userbot_id get_transfer_ownership_state / get_transfer_ownership_state_error Об’єднує перевірки TDLib getPasswordState і canTransferOwnership в один запит для UI блоку перевірки безпеки.
toggle_supergroup_sign_messages userbot_id, chat_id (або supergroup_id), sign_messages, опц. show_message_sender toggle_supergroup_sign_messages / toggle_supergroup_sign_messages_error Перемикає підпис повідомлень у каналі/супергрупі через TDLib toggleSupergroupSignMessages. Якщо show_message_sender не передано, бекенд збереже поточне значення.
toggle_supergroup_is_all_history_available userbot_id, chat_id (або supergroup_id), is_all_history_available toggle_supergroup_is_all_history_available / toggle_supergroup_is_all_history_available_error Керує видимістю старої історії для нових учасників у супергрупі через TDLib toggleSupergroupIsAllHistoryAvailable.
toggle_supergroup_is_forum userbot_id, chat_id (або supergroup_id), is_forum toggle_supergroup_is_forum / toggle_supergroup_is_forum_error Вмикає/вимикає режим гілок (forum topics) у супергрупі через TDLib toggleSupergroupIsForum.
check_chat_invite_link userbot_id, invite_link (або link/url) check_chat_invite_link / check_chat_invite_link_error Перевіряє Telegram-лінк чату. Для invite links використовує TDLib checkChatInviteLink; якщо chat_id уже відомий, бек додатково звіряє актуальну публічність через свіжий getChat. Якщо відповідь застаріла або без chat_id, бек робить best-effort refresh через searchChatsOnServer за exact title. Для публічних t.me/username або @username резолвить чат через searchPublicChat. Якщо chat_id усе одно недоступний, у відповіді повертається chat_id_unavailable_reason.
join_chat_by_invite_link userbot_id, invite_link (або link/url) join_chat_by_invite_link / join_chat_by_invite_link_error Приєднує поточного користувача до чату за Telegram-посиланням. Для invite links використовує TDLib joinChatByInviteLink, для публічних t.me/username лінків резолвить чат і викликає joinChat. У відповіді повертає joined, join_request_sent, а також chat і item, якщо чат уже доступний.
get_chat_invite_links userbot_id, chat_id, опц. creator_user_id, is_revoked, offset_date, offset_invite_link, limit get_chat_invite_links / get_chat_invite_links_error Повертає список запрошувальних посилань через TDLib getChatInviteLinks. Якщо creator_user_id не передано, бекенд підставляє поточного користувача через getMe.
create_chat_invite_link userbot_id, chat_id, опц. name, expiration_date, member_limit, creates_join_request create_chat_invite_link / create_chat_invite_link_error Створює нове invite link через TDLib createChatInviteLink.
create_chat_subscription_invite_link userbot_id, chat_id, опц. name, subscription_pricing (або subscription_period + subscription_star_count) create_chat_subscription_invite_link / create_chat_subscription_invite_link_error Створює платне invite link через TDLib createChatSubscriptionInviteLink (Stars subscription для каналу).
edit_chat_subscription_invite_link userbot_id, chat_id, invite_link, опц. name edit_chat_subscription_invite_link / edit_chat_subscription_invite_link_error Редагує платне invite link через TDLib editChatSubscriptionInviteLink (назва посилання).
edit_chat_invite_link userbot_id, chat_id, invite_link, опц. name, expiration_date, member_limit, creates_join_request edit_chat_invite_link / edit_chat_invite_link_error Редагує invite link через TDLib editChatInviteLink.
revoke_chat_invite_link userbot_id, chat_id, invite_link revoke_chat_invite_link / revoke_chat_invite_link_error Відкликає invite link через TDLib revokeChatInviteLink.
replace_primary_chat_invite_link userbot_id, chat_id replace_primary_chat_invite_link / replace_primary_chat_invite_link_error Генерує нове primary invite link через TDLib replacePrimaryChatInviteLink.
delete_revoked_chat_invite_link userbot_id, chat_id, invite_link delete_revoked_chat_invite_link / delete_revoked_chat_invite_link_error Видаляє відкликане invite link зі списку через TDLib deleteRevokedChatInviteLink (якщо підтримується версією TDLib).
delete_all_revoked_chat_invite_links userbot_id, chat_id, опц. creator_user_id delete_all_revoked_chat_invite_links / delete_all_revoked_chat_invite_links_error Видаляє всі відкликані invite links для одного адміністратора через TDLib deleteAllRevokedChatInviteLinks. Якщо creator_user_id не передано, бекенд підставляє поточного користувача через getMe.
get_chat_join_requests userbot_id, chat_id, опц. invite_link, query, offset_request, limit get_chat_join_requests / get_chat_join_requests_error Повертає запити на вступ через TDLib getChatJoinRequests. Для пагінації можна передавати останній елемент як offset_request.
get_chat_invite_link_members userbot_id, chat_id, invite_link, опц. only_with_expired_subscription, offset_member, limit get_chat_invite_link_members / get_chat_invite_link_members_error Повертає користувачів, які приєдналися за конкретним invite link, через TDLib getChatInviteLinkMembers. Для пагінації можна передавати останній елемент як offset_member.
process_chat_join_request userbot_id, chat_id, user_id (або tg_user_id), опц. approve process_chat_join_request / process_chat_join_request_error Схвалює або відхиляє запит на вступ через TDLib processChatJoinRequest.
process_chat_join_requests userbot_id, chat_id, опц. invite_link, approve process_chat_join_requests / process_chat_join_requests_error Схвалює або відхиляє всі заявки (або всі заявки конкретного invite link) через TDLib processChatJoinRequests.

Приклади запитів

{"action":"search_user","userbot_id":1,"username":"@durov"}
{"action":"search_chats_global","userbot_id":1,"query":"openai","limit":20}
{"action":"create_private_chat","userbot_id":1,"user_id":777000,"force":false}
{"action":"create_supergroup_chat","userbot_id":1,"title":"Моя група","is_channel":false,"description":"Опис групи"}
{"action":"create_supergroup_chat","userbot_id":1,"title":"Мій канал","is_channel":true,"description":"Опис каналу"}
{"action":"open_dialog","userbot_id":1,"chat_id":"123456789","from_message_id":"0"}
{"action":"get_user","userbot_id":1,"user_id":"777000"}
{"action":"get_chat_profile","userbot_id":1,"chat_id":"-1001234567890"}
{"action":"set_name","userbot_id":1,"first_name":"Pavlo","last_name":"Petrenko"}
{"action":"set_name","userbot_id":1,"full_name":"Pavlo Petrenko"}
{"action":"set_bio","userbot_id":1,"bio":"Backend engineer"}
{"action":"set_bio","userbot_id":1,"bio":""}
{"action":"set_username","userbot_id":1,"username":"pavlo_dev"}
{"action":"set_username","userbot_id":1,"username":""}
{"action":"set_birthdate","userbot_id":1,"day":17,"month":5,"year":1998}
{"action":"set_birthdate","userbot_id":1,"day":17,"month":5,"year":0}
{"action":"set_birthdate","userbot_id":1,"birthdate":{"day":17,"month":5,"year":1998}}
{"action":"set_birthdate","userbot_id":1,"birthdate":null}
{"action":"set_chat_title","userbot_id":1,"chat_id":"-1001234567890","title":"Новий заголовок"}
{"action":"set_chat_description","userbot_id":1,"chat_id":"-1001234567890","description":"Новий опис"}
{"action":"set_chat_permissions","userbot_id":1,"chat_id":"-1001234567890","permissions":{"can_send_basic_messages":true,"can_send_photos":true,"can_send_videos":true,"can_send_polls":false,"can_add_link_previews":true,"can_invite_users":true}}
{"action":"check_chat_username","userbot_id":1,"chat_id":"-1001234567890","username":"my_channel"}
{"action":"set_supergroup_username","userbot_id":1,"chat_id":"-1001234567890","username":"my_channel"}
{"action":"set_supergroup_username","userbot_id":1,"chat_id":"-1001234567890","username":""}
{"action":"toggle_chat_has_protected_content","userbot_id":1,"chat_id":"-1001234567890","has_protected_content":true}
{"action":"set_chat_slow_mode_delay","userbot_id":1,"chat_id":"-1001234567890","slow_mode_delay":60}
{"action":"set_chat_slow_mode_delay","userbot_id":1,"chat_id":"-1001234567890","slow_mode_delay":0}
{"action":"set_chat_direct_messages_group","userbot_id":1,"chat_id":"-1001234567890","is_enabled":true,"paid_message_star_count":0}
{"action":"set_chat_direct_messages_group","userbot_id":1,"chat_id":"-1001234567890","is_enabled":true,"paid_message_star_count":100}
{"action":"set_chat_direct_messages_group","userbot_id":1,"chat_id":"-1001234567890","is_enabled":false,"paid_message_star_count":0}
{"action":"set_chat_discussion_group","userbot_id":1,"chat_id":"-1001234567890","discussion_chat_id":"-1009876543210"}
{"action":"set_chat_discussion_group","userbot_id":1,"chat_id":"-1001234567890","discussion_chat_id":0}
{"action":"get_suitable_discussion_chats","userbot_id":1}
{"action":"get_suitable_personal_chats","userbot_id":1}
{"action":"set_personal_chat","userbot_id":1,"chat_id":"-1001234567890"}
{"action":"hide_personal_chat","userbot_id":1}
{"action":"get_chat_members","userbot_id":1,"chat_id":"-1001234567890","limit":30,"offset":0,"filter":"recent"}
{"action":"get_chat_members","userbot_id":1,"chat_id":"-1001234567890","limit":30,"query":"andrey","filter":"members"}
{"action":"get_chat_members","userbot_id":1,"chat_id":"-1001234567890","limit":30,"offset":0,"filter":"admins"}
{"action":"get_chat_members","userbot_id":1,"chat_id":"-1001234567890","limit":30,"offset":0,"filter":"blocked"}
{"action":"import_contacts","userbot_id":1,"phone":"+380991112233","first_name":"Ivan","last_name":"Petrenko","vcard":"","contact_user_id":0}
{"action":"block_user","userbot_id":1,"user_id":777000,"is_blocked":true}
{"action":"block_user","userbot_id":1,"user_id":777000,"is_blocked":false}
{"action":"unblock_user","userbot_id":1,"user_id":777000}
{"action":"get_blocked_users","userbot_id":1,"offset":0,"limit":50}
{"action":"get_privacy_setting","userbot_id":1,"setting":"last_seen"}
{"action":"get_privacy_settings","userbot_id":1,"settings":["phone_number","last_seen","groups_and_channels","calls","profile_photo","bio","gifts","birthdate","forwarded_messages","voice_messages","messages"]}
{"action":"set_privacy_setting","userbot_id":1,"setting":"last_seen","mode":"nobody","always_allow_user_ids":[777000,123456789],"never_allow_user_ids":[987654321]}
{"action":"set_privacy_setting","userbot_id":1,"setting":"groups_and_channels","mode":"contacts","allow_chat_ids":[-1001234567890]}
{"action":"set_privacy_setting","userbot_id":1,"setting":"messages","allow_new_chats_from_unknown_users":true}
{"action":"add_chat_member","userbot_id":1,"chat_id":"-1001234567890","user_id":777000,"forward_limit":0}
{"action":"add_chat_members","userbot_id":1,"chat_id":"-1001234567890","user_ids":[777000,123456789]}
{"action":"remove_chat_member","userbot_id":1,"chat_id":"-1001234567890","user_id":777000,"revoke_messages":false}
{"action":"restore_chat_member","userbot_id":1,"chat_id":"-1001234567890","user_id":777000}
{"action":"add_chat_administrator","userbot_id":1,"chat_id":"-1001234567890","user_id":777000,"custom_title":"Модератор"}
{"action":"add_chat_administrator","userbot_id":1,"chat_id":"-1001234567890","user_id":777000,"rights":{"can_delete_messages":true,"can_invite_users":true,"can_manage_chat":true}}
{"action":"remove_chat_administrator","userbot_id":1,"chat_id":"-1001234567890","user_id":777000}
{"action":"transfer_chat_ownership","userbot_id":1,"chat_id":"-1001234567890","user_id":777000,"password":"your_2fa_password"}
{"action":"get_password_state","userbot_id":1}
{"action":"verify_2fa_password","userbot_id":1,"password":"current_2fa_password"}
{"action":"change_2fa_password","userbot_id":1,"current_password":"current_2fa_password","new_password":"new_2fa_password","new_hint":"My hint"}
{"action":"change_2fa_password","userbot_id":1,"current_password":"current_2fa_password","new_password":"new_2fa_password","new_hint":"My hint","set_recovery_email_address":true,"new_recovery_email_address":"me@example.com"}
{"action":"disable_2fa_password","userbot_id":1,"current_password":"current_2fa_password"}
{"action":"change_2fa_recovery_email","userbot_id":1,"current_password":"current_2fa_password","new_recovery_email_address":"new@example.com"}
{"action":"get_transfer_ownership_state","userbot_id":1}
{"action":"toggle_supergroup_sign_messages","userbot_id":1,"chat_id":"-1001234567890","sign_messages":true}
{"action":"toggle_supergroup_sign_messages","userbot_id":1,"chat_id":"-1001234567890","sign_messages":true,"show_message_sender":true}
{"action":"toggle_supergroup_is_all_history_available","userbot_id":1,"chat_id":"-1001234567890","is_all_history_available":true}
{"action":"toggle_supergroup_is_forum","userbot_id":1,"chat_id":"-1001234567890","is_forum":true}
{"action":"toggle_supergroup_is_forum","userbot_id":1,"chat_id":"-1001234567890","is_forum":false}
{"action":"check_chat_invite_link","userbot_id":1,"invite_link":"https://t.me/+abc"}
{"action":"join_chat_by_invite_link","userbot_id":1,"invite_link":"https://t.me/+abc"}
{"action":"join_chat_by_invite_link","userbot_id":1,"link":"https://t.me/my_public_channel"}
{"action":"get_chat_invite_links","userbot_id":1,"chat_id":"-1001234567890","is_revoked":false,"limit":50}
{"action":"create_chat_invite_link","userbot_id":1,"chat_id":"-1001234567890","name":"Ads A","expiration_date":0,"member_limit":0,"creates_join_request":false}
{"action":"create_chat_subscription_invite_link","userbot_id":1,"chat_id":"-1001234567890","name":"Paid 30d","subscription_pricing":{"period":2592000,"star_count":100}}
{"action":"edit_chat_subscription_invite_link","userbot_id":1,"chat_id":"-1001234567890","invite_link":"https://t.me/+paid_abc","name":"Paid 30d (new name)"}
{"action":"edit_chat_invite_link","userbot_id":1,"chat_id":"-1001234567890","invite_link":"https://t.me/+abc","name":"Ads A v2","member_limit":100}
{"action":"revoke_chat_invite_link","userbot_id":1,"chat_id":"-1001234567890","invite_link":"https://t.me/+abc"}
{"action":"replace_primary_chat_invite_link","userbot_id":1,"chat_id":"-1001234567890"}
{"action":"delete_revoked_chat_invite_link","userbot_id":1,"chat_id":"-1001234567890","invite_link":"https://t.me/+abc"}
{"action":"delete_all_revoked_chat_invite_links","userbot_id":1,"chat_id":"-1001234567890","creator_user_id":777000}
{"action":"get_chat_join_requests","userbot_id":1,"chat_id":"-1001234567890","invite_link":"","query":"","limit":50}
{"action":"get_chat_invite_link_members","userbot_id":1,"chat_id":"-1001234567890","invite_link":"https://t.me/+abc","only_with_expired_subscription":false,"limit":50}
{"action":"process_chat_join_request","userbot_id":1,"chat_id":"-1001234567890","user_id":777000,"approve":true}
{"action":"process_chat_join_requests","userbot_id":1,"chat_id":"-1001234567890","invite_link":"","approve":true}
{"action":"process_chat_join_requests","userbot_id":1,"chat_id":"-1001234567890","invite_link":"","approve":false}

Profile Responses (скорочено)

Фільтри для get_chat_members: recent, members, admins, contacts, bots, mentions, restricted, banned. Також підтримуються alias-и blocked/blocked_users (мапляться на banned). Можна передавати й оригінальні TDLib типи.

Privacy aliases для setting: phone_number, last_seen, groups_and_channels, calls, profile_photo, bio, gifts, birthdate, forwarded_messages, saved_music, saved_messages, voice_messages, messages. Режими: all, contacts, nobody. Для user exceptions використовуйте allow_user_ids/restrict_user_ids або alias-и always_allow_user_ids/never_allow_user_ids.

Frontend: Profile Data Permissions

Для get_chat_profile фронт орієнтується на result.permissions. Якщо прапорець false, відповідну дію в UI треба блокувати або ховати.

ПолеЩо дозволяєЩо робити на фронті
can_send_basic_messages Надсилання тексту. Блокувати composer (text input + send).
can_send_photos Надсилання фото. Вимикати кнопку фото/галереї.
can_send_videos Надсилання відео. Вимикати кнопку відео.
can_send_audios Надсилання аудіо/музики. Вимикати кнопку audio upload.
can_send_voice_notes Надсилання voice messages. Ховати/блокувати мікрофон.
can_send_video_notes Надсилання video notes (round video). Ховати/блокувати кнопку video note.
can_send_documents Надсилання файлів/документів. Вимикати file picker.
can_send_polls Створення опитувань. Ховати кнопку poll.
can_send_other_messages GIF/sticker/animated emoji/інші не-текстові типи. Вимикати sticker/GIF/premium reactions composer entry.
can_add_link_previews Увімкнення превʼю посилань у повідомленнях. Вимикати toggle «show link preview».
can_change_info Редагування назви/опису/аватара чату. Показувати/ховати кнопку edit chat profile.
can_invite_users Запрошення користувачів у чат. Показувати/ховати invite member.
can_pin_messages Закріплення повідомлень. Блокувати action pin_message.
can_create_topics Створення тем у forum/supergroup. Показувати/ховати create topic.

Додаткові поля для рішень UI

ПолеЩо означаєВплив на фронт
supergroup.join_to_send_messages Для каналу треба приєднатись, щоб писати. Показати CTA «Join to send messages» замість composer.
supergroup.is_channel Це канал, а не група. Використовувати channel UI (read-only для звичайного підписника).
has_protected_content Контент захищено від пересилання/копіювання. Обмежити forward/save actions у UI.
notification_settings.mute_for Тривалість mute у секундах. Стан toggle mute та label «muted until ...».

Важливо: у каналах/супергрупах permissions описують базові права учасника. Права адміна треба брати окремо зі статусу учасника (не з цього блоку).

Frontend: Chat With Topics (повний приклад + повний опис полів)

Це приклад get_chat_profile для супергрупи з топіками (supergroup.is_forum=true, view_as_topics=true). Нижче наведено payload без скорочень і повну розшифровку.

Розшифровка кореневих полів chat

ПолеОписЩо робити на фронті
@typeТип обʼєкта. Для чату завжди chat.Використовувати для type guard.
idУнікальний ID чату.Ключ чату в сторі, роутингу та WS-командах.
typeВкладений тип чату (chatTypeSupergroup/chatTypePrivate тощо).Перемикати шаблон UI за типом чату.
titleНазва чату.Показувати в header, списку чатів, breadcrumbs.
accent_color_idTelegram accent color для чату.Опціонально стилізувати avatar ring/title badge.
background_custom_emoji_idID custom emoji для background чату, "0" якщо відсутній.Якщо не "0" - завантажувати відповідний decoration.
profile_accent_color_idAccent color профілю чату, -1 якщо дефолт.Використовувати fallback, якщо значення -1.
profile_background_custom_emoji_idCustom emoji для background профілю, "0" якщо відсутній.Якщо є emoji-id, показувати в profile header.
permissionsБазові права учасника в чаті.Блокувати/дозволяти дії composer/admin UI.
positionsПозиції чату в різних списках з порядком сортування.Використовувати для порядку чатів у sidebar.
chat_listsСписки, де присутній чат (main, archive, folders).Показувати badges folder/main/archive.
message_sender_idПоточний sender від імені якого пише користувач у чаті.Відображати від чийого імені йде відправка.
has_protected_contentКонтент захищений від пересилання/копіювання.Вимикати forward/save/copy там, де потрібно.
is_translatableЧи підтримується переклад повідомлень чату.Показувати/ховати кнопку translate.
is_marked_as_unreadЧат позначено як непрочитаний вручну.Показувати unread marker навіть без нових меседжів.
view_as_topicsUI режим показу як список тем.Відкривати чат у режимі topics list.
has_scheduled_messagesЄ заплановані повідомлення.Показувати індикатор/вхід у scheduled messages.
can_be_deleted_only_for_selfЧат можна видалити тільки локально для себе.Текст підтвердження delete адаптувати під local-only.
can_be_deleted_for_all_usersЧат можна видалити для всіх (залежить від типу чату і прав).Дозволяти опцію "delete for all", якщо true.
can_be_reportedЧат доступний для скарги.Показувати action report.
default_disable_notificationДефолт надсилання без звуку в цей чат.Початковий стан toggle silent send.
unread_countКількість непрочитаних повідомлень.Badge непрочитаних у списку чатів.
last_read_inbox_message_idОстанній прочитаний вхідний message ID.Обчислення read markers по вхідним.
last_read_outbox_message_idОстанній прочитаний вихідний message ID.Обчислення read markers по вихідним.
unread_mention_countКількість непрочитаних згадок.Показувати mention-badge окремо від unread_count.
unread_reaction_countКількість непрочитаних реакцій.Показувати reaction badge.
notification_settingsПерсональні налаштування нотифікацій для цього чату.Ініціалізація екрана chat notifications.
available_reactionsПолітика доступних реакцій у чаті.Обмежувати reaction picker.
message_auto_delete_timeTTL автознищення повідомлень у секундах, 0 = вимкнено.Показувати current auto-delete value.
theme_nameТема чату (якщо застосовується).Опційно стилізувати чат або ігнорувати пусте значення.
reply_markup_message_idID повідомлення з активним reply markup.Трекати pinned keyboard / interactive markup state.
client_dataСлужбове client-side поле TDLib.Зазвичай не використовується у фронті.
profile_photoФото чату з розмірами.Avatar rendering + вибір оптимального size.
chat_full_infoДетальна інфа чату (в цьому payload порожній обʼєкт).Перевіряти на пустий обʼєкт перед рендером деталізації.
supergroupКоротка інфа супергрупи/каналу.Визначення типу, режиму, membership та forum-стану.
supergroup_full_infoРозширена інфа супергрупи.Рендер блоку About/Permissions/Statistics/Commands.
basic_groupОбʼєкт basic group, якщо чат цього типу.Для supergroup буде null, використовувати тільки для basic groups.
basic_group_full_infoРозширена інфа basic group.Для supergroup буде null.

Розшифровка permissions (повністю)

ПолеОписПоточне значенняВплив на UI
can_send_basic_messagesДозвіл надсилати текстові повідомлення.trueComposer активний.
can_send_audiosДозвіл надсилати аудіофайли.trueAudio upload доступний.
can_send_documentsДозвіл надсилати документи/файли.trueFile picker доступний.
can_send_photosДозвіл надсилати фото.truePhoto upload доступний.
can_send_videosДозвіл надсилати відео.trueVideo upload доступний.
can_send_video_notesДозвіл надсилати video notes.trueVideo note action доступний.
can_send_voice_notesДозвіл надсилати voice notes.trueМікрофон доступний.
can_send_pollsДозвіл створювати опитування.truePoll action доступний.
can_send_other_messagesДозвіл надсилати sticker/GIF/інші типи.trueSticker/GIF picker доступний.
can_add_link_previewsДозвіл додавати preview до URL.trueToggle preview доступний.
can_change_infoДозвіл редагувати назву/опис/аватар.falseEdit chat profile прихований.
can_invite_usersДозвіл запрошувати нових учасників.trueInvite member доступний.
can_pin_messagesДозвіл закріплювати повідомлення.falsePin message action заблокований.
can_create_topicsДозвіл створювати нові теми.falseCreate topic action заблокований.

Розшифровка positions і chat_lists

ПолеОписПоточне значення
positions[0].@typeТип елемента позиції.chatPosition
positions[0].list.@typeСписок, для якого задана позиція.chatListMain
positions[0].orderПорядок сортування (рядок-число)."7608161469645737115"
positions[0].is_pinnedЧи закріплено чат у цьому списку.false
chat_lists[0]Належність до folder з ID 22.{"@type":"chatListFolder","chat_folder_id":22}
chat_lists[1]Належність до folder з ID 97.{"@type":"chatListFolder","chat_folder_id":97}
chat_lists[2]Належність до основного списку.{"@type":"chatListMain"}

Розшифровка notification_settings (повністю)

ПолеОписПоточне значенняВплив на UI
use_default_mute_forВикористовувати глобальний mute.falseПоказувати, що застосовано локальний mute.
mute_forMute duration в секундах.376070182Показувати чат як muted.
use_default_soundВикористовувати глобальний звук.trueLocal sound picker можна ховати/дизейблити.
sound_idID локального sound."-1"Зазвичай дефолтний звук.
use_default_show_previewВикористовувати глобальний show preview.truePreview toggle наслідує global state.
show_previewЛокальний прапорець preview.falseПрацює лише якщо use_default_show_preview=false.
use_default_mute_storiesВикористовувати глобальний mute stories.trueStories mute контролюється глобальним налаштуванням.
mute_storiesЛокальний mute для stories.falseПрацює лише при use_default_mute_stories=false.
use_default_story_soundВикористовувати глобальний звук stories.trueStory sound picker наслідує глобальний.
story_sound_idID звуку stories."-1"Дефолтний story sound.
use_default_show_story_senderВикористовувати глобальне відображення автора story.trueStory sender visibility наслідує global.
show_story_senderЛокальний прапорець показу автора story.trueПрацює лише якщо use_default_show_story_sender=false.
use_default_disable_pinned_message_notificationsВикористовувати глобальне правило для pinned notifications.trueЛокальний toggle pinned notifications наслідує global.
disable_pinned_message_notificationsВимкнення нотифікацій про pin.falseАктивний лише якщо use_default...=false.
use_default_disable_mention_notificationsВикористовувати глобальне правило для mention notifications.trueMention notifications наслідують global.
disable_mention_notificationsВимкнення нотифікацій про згадки.falseАктивний лише якщо use_default...=false.

Розшифровка available_reactions і profile_photo

ПолеОписПоточне значення
available_reactions.@typeРежим доступних реакцій.chatAvailableReactionsAll
available_reactions.max_reaction_countМаксимум реакцій на повідомлення.11
profile_photo.typeТип обʼєкта фото профілю.profilePhoto
profile_photo.file_idБазовий file_id фото.4390
profile_photo.widthБазова ширина.160
profile_photo.heightБазова висота.160
profile_photo.sizes[0]Size variant a.{"file_id":4390,"type":"a","width":160,"height":160}
profile_photo.sizes[1]Size variant b.{"file_id":4391,"type":"b","width":320,"height":320}
profile_photo.sizes[2]Size variant c.{"file_id":4392,"type":"c","width":640,"height":640}

Розшифровка supergroup (повністю)

ПолеОписПоточне значенняВплив на UI
@typeТип обʼєкта супергрупи.supergroupType guard.
idID супергрупи.1987658875Використовувати у TDLib методах супергрупи.
usernames.@typeТип обʼєкта usernames.usernamesType guard.
usernames.active_usernamesАктивні username.["romaniaitcommunity"]Показати public links.
usernames.disabled_usernamesВимкнені username.[]Зазвичай не показувати в публічному UI.
usernames.editable_usernameUsername, який можна редагувати власнику/адміну."romaniaitcommunity"В admin UI ставити в поле editable username.
dateUnix timestamp створення/міграції сутності.1755500986Опційно показувати "created at".
status.@typeСтатус поточного користувача в чаті.chatMemberStatusMemberРоль користувача = member.
status.member_until_dateДо якої дати діє статус (0 = без обмеження).0Не показувати timeout membership.
member_countКількість учасників.2048Показати counter.
boost_levelПоточний boost level.0Показати/сховати boost badge.
has_linked_chatЧи має повʼязаний чат.falseLinked chat section приховати.
has_locationЧи має група геолокацію.falseLocation section приховати.
sign_messagesПідпис повідомлень у чаті.trueПоказувати автора/підпис у повідомленнях.
show_message_senderПоказувати sender у постах.trueВідображати sender line у message cell.
join_to_send_messagesПотрібно вступити, щоб писати.trueЯкщо юзер не member - CTA Join замість composer.
join_by_requestВступ тільки через заявку.falseКнопка Join без flow заявки.
is_slow_mode_enabledЧи активний slow mode.falseSlow mode timer приховати.
is_channelОзнака каналу.falseЦе група, не канал.
is_broadcast_groupОзнака broadcast-group.falseСтандартний груповий UI.
is_forumОзнака форуму з темами.trueВідкривати screen тем, підтримувати message_thread_id.
has_sensitive_contentКонтент 18+/sensitive.falseБез додаткових content warnings.
restriction_reasonПричина обмеження контенту.""Порожньо - не показувати restriction alert.
has_active_storiesЄ активні stories.falseStories ring не показувати.
has_unread_active_storiesЄ непрочитані stories.falseStories unread badge не показувати.

Розшифровка supergroup_full_info (повністю)

ПолеОписПоточне значенняВплив на UI
@typeТип обʼєкта.supergroupFullInfoType guard.
descriptionОпис чату.""About-блок порожній.
member_countКількість учасників.2048Показати в header/about.
administrator_countКількість адміністраторів.0Admin count = 0 або приховати.
restricted_countКількість restricted users.0Moderation counters.
banned_countКількість забанених.0Moderation counters.
linked_chat_idID повʼязаного чату.0Linked chat section приховати.
slow_mode_delayІнтервал slow mode (сек).0Slow mode неактивний.
slow_mode_delay_expires_inЗалишок таймера slow mode.0.0Timer не показувати.
can_enable_paid_reactionЧи можна увімкнути paid reactions.falsePaid reactions toggle заблокований.
can_get_membersЧи можна отримати список учасників.trueMembers tab доступний.
has_hidden_membersЧи прихований список учасників.trueПоказати обмеження видимості member list.
can_hide_membersЧи можна керувати приховуванням members.falseAdmin control hide members недоступний.
can_set_sticker_setЧи можна встановити sticker set.falseSticker set editor недоступний.
can_set_locationЧи можна встановити geolocation.falseLocation editor недоступний.
can_get_statisticsЧи доступна статистика чату.falseStatistics screen приховати.
can_get_revenue_statisticsЧи доступна revenue статистика.falseRevenue section приховати.
can_get_star_revenue_statisticsЧи доступна Star revenue статистика.falseStar revenue section приховати.
can_toggle_aggressive_anti_spamЧи можна керувати aggressive anti-spam.falseAnti-spam toggle недоступний.
is_all_history_availableЧи доступна вся історія новим учасникам.trueПоказати в about як відкриту історію.
can_have_sponsored_messagesЧи можуть бути sponsored messages.trueПідтримувати sponsored marker у future UI.
has_aggressive_anti_spam_enabledФактичний стан aggressive anti-spam.falseAnti-spam status = off.
has_paid_media_allowedЧи дозволений paid media.falsePaid media composer actions вимкнені.
has_pinned_storiesЧи є pinned stories.falsePinned stories block приховати.
my_boost_countСкільки бустів користувач дав чату.0Boost contribution badge = 0.
unrestrict_boost_countСкільки бустів треба для зняття обмежень.0Restriction boost hint не потрібен.
sticker_set_idID sticker set чату."0"Sticker set не заданий.
custom_emoji_sticker_set_idID custom emoji sticker set."0"Custom emoji set не заданий.
bot_commandsСписок команд ботів у чаті.[{"@type":"botCommands","bot_user_id":313092884,"commands":[{"@type":"botCommand","command":"help","description":"Get list of commands"}]}]Заповнювати slash command hints/autocomplete.
upgraded_from_basic_group_idID basic group, з якої мігрували.0Міграції не було.
upgraded_from_max_message_idМаксимальний msg id на момент міграції.0Міграції не було.

Розшифровка bot_commands

ПолеОписПоточне значення
bot_commands[0].@typeТип контейнера команд бота.botCommands
bot_commands[0].bot_user_idUser ID бота, якому належать команди.313092884
bot_commands[0].commands[0].@typeТип обʼєкта команди.botCommand
bot_commands[0].commands[0].commandSlash-команда."help"
bot_commands[0].commands[0].descriptionОпис команди."Get list of commands"

Frontend: Channel Chat (is_channel=true, повний приклад + повний опис полів)

Це приклад get_chat_profile для каналу (type.is_channel=true, supergroup.is_channel=true). Нижче наведено повний payload і повну розшифровку для фронту.

Кореневі поля chat для channel (повністю)

ПолеОписПоточне значенняВплив на фронт
type.is_channelОзнака, що це канал.trueВмикати channel-логіку і read-only composer для неадміна.
view_as_topicsРежим тем у чаті.falseВідкривати звичайну стрічку, не список топіків.
permissionsПрава поточного учасника.усі falseПовністю заблокований composer/action send.
positions[0].list.@typeОсновний список для сортування.chatListMainПозиція в головному списку чатів.
chat_listsНалежність до списків/папок.folder 97 + mainПоказувати badge папки і main.
unread_countНепрочитані повідомлення.45Badge unread.
unread_mention_countНепрочитані згадки.0Mention badge відсутній.
unread_reaction_countНепрочитані реакції.0Reaction badge відсутній.
notification_settings.mute_forЛокальний mute у секундах.376071013Чат має стан muted.
available_reactions.@typeРежим реакцій.chatAvailableReactionsSomeПоказувати тільки whitelist реакцій.
available_reactions.max_reaction_countМаксимум реакцій на меседж.4Обмежити reaction picker.
has_protected_contentЗахист від копіювання/forward.falseForward/save не блокувати цим прапорцем.
profile_photoФото каналу.file_id 4158 + sizesВибирати size за DPI/контейнером.
chat_full_infoДетальний обʼєкт chat.{}Перевіряти на порожній обʼєкт перед рендером.

permissions для channel (повністю)

ПолеПоточне значенняЩо це означає у UI
can_send_basic_messagesfalseText composer вимкнений.
can_send_audiosfalseAudio upload вимкнений.
can_send_documentsfalseFile upload вимкнений.
can_send_photosfalsePhoto upload вимкнений.
can_send_videosfalseVideo upload вимкнений.
can_send_video_notesfalseVideo notes вимкнені.
can_send_voice_notesfalseMic/voice вимкнений.
can_send_pollsfalseCreate poll вимкнений.
can_send_other_messagesfalseGIF/sticker/emoji media вимкнені.
can_add_link_previewsfalseLink preview toggle вимкнений.
can_change_infofalseEdit profile channel hidden/disabled.
can_invite_usersfalseInvite UI hidden/disabled.
can_pin_messagesfalsePin action hidden/disabled.
can_create_topicsfalseCreate topic hidden/disabled (канал без тем).

supergroup для channel (повністю)

ПолеПоточне значенняВплив на фронт
is_channeltrueКанал, не група.
is_forumfalseРежим тем не використовувати.
member_count11696Показувати subscriber count.
boost_level2Показувати boost badge.
has_linked_chattrueПоказувати блок linked chat.
sign_messagesfalseАвтор постів як підпис не показується.
show_message_senderfalseSender line у пості не показувати.
join_to_send_messagestrueДля non-member показати CTA Join.
join_by_requestfalseJoin без заявки.
is_slow_mode_enabledfalseSlow mode індикатор не показувати.
has_sensitive_contentfalseБез sensitive warning.
restriction_reason""Restriction banner не показувати.
has_active_storiesfalseStories ring не показувати.
has_unread_active_storiesfalseStories unread badge не показувати.

supergroup_full_info для channel (повністю)

ПолеПоточне значенняВплив на фронт
descriptionнепорожній текст + посиланняРендерити multi-line about з активними URL.
linked_chat_id-1002435456208Кнопка "Discuss" / перехід у linked chat.
can_get_membersfalseMembers list/tab недоступний.
has_hidden_memberstrueПоказати, що список підписників приховано.
can_enable_paid_reactiontrueAdmin toggle paid reactions може бути доступний.
has_paid_media_allowedtruePaid media можливий у цьому каналі.
has_pinned_storiestrueПоказувати блок pinned stories.
is_all_history_availabletrueВся історія доступна.
can_have_sponsored_messagestrueПідтримувати маркер sponsored posts.
bot_commands[]Slash-command hints не показувати.
can_get_statisticsfalseStatistics розділ приховати.
can_get_revenue_statisticsfalseRevenue statistics приховати.
can_get_star_revenue_statisticsfalseStar revenue statistics приховати.
can_toggle_aggressive_anti_spamfalseAnti-spam toggle недоступний.
sticker_set_id"0"Sticker set не налаштований.
custom_emoji_sticker_set_id"0"Custom emoji set не налаштований.

Frontend: Basic Group Chat (chatTypeBasicGroup, повний приклад + повний опис полів)

Це приклад get_chat_profile для basic group (type.@type=chatTypeBasicGroup). Нижче повний payload та повна розшифровка.

Ключові поля basic group

ПолеПоточне значенняЩо це означає для фронту
type.@typechatTypeBasicGroupРендерити group UI, не channel і не forum.
type.basic_group_id232048874Використовувати для базових group-операцій.
positions[]Позиція може братися з chat_lists/локального сортування.
chat_listsfolder 22 + mainПоказувати належність до папки і main list.
profile_photonullПоказувати fallback avatar з ініціалами.
supergroupnullSupergroup-поля не використовувати.
basic_groupobjectОсновне джерело статусу/типу участі в basic group.
basic_group_full_infoobjectДжерело members/invite link/creator info.
can_be_deleted_only_for_selftrueУ delete-dialog показати локальне видалення як доступне.
can_be_deleted_for_all_userstrueПоказати "delete for all users" як доступну дію (якщо UX це підтримує).
can_be_reportedfalseAction report приховати.

permissions для basic group (повністю)

ПолеПоточне значенняВплив на UI
can_send_basic_messagestrueText composer активний.
can_send_audiostrueAudio upload активний.
can_send_documentstrueFile upload активний.
can_send_photostruePhoto upload активний.
can_send_videostrueVideo upload активний.
can_send_video_notestrueVideo notes активні.
can_send_voice_notestrueMic/voice активний.
can_send_pollstrueCreate poll активний.
can_send_other_messagestrueGIF/sticker/emoji media активні.
can_add_link_previewstrueLink preview toggle активний.
can_change_infotrueEdit group info доступний.
can_invite_userstrueInvite users доступний.
can_pin_messagestruePin message доступний.
can_create_topicstrueCreate topic UI можна показувати, якщо функція підтримується в поточній версії.

basic_group і basic_group_full_info (повністю)

ПолеПоточне значенняВплив на фронт
basic_group.id232048874Груповий ID для карток/кешу.
basic_group.member_count2Показувати member count.
basic_group.status.@typechatMemberStatusCreatorПоточний користувач є creator (адмін максимум).
basic_group.status.custom_title""Кастомний admin title відсутній.
basic_group.status.is_anonymousfalseАнонімний режим адміна вимкнений.
basic_group.status.is_membertrueКористувач є учасником групи.
basic_group.is_activetrueГрупа активна.
basic_group.upgraded_to_supergroup_id0Не мігровано в supergroup.
basic_group_full_info.description""About секція порожня.
basic_group_full_info.creator_user_id410102970Позначити creator у member list.
basic_group_full_info.members2 membersРендер списку учасників з ролями і датами join.
basic_group_full_info.can_hide_membersfalseHide members control недоступний.
basic_group_full_info.can_toggle_aggressive_anti_spamfalseAggressive anti-spam toggle недоступний.
basic_group_full_info.invite_link.invite_linkhttps://t.me/+vCoG9XuaHRs3YTAyПоказати/скопіювати primary invite link.
basic_group_full_info.invite_link.creates_join_requestfalseJoin by direct invite, без заявки.
basic_group_full_info.invite_link.is_primarytrueЦе primary invite link.
basic_group_full_info.invite_link.is_revokedfalseПосилання активне.
basic_group_full_info.bot_commands[]Slash command hints не показувати.

Окремо: якщо поточний користувач адміністратор basic group

Як визначитиЩо дозволити в UIЩо перевіряти додатково
basic_group.status.@type у chatMemberStatusCreator або chatMemberStatusAdministrator Показувати admin tools: edit info, manage members, invite link management, pin messages. Не покладатися лише на permissions; ключова роль - це basic_group.status.
basic_group.status.custom_title непорожній Показувати custom admin badge/title. Fallback на стандартний label "Admin", якщо поле порожнє.
basic_group.status.is_anonymous=true Показувати режим анонімного адміністратора. Пояснити в UI, що повідомлення можуть відправлятись анонімно від групи.
basic_group_full_info.invite_link.is_primary=true Показувати кнопку copy/share primary invite link. Якщо is_revoked=true, ховати copy і пропонувати regenerate.

Важливо: для basic group роль користувача (member/admin/creator) визначається насамперед через basic_group.status. Прапорці permissions описують дозволи в чаті, але не замінюють role-based перевірку для адмінських екранів.