Почти каждый человек в СНГ пользуется телеграмом, но не каждый задумывается о том, на каких костылях держится его любимая платформа. Всё начинается с «печатает...» в избранном, а заканчивается тем, что форумы — лишь иллюзия интерфейса.
Давайте же разберёмся, какие костыли есть в телеграме и почему это скорее хорошие решения.
Избранное и как сделать в нём «печатает»
На первый взгляд это какая‑то отдельная система, у неё ведь даже дизайн уникальный! Но на самом деле это просто чат с самим собой: клиент каждый раз отправляет сообщение сам себе.
«Ну и что в этом костыльного?» задумаются некоторые, а я отвечу: избранные имеют те же возможности, что и обычный чат с пользователем (которым он по факту и является).
«Печатает...»
Большинство функций вполне вписываются в контекст избранных, но есть и исключения, например индикаторы, которые клиент использует для того, чтобы собеседник видел, что вы печатаете или выбираете стикер. Такие статусы можно отправлять и самому себе, просто клиенты намеренно этого не делают, ибо зачем? Но вы можете вручную сделать это!
Отрывок кода
Отрывок кода для библиотеки telethon. Нужно лишь заменить юзернейм на ваш
entity = await client.get_entity("@username") input_peer = utils.get_input_peer(entity) await client(SetTypingRequest( peer=input_peer, action=SendMessageTypingAction() ))
К сожалению умные клиенты для десктопа и мобильных устройств просто игнорируют этот статус для избранных, но вот легковесный веб‑интерфейс ведётся и отображает честное «печатает».

