tg_client WebSocket Docs: Domain
← Назад до розділів
Workflow (загальний)
- Frontend підключається до
/ws/chats/.
- Надсилає
{"action":"open_client","userbot_id":...} для старту слухача подій.
- Надсилає команди (
open_dialog, send_message, ...).
- Consumer публікує їх у Redis канал
tg_commands.
- Listener виконує TDLib методи і публікує відповіді в
chat_list_updates.
- 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 | Відео. | Медіа |
searchMessagesFilterVoiceNote | Voice. | Голосові |
searchMessagesFilterPhotoAndVideo | Фото + відео. | Медіа |
searchMessagesFilterUrl | Повідомлення з URL. | Посилання |
searchMessagesFilterChatPhoto | Оновлення фото чату. | Системні |
searchMessagesFilterVideoNote | Video note. | Голосові |
searchMessagesFilterVoiceAndVideoNote | Voice + 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_id | Telegram accent color для чату. | Опціонально стилізувати avatar ring/title badge. |
background_custom_emoji_id | ID custom emoji для background чату, "0" якщо відсутній. | Якщо не "0" - завантажувати відповідний decoration. |
profile_accent_color_id | Accent color профілю чату, -1 якщо дефолт. | Використовувати fallback, якщо значення -1. |
profile_background_custom_emoji_id | Custom 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_topics | UI режим показу як список тем. | Відкривати чат у режимі 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_time | TTL автознищення повідомлень у секундах, 0 = вимкнено. | Показувати current auto-delete value. |
theme_name | Тема чату (якщо застосовується). | Опційно стилізувати чат або ігнорувати пусте значення. |
reply_markup_message_id | ID повідомлення з активним 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 | Дозвіл надсилати текстові повідомлення. | true | Composer активний. |
can_send_audios | Дозвіл надсилати аудіофайли. | true | Audio upload доступний. |
can_send_documents | Дозвіл надсилати документи/файли. | true | File picker доступний. |
can_send_photos | Дозвіл надсилати фото. | true | Photo upload доступний. |
can_send_videos | Дозвіл надсилати відео. | true | Video upload доступний. |
can_send_video_notes | Дозвіл надсилати video notes. | true | Video note action доступний. |
can_send_voice_notes | Дозвіл надсилати voice notes. | true | Мікрофон доступний. |
can_send_polls | Дозвіл створювати опитування. | true | Poll action доступний. |
can_send_other_messages | Дозвіл надсилати sticker/GIF/інші типи. | true | Sticker/GIF picker доступний. |
can_add_link_previews | Дозвіл додавати preview до URL. | true | Toggle preview доступний. |
can_change_info | Дозвіл редагувати назву/опис/аватар. | false | Edit chat profile прихований. |
can_invite_users | Дозвіл запрошувати нових учасників. | true | Invite member доступний. |
can_pin_messages | Дозвіл закріплювати повідомлення. | false | Pin message action заблокований. |
can_create_topics | Дозвіл створювати нові теми. | false | Create 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_for | Mute duration в секундах. | 376070182 | Показувати чат як muted. |
use_default_sound | Використовувати глобальний звук. | true | Local sound picker можна ховати/дизейблити. |
sound_id | ID локального sound. | "-1" | Зазвичай дефолтний звук. |
use_default_show_preview | Використовувати глобальний show preview. | true | Preview toggle наслідує global state. |
show_preview | Локальний прапорець preview. | false | Працює лише якщо use_default_show_preview=false. |
use_default_mute_stories | Використовувати глобальний mute stories. | true | Stories mute контролюється глобальним налаштуванням. |
mute_stories | Локальний mute для stories. | false | Працює лише при use_default_mute_stories=false. |
use_default_story_sound | Використовувати глобальний звук stories. | true | Story sound picker наслідує глобальний. |
story_sound_id | ID звуку stories. | "-1" | Дефолтний story sound. |
use_default_show_story_sender | Використовувати глобальне відображення автора story. | true | Story 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. | true | Mention 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 | Тип обʼєкта супергрупи. | supergroup | Type guard. |
id | ID супергрупи. | 1987658875 | Використовувати у TDLib методах супергрупи. |
usernames.@type | Тип обʼєкта usernames. | usernames | Type guard. |
usernames.active_usernames | Активні username. | ["romaniaitcommunity"] | Показати public links. |
usernames.disabled_usernames | Вимкнені username. | [] | Зазвичай не показувати в публічному UI. |
usernames.editable_username | Username, який можна редагувати власнику/адміну. | "romaniaitcommunity" | В admin UI ставити в поле editable username. |
date | Unix 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 | Чи має повʼязаний чат. | false | Linked chat section приховати. |
has_location | Чи має група геолокацію. | false | Location 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. | false | Slow 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. | false | Stories ring не показувати. |
has_unread_active_stories | Є непрочитані stories. | false | Stories unread badge не показувати. |
Розшифровка supergroup_full_info (повністю)
| Поле | Опис | Поточне значення | Вплив на UI |
@type | Тип обʼєкта. | supergroupFullInfo | Type guard. |
description | Опис чату. | "" | About-блок порожній. |
member_count | Кількість учасників. | 2048 | Показати в header/about. |
administrator_count | Кількість адміністраторів. | 0 | Admin count = 0 або приховати. |
restricted_count | Кількість restricted users. | 0 | Moderation counters. |
banned_count | Кількість забанених. | 0 | Moderation counters. |
linked_chat_id | ID повʼязаного чату. | 0 | Linked chat section приховати. |
slow_mode_delay | Інтервал slow mode (сек). | 0 | Slow mode неактивний. |
slow_mode_delay_expires_in | Залишок таймера slow mode. | 0.0 | Timer не показувати. |
can_enable_paid_reaction | Чи можна увімкнути paid reactions. | false | Paid reactions toggle заблокований. |
can_get_members | Чи можна отримати список учасників. | true | Members tab доступний. |
has_hidden_members | Чи прихований список учасників. | true | Показати обмеження видимості member list. |
can_hide_members | Чи можна керувати приховуванням members. | false | Admin control hide members недоступний. |
can_set_sticker_set | Чи можна встановити sticker set. | false | Sticker set editor недоступний. |
can_set_location | Чи можна встановити geolocation. | false | Location editor недоступний. |
can_get_statistics | Чи доступна статистика чату. | false | Statistics screen приховати. |
can_get_revenue_statistics | Чи доступна revenue статистика. | false | Revenue section приховати. |
can_get_star_revenue_statistics | Чи доступна Star revenue статистика. | false | Star revenue section приховати. |
can_toggle_aggressive_anti_spam | Чи можна керувати aggressive anti-spam. | false | Anti-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. | false | Anti-spam status = off. |
has_paid_media_allowed | Чи дозволений paid media. | false | Paid media composer actions вимкнені. |
has_pinned_stories | Чи є pinned stories. | false | Pinned stories block приховати. |
my_boost_count | Скільки бустів користувач дав чату. | 0 | Boost contribution badge = 0. |
unrestrict_boost_count | Скільки бустів треба для зняття обмежень. | 0 | Restriction boost hint не потрібен. |
sticker_set_id | ID sticker set чату. | "0" | Sticker set не заданий. |
custom_emoji_sticker_set_id | ID 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_id | ID basic group, з якої мігрували. | 0 | Міграції не було. |
upgraded_from_max_message_id | Максимальний msg id на момент міграції. | 0 | Міграції не було. |
Розшифровка bot_commands
| Поле | Опис | Поточне значення |
bot_commands[0].@type | Тип контейнера команд бота. | botCommands |
bot_commands[0].bot_user_id | User ID бота, якому належать команди. | 313092884 |
bot_commands[0].commands[0].@type | Тип обʼєкта команди. | botCommand |
bot_commands[0].commands[0].command | Slash-команда. | "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 | Непрочитані повідомлення. | 45 | Badge unread. |
unread_mention_count | Непрочитані згадки. | 0 | Mention badge відсутній. |
unread_reaction_count | Непрочитані реакції. | 0 | Reaction 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. | false | Forward/save не блокувати цим прапорцем. |
profile_photo | Фото каналу. | file_id 4158 + sizes | Вибирати size за DPI/контейнером. |
chat_full_info | Детальний обʼєкт chat. | {} | Перевіряти на порожній обʼєкт перед рендером. |
permissions для channel (повністю)
| Поле | Поточне значення | Що це означає у UI |
can_send_basic_messages | false | Text composer вимкнений. |
can_send_audios | false | Audio upload вимкнений. |
can_send_documents | false | File upload вимкнений. |
can_send_photos | false | Photo upload вимкнений. |
can_send_videos | false | Video upload вимкнений. |
can_send_video_notes | false | Video notes вимкнені. |
can_send_voice_notes | false | Mic/voice вимкнений. |
can_send_polls | false | Create poll вимкнений. |
can_send_other_messages | false | GIF/sticker/emoji media вимкнені. |
can_add_link_previews | false | Link preview toggle вимкнений. |
can_change_info | false | Edit profile channel hidden/disabled. |
can_invite_users | false | Invite UI hidden/disabled. |
can_pin_messages | false | Pin action hidden/disabled. |
can_create_topics | false | Create topic hidden/disabled (канал без тем). |
supergroup для channel (повністю)
| Поле | Поточне значення | Вплив на фронт |
is_channel | true | Канал, не група. |
is_forum | false | Режим тем не використовувати. |
member_count | 11696 | Показувати subscriber count. |
boost_level | 2 | Показувати boost badge. |
has_linked_chat | true | Показувати блок linked chat. |
sign_messages | false | Автор постів як підпис не показується. |
show_message_sender | false | Sender line у пості не показувати. |
join_to_send_messages | true | Для non-member показати CTA Join. |
join_by_request | false | Join без заявки. |
is_slow_mode_enabled | false | Slow mode індикатор не показувати. |
has_sensitive_content | false | Без sensitive warning. |
restriction_reason | "" | Restriction banner не показувати. |
has_active_stories | false | Stories ring не показувати. |
has_unread_active_stories | false | Stories unread badge не показувати. |
supergroup_full_info для channel (повністю)
| Поле | Поточне значення | Вплив на фронт |
description | непорожній текст + посилання | Рендерити multi-line about з активними URL. |
linked_chat_id | -1002435456208 | Кнопка "Discuss" / перехід у linked chat. |
can_get_members | false | Members list/tab недоступний. |
has_hidden_members | true | Показати, що список підписників приховано. |
can_enable_paid_reaction | true | Admin toggle paid reactions може бути доступний. |
has_paid_media_allowed | true | Paid media можливий у цьому каналі. |
has_pinned_stories | true | Показувати блок pinned stories. |
is_all_history_available | true | Вся історія доступна. |
can_have_sponsored_messages | true | Підтримувати маркер sponsored posts. |
bot_commands | [] | Slash-command hints не показувати. |
can_get_statistics | false | Statistics розділ приховати. |
can_get_revenue_statistics | false | Revenue statistics приховати. |
can_get_star_revenue_statistics | false | Star revenue statistics приховати. |
can_toggle_aggressive_anti_spam | false | Anti-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.@type | chatTypeBasicGroup | Рендерити group UI, не channel і не forum. |
type.basic_group_id | 232048874 | Використовувати для базових group-операцій. |
positions | [] | Позиція може братися з chat_lists/локального сортування. |
chat_lists | folder 22 + main | Показувати належність до папки і main list. |
profile_photo | null | Показувати fallback avatar з ініціалами. |
supergroup | null | Supergroup-поля не використовувати. |
basic_group | object | Основне джерело статусу/типу участі в basic group. |
basic_group_full_info | object | Джерело members/invite link/creator info. |
can_be_deleted_only_for_self | true | У delete-dialog показати локальне видалення як доступне. |
can_be_deleted_for_all_users | true | Показати "delete for all users" як доступну дію (якщо UX це підтримує). |
can_be_reported | false | Action report приховати. |
permissions для basic group (повністю)
| Поле | Поточне значення | Вплив на UI |
can_send_basic_messages | true | Text composer активний. |
can_send_audios | true | Audio upload активний. |
can_send_documents | true | File upload активний. |
can_send_photos | true | Photo upload активний. |
can_send_videos | true | Video upload активний. |
can_send_video_notes | true | Video notes активні. |
can_send_voice_notes | true | Mic/voice активний. |
can_send_polls | true | Create poll активний. |
can_send_other_messages | true | GIF/sticker/emoji media активні. |
can_add_link_previews | true | Link preview toggle активний. |
can_change_info | true | Edit group info доступний. |
can_invite_users | true | Invite users доступний. |
can_pin_messages | true | Pin message доступний. |
can_create_topics | true | Create topic UI можна показувати, якщо функція підтримується в поточній версії. |
basic_group і basic_group_full_info (повністю)
| Поле | Поточне значення | Вплив на фронт |
basic_group.id | 232048874 | Груповий ID для карток/кешу. |
basic_group.member_count | 2 | Показувати member count. |
basic_group.status.@type | chatMemberStatusCreator | Поточний користувач є creator (адмін максимум). |
basic_group.status.custom_title | "" | Кастомний admin title відсутній. |
basic_group.status.is_anonymous | false | Анонімний режим адміна вимкнений. |
basic_group.status.is_member | true | Користувач є учасником групи. |
basic_group.is_active | true | Група активна. |
basic_group.upgraded_to_supergroup_id | 0 | Не мігровано в supergroup. |
basic_group_full_info.description | "" | About секція порожня. |
basic_group_full_info.creator_user_id | 410102970 | Позначити creator у member list. |
basic_group_full_info.members | 2 members | Рендер списку учасників з ролями і датами join. |
basic_group_full_info.can_hide_members | false | Hide members control недоступний. |
basic_group_full_info.can_toggle_aggressive_anti_spam | false | Aggressive anti-spam toggle недоступний. |
basic_group_full_info.invite_link.invite_link | https://t.me/+vCoG9XuaHRs3YTAy | Показати/скопіювати primary invite link. |
basic_group_full_info.invite_link.creates_join_request | false | Join by direct invite, без заявки. |
basic_group_full_info.invite_link.is_primary | true | Це primary invite link. |
basic_group_full_info.invite_link.is_revoked | false | Посилання активне. |
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 перевірку для адмінських екранів.