tg_client WebSocket Docs: Domain

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

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

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

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

Client Session

ActionЩо приймаєЩо повертаєЩо робить
open_client userbot_id Починає стрім подій у цей WS (початково connected) Підписує consumer на chat_list_updates для вказаного userbot.

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

{
  "action": "open_client",
  "userbot_ids": [1,2,3]
}

Channel Commands

ActionЩо приймаєЩо повертаєЩо робить
get_chats userbot_id, опц. chat_list get_chats (потік елементів чату), або get_chats_error Віддає список чатів з останнім повідомленням і метаданими.
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 getChatsForChatFolderInviteLink).
get_chat_folder_invite_links userbot_id, chat_folder_id get_chat_folder_invite_links / get_chat_folder_invite_links_error Повертає список існуючих invite links для папки (TDLib getChatFolderInviteLinks).
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 createChatFolderInviteLink.
delete_chat userbot_id, chat_id, опц. revoke, remove_from_chat_list delete_chat / delete_chat_error Очищає історію чату (і за параметрами прибирає зі списку).
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":"getChatsForChatFolderInviteLink","userbot_id":1,"chat_folder_id":2}
{"action":"getChatFolderInviteLinks","userbot_id":1,"chat_folder_id":2}
{"action":"createChatFolderInviteLink","userbot_id":1,"chat_folder_id":2,"name":"Команда","chat_ids":[-1001234567890,-1009876543210]}
{"action":"delete_chat","userbot_id":1,"chat_id":"123","revoke":true,"remove_from_chat_list":true}
{"action":"leave_chat","userbot_id":1,"chat_id":"123"}

Для get_chats і get_recently_opened_chats аватарка чату догружається окремо подією media_ready з полем path (URL) та chat_id.

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 Потік: message, опц. pinned_message, pagination_setup, dialog_end; або dialog_empty/dialog_error Завантажує історію чату/топіку, мапить у domain payload і надсилає порціями.
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":"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 або датою).

Message Commands