Ещё можно попытаться заблокировать самого себя, что было бы забавно, но тут телеграм за нас заступается и отклоняет запрос.
Костыль тегов
Относительно недавно в избранных стало можно ставить теги на сообщения для удобной сортировки по ним, но на самом деле это тоже магия клиента, ведь эти теги — это просто реакции. Клиент рисует их иначе и разрешает делать по ним поиск
«Вы сделали скриншот!»
Когда в телеграм вводили секретные чаты и фото с одним показом, появилась необходимость защиты от скриншотов. На android уже давно есть возможность запретить делать скриншоты, а на ios её так и не сделали (там есть только событие «скриншот сделан», поэтому команда телеграма решила, что лучше уж уведомить пользователя, что собеседник скриншотит, чем просто промолчать.

Но серверы не ограничивают это сообщение секретными чатами. Его можно отправить кому угодно в личном чате (группы и каналы не поддерживаются)
Отрывок кода
entity = await client.get_entity("@username") input_peer = utils.get_input_peer(entity) await client(SendScreenshotNotificationRequest( peer=input_peer, reply_to=InputReplyToMessage(reply_to_msg_id=0), random_id=int(time.time() * 1000) ))

Так что вы можете разыграть своих друзей фейковым сообщением о скриншоте, от чего они либо удивятся, либо обидятся.
Забавно, что до недавнего времени существовал баг, позволяющий отправлять это уведомление абсолютно кому угодно, даже тем, у кого стоит плата за отправку сообщения. В тот же день баг исправили.
Скриншоты
Форумов не существует
Многим в телеграме понравилась функция форумов, но не многие задумываются, что это тот же чат, а меняется в основном лишь интерфейс. Так как же на самом деле устроен форум?
За словом «Форум» скрывается обычный механизм ответов, который просто докрутили до масштабов целого чата. Отправляя сообщение в тему вы просто отвечаете на первое служебное сообщение в теме, которое отображается как «Тема название создана». Служебное сообщение отличается тем, что является корнем, то есть не является ответом на сообщение
Именно это первое сообщение — фундамент всей иллюзии. Когда админ создает тему, сервер генерирует скрытое сервисное сообщение. Название темы, его иконка и цвет — это не записи в какой‑то отдельной таблице категорий, а просто метаданные этого самого «корня». Хотите переименовать тему? Клиент просто отправляет запрос на редактирование того самого первого сообщения.
А что если зайти со старого клиента? Для этого я скачал версию 4.2.4 и создал тестовый форум, вот результаты:


При сопоставлении скриншотов сразу видно, что старый клиент показывает, что сообщение в «другой теме» является ответом на сервисное сообщение «тема создана».
ID пользователей и каналов
При общении клиента и сервера они оперируют не юзернеймами, а ID пользователя. Он выдаётся каждому пользователю при регистрации аккаунта.
Как отличить пользователя от канала по ID?
Телеграм использует довольно хитрую систему: пользователи, каналы и чаты делят диапазон 8 байтов.
Как отличить:
Пользователи: положительные айди, например 7308887716 у Дурова
Чаты: отрицательный айди, например -52562488111
Каналы и супергруппы: отрицательный айди с префиксом -100, например -1001006503122 у канала дурова
Это позволяет не создавать отдельные флаги при передаче, то есть вся информация влазит в 8 байт.
Миграция с 32 бит на 64 бит
Когда появился телеграм, все эти айди были включены в переменную 32 бит (4 байта), что для того времени хватало, но к концу 2021 ID стремительно закончились. Своевременно весь API мигрировал на версию с 64 бит и всё стало хорошо.
Служебные аккаунты
Служебные аккаунты тоже являются пользователями и имеют свой уникальный ID, вот некоторые из них:
Telegram (ID 777000)
Это аккаунт, который в основном рассылает коды подтверждений и уведомления о входе в аккаунт. Кстати, так как любой аккаунт обязан иметь номер, ему в базу данных внесли несуществующий номер — 42777.
Ответы (ID 1271266957)
Речь идёт о чате, в который пересылаются ответы на ваши комментарии из групп, в которых вы не состоите. Когда вам ответили, телеграм просто пересылает вам сообщение в этот чат, но рисует красивый дизайн на клиенте.
Избранное (ID ваш)
Как и упоминалось ранее, избранное — это ваш чат с самим собой.
Неизвестный пользователь (ID 2666000)
Всё, что вы перешлёте в избранное от пользователей, которые выключили в настройках приватности ссылку на них при пересылке, будет переслано от служебного аккаунта с этим ID.
Анонимный админ (ID 1087968824)
Если админ пишет от имени группы, то его ID подменяется на зарезервированный и клиент, видя его, просто берёт аватарку и название группы для отрисовки.
Павел Дуров (ID 7308887716)
Хоть у Дурова и не служебный аккаунт, но интересно то, что его публичный аккаунт имеет очень новый современный ID.
Вывод
Глядя на обилие магических ID и интерфейсных подпорок, может возникнуть соблазн сказать, что всё это — кривое проектирование. Но спешить не стоит.
Важно понимать: это не Дуров «дурной проектировщик», и не команда Telegram ленится писать чистый код. Напротив, перед нами пример прагматичного инженерного мастерства. В условиях, когда платформой пользуются миллиард человек, любая миграция базы данных или изменение фундамента может стоить денег. А если бы разработчики пытались сразу учесть все нюансы, мы рисковали бы никогда не увидеть любимый телеграм таким, какой он есть.
Команда телеграм идеально реализовала функционал чатов, аккаунтов и каналов. Всё новое просто основано на старом, разница лишь в том, как клиент это рисует.
Комментарии (10)

nin-jin
22.04.2026 18:32А когда вы отправляете несколько фото/видео, то каждое - это отдельное сообщение. А клиент показывает их группой. Поэтому вы не можете изменить состав фотографий после отправки, ибо редактировать можно лишь одно сообщение за раз. Спасибо за такие костыли. Можно мне нормально спроектированный мессенджер?

SashaGonch Автор
22.04.2026 18:32Из-за этого в каналах ещё постоянно показывает в несколько раз больше непрочитанных, чем на самом деле есть

Int_13h
22.04.2026 18:32Когда появился телеграм, все эти айди были включены в переменную 32 бит (4 байта), что для того времени хватало, но к концу 2021 ID стремительно закончились. Своевременно весь API мигрировал на версию с 64 бит и всё стало хорошо.
Ага, получается "Unsupported user" в старом клиенте это те, кто в 32 бита не влез?

SashaGonch Автор
22.04.2026 18:32Ага, это они и есть. Для хоть какой-то совместимости на первое время они стали подменять новых юзеров на неизвестных при отправке старому клиенту.

Marat_Samikov
22.04.2026 18:32"Избранное" сделано на основе чата с самим собой Скайпе. Поэтому такое поведение как раз логично и ожидаемо.

DAumkraft
22.04.2026 18:32Я и в ВК делал чат с самим собой до того как это стало мейнстримом и появились всякие избранные сообщения)



Alex_Burov
Без костылей было бы не то. Может и работоспособное, но явно не то
SashaGonch Автор
Это точно, в конце статьи об этом и говорю