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 Віддає список чатів з останнім повідомленням і метаданими.
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.
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":"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":"delete_chat","userbot_id":1,"chat_id":"123","revoke":true,"remove_from_chat_list":true}
{"action":"leave_chat","userbot_id":1,"chat_id":"123"}

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.

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

{"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"}

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.
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.
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.
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.

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

{"action":"search_user","userbot_id":1,"username":"durov"}
{"action":"create_private_chat","userbot_id":1,"user_id":777000,"force":false}
{"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":"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":"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}}

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 типи.

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