ActionЩо приймаєЩо повертаєЩо робить
send_message userbot_id, chat_id, text, опц. entities send_message / send_message_error Відправляє текстове повідомлення в чат.
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[] 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":"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"]}
{"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_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, wait_media_ready get_stickers_pack / get_stickers_pack_error (+ опц. media_ready) Повертає згруповані паки емоджі/стікерів (включно з premium/recommended). У режимі без with_lottie бекенд може догружати медіа окремими подіями media_ready.

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

{"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_recent_stickers","userbot_id":1,"is_attached":false}
{"action":"get_stickers_pack","userbot_id":1,"query":"","limit":20,"offset":0,"with_lottie":false,"wait_media_ready":true}

User / Chat Profiles / Contacts

ActionЩо приймаєЩо повертаєЩо робить
search_user userbot_id, username search_user / search_user_error Пошук публічного чату/юзера за username.
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.
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.
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":"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":"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":"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_user

{
  "type": "chat_update",
  "payload": {
    "type": "get_user",
    "result": {
      "@type": "user",
      "id": 777000,
      "parsed_status": "recently",
      "last_seen": null,
      "profile_photo": {"type":"profilePhoto","file_id":123,"sizes":[...]},
      "full_info": {"@type":"userFullInfo", "...":"..."}
    }
    }
}

create_private_chat

{
  "type": "chat_update",
  "payload": {
    "type": "create_private_chat",
    "result": {
      "@type": "chat",
      "id": 123456789,
      "type": {"@type": "chatTypePrivate", "user_id": 777000}
    }
  }
}

get_chat_profile

{
  "type": "chat_update",
  "payload": {
    "type": "get_chat_profile",
    "result": {
      "@type": "chat",
      "id": -1001234567890,
      "profile_photo": {"type":"profilePhoto","file_id":456,"sizes":[...]},
      "chat_full_info": {"@type":"chatFullInfo", "...":"..."},
      "supergroup": {"@type":"supergroup", "...":"..."},
      "supergroup_full_info": {"@type":"supergroupFullInfo", "...":"..."},
      "basic_group": null,
      "basic_group_full_info": null
    }
  }
}

get_chat_recent_actions

{
  "type": "chat_update",
  "payload": {
    "type": "get_chat_recent_actions",
    "result": {
      "chat_id": "-1001234567890",
      "chat_type": "chatTypeSupergroup",
      "is_channel": true,
      "query": "",
      "from_event_id": 0,
      "limit": 50,
      "count": 2,
      "next_from_event_id": "987654321",
      "events": [
        {
          "id": "987654322",
          "date": 1730000000,
          "timestamp": "27.10.2024 10:13",
          "actor": {"type":"user","user_id":1,"first_name":"Ivan","last_name":"Petrenko","full_name":"Ivan Petrenko","username":"ivan"},
          "action_type": "chatEventMessagePinned",
          "action_title_uk": "Закріплено повідомлення",
          "text_uk": "Ivan Petrenko — Закріплено повідомлення",
          "details": {"pinned_message":{"msg_id":123,"text":"Важливе повідомлення","type_msg":"messageText","content":[]}}
        }
      ],
      "raw_events": [
        {"@type":"chatEvent","id":"987654322","date":1730000000,"member_id":{"@type":"messageSenderUser","user_id":1},"action":{"@type":"chatEventMessagePinned","message":{}}}
      ]
    }
  }
}

import_contacts

{
  "type": "chat_update",
  "payload": {
    "type": "import_contacts",
    "result": {
      "@type": "importedContacts",
      "user_ids": [777000],
      "importer_count": [0],
      "requested_contact": {
        "phone_number": "+380991112233",
        "first_name": "Ivan",
        "last_name": "Petrenko",
        "vcard": "",
        "user_id": 0
      },
      "contacts": [
        {
          "user_id": 777000,
          "phone_number": "+380991112233",
          "first_name": "Pavel",
          "last_name": "Durov",
          "username": "durov",
          "profile": {"id": 777000, "...": "..."}
        }
      ]
    }
  }
}

block_user

{
  "type": "chat_update",
  "payload": {
    "type": "block_user",
    "result": {"@type": "ok"}
  }
}

get_chat_members

{
  "type": "chat_update",
  "payload": {
    "type": "get_chat_members",
    "result": {
      "chat_id": "-1001234567890",
      "chat_type": "chatTypeSupergroup",
      "query": "",
      "filter": "recent",
      "offset": 0,
      "limit": 30,
      "count": 30,
      "total_count": 154,
      "next_offset": 30,
      "members": [
        {
          "sender_type": "user",
          "user_id": 123456,
          "first_name": "Andrey",
          "last_name": "Marchenko",
          "full_name": "Andrey Marchenko",
          "username": "andrey",
          "phone_number": "+380...",
          "parsed_status": "online",
          "last_seen": null,
          "member_status": {"type":"chatMemberStatusAdministrator","role":"admin","custom_title":"модер"}
        }
      ]
    }
  }
}

Фільтри для 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 без скорочень і повну розшифровку.

Повний result приклад для forum chat

{
  "@type": "chat",
  "id": -1001987658875,
  "type": {
    "@type": "chatTypeSupergroup",
    "supergroup_id": 1987658875,
    "is_channel": false
  },
  "title": "Румыния ИТ чат 🇺🇦🇷🇴🇪🇺",
  "accent_color_id": 6,
  "background_custom_emoji_id": "0",
  "profile_accent_color_id": -1,
  "profile_background_custom_emoji_id": "0",
  "permissions": {
    "@type": "chatPermissions",
    "can_send_basic_messages": true,
    "can_send_audios": true,
    "can_send_documents": true,
    "can_send_photos": true,
    "can_send_videos": true,
    "can_send_video_notes": true,
    "can_send_voice_notes": true,
    "can_send_polls": true,
    "can_send_other_messages": true,
    "can_add_link_previews": true,
    "can_change_info": false,
    "can_invite_users": true,
    "can_pin_messages": false,
    "can_create_topics": false
  },
  "positions": [
    {
      "@type": "chatPosition",
      "list": {
        "@type": "chatListMain"
      },
      "order": "7608161469645737115",
      "is_pinned": false
    }
  ],
  "chat_lists": [
    {
      "@type": "chatListFolder",
      "chat_folder_id": 22
    },
    {
      "@type": "chatListFolder",
      "chat_folder_id": 97
    },
    {
      "@type": "chatListMain"
    }
  ],
  "message_sender_id": {
    "@type": "messageSenderUser",
    "user_id": 410102970
  },
  "has_protected_content": false,
  "is_translatable": false,
  "is_marked_as_unread": false,
  "view_as_topics": true,
  "has_scheduled_messages": false,
  "can_be_deleted_only_for_self": false,
  "can_be_deleted_for_all_users": false,
  "can_be_reported": true,
  "default_disable_notification": false,
  "unread_count": 4417,
  "last_read_inbox_message_id": 840411643904,
  "last_read_outbox_message_id": 845165887488,
  "unread_mention_count": 0,
  "unread_reaction_count": 0,
  "notification_settings": {
    "@type": "chatNotificationSettings",
    "use_default_mute_for": false,
    "mute_for": 376070182,
    "use_default_sound": true,
    "sound_id": "-1",
    "use_default_show_preview": true,
    "show_preview": false,
    "use_default_mute_stories": true,
    "mute_stories": false,
    "use_default_story_sound": true,
    "story_sound_id": "-1",
    "use_default_show_story_sender": true,
    "show_story_sender": true,
    "use_default_disable_pinned_message_notifications": true,
    "disable_pinned_message_notifications": false,
    "use_default_disable_mention_notifications": true,
    "disable_mention_notifications": false
  },
  "available_reactions": {
    "@type": "chatAvailableReactionsAll",
    "max_reaction_count": 11
  },
  "message_auto_delete_time": 0,
  "theme_name": "",
  "reply_markup_message_id": 0,
  "client_data": "",
  "profile_photo": {
    "type": "profilePhoto",
    "file_id": 4390,
    "sizes": [
      {
        "file_id": 4390,
        "type": "a",
        "width": 160,
        "height": 160
      },
      {
        "file_id": 4391,
        "type": "b",
        "width": 320,
        "height": 320
      },
      {
        "file_id": 4392,
        "type": "c",
        "width": 640,
        "height": 640
      }
    ],
    "width": 160,
    "height": 160
  },
  "chat_full_info": {},
  "supergroup": {
    "@type": "supergroup",
    "id": 1987658875,
    "usernames": {
      "@type": "usernames",
      "active_usernames": [
        "romaniaitcommunity"
      ],
      "disabled_usernames": [],
      "editable_username": "romaniaitcommunity"
    },
    "date": 1755500986,
    "status": {
      "@type": "chatMemberStatusMember",
      "member_until_date": 0
    },
    "member_count": 2048,
    "boost_level": 0,
    "has_linked_chat": false,
    "has_location": false,
    "sign_messages": true,
    "show_message_sender": true,
    "join_to_send_messages": true,
    "join_by_request": false,
    "is_slow_mode_enabled": false,
    "is_channel": false,
    "is_broadcast_group": false,
    "is_forum": true,
    "has_sensitive_content": false,
    "restriction_reason": "",
    "has_active_stories": false,
    "has_unread_active_stories": false
  },
  "supergroup_full_info": {
    "@type": "supergroupFullInfo",
    "description": "",
    "member_count": 2048,
    "administrator_count": 0,
    "restricted_count": 0,
    "banned_count": 0,
    "linked_chat_id": 0,
    "slow_mode_delay": 0,
    "slow_mode_delay_expires_in": 0.0,
    "can_enable_paid_reaction": false,
    "can_get_members": true,
    "has_hidden_members": true,
    "can_hide_members": false,
    "can_set_sticker_set": false,
    "can_set_location": false,
    "can_get_statistics": false,
    "can_get_revenue_statistics": false,
    "can_get_star_revenue_statistics": false,
    "can_toggle_aggressive_anti_spam": false,
    "is_all_history_available": true,
    "can_have_sponsored_messages": true,
    "has_aggressive_anti_spam_enabled": false,
    "has_paid_media_allowed": false,
    "has_pinned_stories": false,
    "my_boost_count": 0,
    "unrestrict_boost_count": 0,
    "sticker_set_id": "0",
    "custom_emoji_sticker_set_id": "0",
    "bot_commands": [
      {
        "@type": "botCommands",
        "bot_user_id": 313092884,
        "commands": [
          {
            "@type": "botCommand",
            "command": "help",
            "description": "Get list of commands"
          }
        ]
      }
    ],
    "upgraded_from_basic_group_id": 0,
    "upgraded_from_max_message_id": 0
  },
  "basic_group": null,
  "basic_group_full_info": null
}

Розшифровка кореневих полів 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 і повну розшифровку для фронту.

Повний result приклад для channel

{
  "@type": "chat",
  "id": -1001938032452,
  "type": {
    "@type": "chatTypeSupergroup",
    "supergroup_id": 1938032452,
    "is_channel": true
  },
  "title": "АРЕНДА КВАРТИР БУХАРЕСТ | снять жильё в Румынии | недвижимость Румыния",
  "accent_color_id": 1,
  "background_custom_emoji_id": "0",
  "profile_accent_color_id": -1,
  "profile_background_custom_emoji_id": "0",
  "permissions": {
    "@type": "chatPermissions",
    "can_send_basic_messages": false,
    "can_send_audios": false,
    "can_send_documents": false,
    "can_send_photos": false,
    "can_send_videos": false,
    "can_send_video_notes": false,
    "can_send_voice_notes": false,
    "can_send_polls": false,
    "can_send_other_messages": false,
    "can_add_link_previews": false,
    "can_change_info": false,
    "can_invite_users": false,
    "can_pin_messages": false,
    "can_create_topics": false
  },
  "positions": [
    {
      "@type": "chatPosition",
      "list": {
        "@type": "chatListMain"
      },
      "order": "7607748611618656527",
      "is_pinned": false
    }
  ],
  "chat_lists": [
    {
      "@type": "chatListFolder",
      "chat_folder_id": 97
    },
    {
      "@type": "chatListMain"
    }
  ],
  "has_protected_content": false,
  "is_translatable": false,
  "is_marked_as_unread": false,
  "view_as_topics": false,
  "has_scheduled_messages": false,
  "can_be_deleted_only_for_self": false,
  "can_be_deleted_for_all_users": false,
  "can_be_reported": true,
  "default_disable_notification": false,
  "unread_count": 45,
  "last_read_inbox_message_id": 21702377472,
  "last_read_outbox_message_id": 2251799812636672,
  "unread_mention_count": 0,
  "unread_reaction_count": 0,
  "notification_settings": {
    "@type": "chatNotificationSettings",
    "use_default_mute_for": false,
    "mute_for": 376071013,
    "use_default_sound": true,
    "sound_id": "-1",
    "use_default_show_preview": true,
    "show_preview": false,
    "use_default_mute_stories": true,
    "mute_stories": false,
    "use_default_story_sound": true,
    "story_sound_id": "-1",
    "use_default_show_story_sender": true,
    "show_story_sender": true,
    "use_default_disable_pinned_message_notifications": true,
    "disable_pinned_message_notifications": false,
    "use_default_disable_mention_notifications": true,
    "disable_mention_notifications": false
  },
  "available_reactions": {
    "@type": "chatAvailableReactionsSome",
    "reactions": [
      {
        "@type": "reactionTypePaid"
      },
      {
        "@type": "reactionTypeEmoji",
        "emoji": "❤"
      },
      {
        "@type": "reactionTypeEmoji",
        "emoji": "👍"
      },
      {
        "@type": "reactionTypeEmoji",
        "emoji": "🔥"
      },
      {
        "@type": "reactionTypeEmoji",
        "emoji": "🥰"
      },
      {
        "@type": "reactionTypeEmoji",
        "emoji": "👏"
      },
      {
        "@type": "reactionTypeEmoji",
        "emoji": "😱"
      },
      {
        "@type": "reactionTypeEmoji",
        "emoji": "🎉"
      },
      {
        "@type": "reactionTypeEmoji",
        "emoji": "🤩"
      },
      {
        "@type": "reactionTypeEmoji",
        "emoji": "🙏"
      },
      {
        "@type": "reactionTypeEmoji",
        "emoji": "👌"
      },
      {
        "@type": "reactionTypeEmoji",
        "emoji": "😍"
      }
    ],
    "max_reaction_count": 4
  },
  "message_auto_delete_time": 0,
  "theme_name": "",
  "reply_markup_message_id": 0,
  "client_data": "",
  "profile_photo": {
    "type": "profilePhoto",
    "file_id": 4158,
    "sizes": [
      {
        "file_id": 4158,
        "type": "a",
        "width": 160,
        "height": 160
      },
      {
        "file_id": 4159,
        "type": "b",
        "width": 320,
        "height": 320
      },
      {
        "file_id": 4160,
        "type": "c",
        "width": 640,
        "height": 640
      }
    ],
    "width": 160,
    "height": 160
  },
  "chat_full_info": {},
  "supergroup": {
    "@type": "supergroup",
    "id": 1938032452,
    "usernames": {
      "@type": "usernames",
      "active_usernames": [
        "arenda_bucharest",
        "rent_ro",
        "nedvizhimost_romania",
        "bucharest_homes",
        "kvartira_bucharest",
        "arenda_militari_chiajna",
        "rent_romania",
        "arenda_kvartir_romania",
        "arenda_chiajna",
        "apartaments_romania"
      ],
      "disabled_usernames": [],
      "editable_username": "arenda_bucharest"
    },
    "date": 1722159227,
    "status": {
      "@type": "chatMemberStatusMember",
      "member_until_date": 0
    },
    "member_count": 11696,
    "boost_level": 2,
    "has_linked_chat": true,
    "has_location": false,
    "sign_messages": false,
    "show_message_sender": false,
    "join_to_send_messages": true,
    "join_by_request": false,
    "is_slow_mode_enabled": false,
    "is_channel": true,
    "is_broadcast_group": false,
    "is_forum": false,
    "has_sensitive_content": false,
    "restriction_reason": "",
    "has_active_stories": false,
    "has_unread_active_stories": false
  },
  "supergroup_full_info": {
    "@type": "supergroupFullInfo",
    "description": "🏙 Снять квартиру в Бухаресте легко!\n\n✨ Новые варианты каждый день — только проверенные объекты\n\n💬 WhatsApp\n🇷🇴 +40 750 263 266\nhttps://wa.me/40750263266\n\n✈️ Telegram\nt.me/realtor_militari_bot\n\n🏠 Канал с квартирами\nt.me/rent_ro",
    "member_count": 11696,
    "administrator_count": 0,
    "restricted_count": 0,
    "banned_count": 0,
    "linked_chat_id": -1002435456208,
    "slow_mode_delay": 0,
    "slow_mode_delay_expires_in": 0.0,
    "can_enable_paid_reaction": true,
    "can_get_members": false,
    "has_hidden_members": true,
    "can_hide_members": false,
    "can_set_sticker_set": false,
    "can_set_location": false,
    "can_get_statistics": false,
    "can_get_revenue_statistics": false,
    "can_get_star_revenue_statistics": false,
    "can_toggle_aggressive_anti_spam": false,
    "is_all_history_available": true,
    "can_have_sponsored_messages": true,
    "has_aggressive_anti_spam_enabled": false,
    "has_paid_media_allowed": true,
    "has_pinned_stories": true,
    "my_boost_count": 0,
    "unrestrict_boost_count": 0,
    "sticker_set_id": "0",
    "custom_emoji_sticker_set_id": "0",
    "bot_commands": [],
    "upgraded_from_basic_group_id": 0,
    "upgraded_from_max_message_id": 0
  },
  "basic_group": null,
  "basic_group_full_info": null
}

Кореневі поля 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 та повна розшифровка.

Повний result приклад для basic group

{
  "@type": "chat",
  "id": -232048874,
  "type": {
    "@type": "chatTypeBasicGroup",
    "basic_group_id": 232048874
  },
  "title": "Братья во Христе",
  "accent_color_id": 1,
  "background_custom_emoji_id": "0",
  "profile_accent_color_id": -1,
  "profile_background_custom_emoji_id": "0",
  "permissions": {
    "@type": "chatPermissions",
    "can_send_basic_messages": true,
    "can_send_audios": true,
    "can_send_documents": true,
    "can_send_photos": true,
    "can_send_videos": true,
    "can_send_video_notes": true,
    "can_send_voice_notes": true,
    "can_send_polls": true,
    "can_send_other_messages": true,
    "can_add_link_previews": true,
    "can_change_info": true,
    "can_invite_users": true,
    "can_pin_messages": true,
    "can_create_topics": true
  },
  "positions": [],
  "chat_lists": [
    {
      "@type": "chatListFolder",
      "chat_folder_id": 22
    },
    {
      "@type": "chatListMain"
    }
  ],
  "has_protected_content": false,
  "is_translatable": false,
  "is_marked_as_unread": false,
  "view_as_topics": false,
  "has_scheduled_messages": false,
  "can_be_deleted_only_for_self": true,
  "can_be_deleted_for_all_users": true,
  "can_be_reported": false,
  "default_disable_notification": false,
  "unread_count": 0,
  "last_read_inbox_message_id": 117958508544,
  "last_read_outbox_message_id": 1012791246848,
  "unread_mention_count": 0,
  "unread_reaction_count": 0,
  "notification_settings": {
    "@type": "chatNotificationSettings",
    "use_default_mute_for": true,
    "mute_for": 0,
    "use_default_sound": true,
    "sound_id": "-1",
    "use_default_show_preview": true,
    "show_preview": false,
    "use_default_mute_stories": true,
    "mute_stories": false,
    "use_default_story_sound": true,
    "story_sound_id": "-1",
    "use_default_show_story_sender": true,
    "show_story_sender": true,
    "use_default_disable_pinned_message_notifications": true,
    "disable_pinned_message_notifications": false,
    "use_default_disable_mention_notifications": true,
    "disable_mention_notifications": false
  },
  "available_reactions": {
    "@type": "chatAvailableReactionsAll",
    "max_reaction_count": 11
  },
  "message_auto_delete_time": 0,
  "theme_name": "",
  "reply_markup_message_id": 0,
  "client_data": "",
  "profile_photo": null,
  "chat_full_info": {},
  "supergroup": null,
  "supergroup_full_info": null,
  "basic_group": {
    "@type": "basicGroup",
    "id": 232048874,
    "member_count": 2,
    "status": {
      "@type": "chatMemberStatusCreator",
      "custom_title": "",
      "is_anonymous": false,
      "is_member": true
    },
    "is_active": true,
    "upgraded_to_supergroup_id": 0
  },
  "basic_group_full_info": {
    "@type": "basicGroupFullInfo",
    "description": "",
    "creator_user_id": 410102970,
    "members": [
      {
        "@type": "chatMember",
        "member_id": {
          "@type": "messageSenderUser",
          "user_id": 371611338
        },
        "inviter_user_id": 483030274,
        "joined_chat_date": 1516898518,
        "status": {
          "@type": "chatMemberStatusMember",
          "member_until_date": 0
        }
      },
      {
        "@type": "chatMember",
        "member_id": {
          "@type": "messageSenderUser",
          "user_id": 410102970
        },
        "inviter_user_id": 410102970,
        "joined_chat_date": 1516898215,
        "status": {
          "@type": "chatMemberStatusCreator",
          "custom_title": "",
          "is_anonymous": false,
          "is_member": true
        }
      }
    ],
    "can_hide_members": false,
    "can_toggle_aggressive_anti_spam": false,
    "invite_link": {
      "@type": "chatInviteLink",
      "invite_link": "https://t.me/+vCoG9XuaHRs3YTAy",
      "name": "",
      "creator_user_id": 410102970,
      "date": 1623860436,
      "edit_date": 0,
      "expiration_date": 0,
      "member_limit": 0,
      "member_count": 0,
      "expired_member_count": 0,
      "pending_join_request_count": 0,
      "creates_join_request": false,
      "is_primary": true,
      "is_revoked": false
    },
    "bot_commands": []
  }
}

Ключові поля 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 перевірку для адмінських екранів.