Русский
Открыть в Telegram
ББиблиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter

✅ Высокое доверие
@phpproglib · канал · Технологии · в индексе с 19.05.2026
10 447подписчиков−15 за неделю
1 293средний охват поста
12.4%ER — охват к подписчикам
16постов за 30 дней
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Фотография
Общая папка для работы Claude Code и Codex Луи-Франсуа Бушар собрал заметки, инструкции-скиллы, скрипты и итоги встреч в Obsidian. Его связка устроена так: Папка хранит исходные материалы и решения ↓ Индекс указывает, где искать данные для задачи ↓ Claude Code планирует работу ↓ Codex выполняет задачи по его вызову В описании этого рабочего процесса Бушар объясняет, зачем даёт агенту сведения для конкретной задачи. Начать предлагает с общей папки, короткого индекса и одного повторно используемого скилла. #ии #инструменты
10 · 856 ·
Б
Б
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
🧑‍💻 Какие навыки помогают вам в разработке в 2026 году? Что вы чаще используете в работе? В каких задачах помогает ИИ, а где проще справиться самостоятельно? Мы решили собрать портрет современного разработчика — и приглашаем вас поделиться своим опытом. Расскажите, какие навыки вам пригодились и как вы используете ИИ. Если обходите его стороной, нам тоже интересно узнать почему. Опрос анонимный и займёт около 5 минут. Результаты опубликуем в общем большом исследовании. 👉 Пройти опрос
807 ·
Б
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Фотография
Лимит запросов в Symfony: где хранится запас токенов Token bucket допускает всплеск запросов, пока есть токены, а затем пополняет запас с заданной частотой. В локальном примере запас равен двум: первые два запроса разрешены, третий отклонён. Через 1,1 секунды появился новый токен. Но настройка лимита — только половина дела. Остаток хранится в состоянии лимитера. В Symfony по умолчанию это cache.rate_limiter: очистка кеша сбрасывает лимиты. Для нескольких процессов нужны общее хранилище и согласованный механизм блокировок, иначе параллельные запросы могут обойти ограничение. Компонент начинает работать после запуска PHP и Symfony. Защиту от DoS нужно ставить раньше, на сервере или прокси. Учебный тест на карточке последовательный, он не проверяет распределённую конкуренцию. Политики, хранилище и locks Библиотека пхпшника
7 · 961 ·
Б
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Фотография
json_validate перед json_decode: один JSON разбирается дважды Если данные сразу понадобятся в PHP, не нужно сначала вызывать json_validate. json_decode сам проверяет строку при разборе. С JSON_THROW_ON_ERROR невалидный JSON даст JsonException. json_validate полезен, когда нужен только ответ «это корректный JSON?», а массив или объект создавать не нужно. Функция доступна с PHP 8.3 и в таком сценарии требует меньше памяти, чем декодирование. В проверенном примере {"port":8080} валиден, {"port":} — нет. При декодировании первого получаем значение 8080, второго — исключение. Валидная строка null тоже проходит проверку: синтаксис JSON ещё не гарантирует нужную вам структуру данных. Когда использовать json_validate Библиотека пхпшника
5 · 912 ·
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Ссылка
нажмите — покажем
💡 Symfony 8.2 сможет делать подписанную ссылку недействительной после смены пароля Подпись защищает URL от подмены. Но сама по себе не мешает открыть одну ссылку несколько раз до истечения срока. В разрабатываемом Symfony 8.2 у UriSigner появляется дополнительный аргумент $version. Он участвует в подписи, но не добавляется в URL. Для сброса пароля версией может стать текущий хеш пароля: $url = $uriSigner->sign( $resetUrl, new \DateInterval('PT30M'), $user->getPassword(), ); // При обработке ссылки: $uriSigner->verify($request, $user->getPassword()); После сохранения нового пароля хеш изменится. Проверка старой ссылки с новым значением версии завершится исключением UnverifiedSignedUriException. Важная деталь: verify() не погашает ссылку Она остаётся действительной, пока состояние, выбранное в качестве версии, не изменилось. Поэтому нельзя считать такой механизм атомарной защитой от двух одновременных запросов: конкурентное выполнение нужно учитывать отдельно. Возможность относится к будущему Symfony 8.2. Для текущего проекта сначала проверьте версию компонента. 🔗 Как работает версия подписанной ссылки 🐸 Библиотека пхпшника
5 · 1.9K ·
Б
Фотография
😎 Выбираешь один курс, второй получаешь бесплатно. Баг? Нет, акция! До 31 октября в Proglib Academy можно выбрать два курса и заплатить только за один. Например, можно совместить: 💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью. 💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений. Вместе курсы стоят 108 000 ₽, но по акции оба обойдутся в 59 000 ₽. Экономия — 49 000 ₽ 🔥 Интересуют Python и ИИ или алгоритмы и архитектура? Можно выбрать любые два курса из каталога. Акция действует до 31 октября включительно ⏳ ⏬ Собрать свой учебный билд
1.8K ·
Б
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Ссылка
нажмите — покажем
🛠 Миграция Pinkary на MySQL обнаружила UUID в целочисленных столбцах Приложение работает, тесты зелёные — пока не меняется движок базы данных. В Pinkary первичный ключ questions.id был UUID. А поля parent_id и root_id создали через foreignId(), то есть как целочисленные столбцы: $table->foreignId('parent_id'); Гибкая типизация SQLite позволяла хранить там строки UUID. При переходе на MySQL несоответствие стало проблемой: тип столбца должен соответствовать реальным значениям и связанному ключу. Здесь легко сделать слишком широкий вывод. Проблема была именно в явных вызовах foreignId('parent_id') и foreignId('root_id'). Метод foreignIdFor() умеет определять UUID-тип по модели — это другой случай. Что проверить до переезда Запустите миграции и характерные запросы на том движке, который будет в рабочей среде. Помимо типов, могут отличаться правила группировки, сравнения строк и порядок результатов при одинаковых временных метках. ORM делает запросы удобнее, но не делает SQLite и MySQL взаимозаменяемыми во всех деталях. 🔗 Разбор миграции от разработчика Pinkary 🐸 Библиотека пхпшника
1 · 1.7K ·
Б
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Ссылка
нажмите — покажем
💡 EntityExists в Symfony 8.2 проверит сущность по идентификатору, но пропустит пустое значение API получает userId. Проверить, что это строка, недостаточно: пользователь с таким идентификатором может не существовать. В будущем Symfony 8.2 для этой задачи появится ограничение EntityExists из Doctrine Bridge: use App\Entity\User; use Symfony\Bridge\Doctrine\Validator\Constraints\EntityExists; use Symfony\Component\Validator\Constraints as Assert; final class AssignOrderCommand { #[Assert\NotBlank] #[EntityExists(entityClass: User::class)] public string $userId; } По умолчанию поиск идёт по идентификатору сущности. Можно выбрать другое поле через identifierField или задать собственный метод репозитория. Зачем рядом NotBlank EntityExists считает null и пустую строку допустимыми. Если поле обязательно, это отдельное правило. Есть ещё две границы. Существование записи не означает, что текущему пользователю разрешено с ней работать. И успешная проверка не гарантирует, что запись не удалят до сохранения операции. Поэтому авторизацию и ограничения целостности базы такая валидация не заменяет. 🔗 Новые ограничения валидации Symfony 8.2 🐸 Библиотека пхпшника
3 · 1.7K ·
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Ссылка
нажмите — покажем
🛠 Laravel Cloud создаёт отдельное окружение для проверки каждого pull request Один staging на всю команду быстро превращается в очередь: пока дизайнер смотрит одну ветку, следующую выкатывать нельзя. В Laravel Cloud можно настроить автоматизацию, которая создаёт окружение при открытии pull request. У него будут собственный URL и отдельно созданные ресурсы. Новые коммиты обновляют развёрнутую версию, а после закрытия или слияния PR автоматическая очистка может удалить окружение и созданные для него ресурсы. Это возможность платформы Laravel Cloud, а не функция, которая автоматически появляется в любом Laravel-приложении. Изоляция важнее дополнительного URL Проверять миграции и фоновые задания безопаснее с отдельными базой, кешем и тестовыми ключами интеграций. Подключённая рабочая база превращает проверку ветки в реальные изменения данных. Для простаивающих окружений предусмотрено масштабирование до нуля там, где ресурс его поддерживает. Но это не обещание полностью бесплатного стека: хранение данных и другие ресурсы могут продолжать оплачиваться. Полезный результат — возможность проверить весь пользовательский сценарий, не перезаписывая чужой staging. 🔗 Как устроены окружения для pull request 🐸 Библиотека пхпшника
6 · 1.7K ·
Б
Фотография
📌 Один курс — хорошее вложение в себя. Два по той же цене — ещё лучше. В Proglib Academy действует акция: покупаешь один курс, а второй получаешь в подарок. Например, можно совместить два направления по работе с ИИ: 💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью. 💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений. 📍 Разница в цене — почти 50 тысяч рублей. Можно освоить больше, не выходя за рамки запланированного бюджета. А если тебе интереснее Python, алгоритмы, backend или DevOps — выбирай другую пару курсов из каталога. Акция действует до 31 октября включительно ⏳ ⏮️ Пора прокачать свой стек
1.7K ·
Б
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Ссылка
нажмите — покажем
⚡️ Symfony 8.2 заранее подготовит список слушателей вместо повторной регистрации на каждом запросе Контейнер уже знает, какие слушатели обрабатывают события. Зачем при создании диспетчера снова вызывать addListener() и создавать замыкания? В разрабатываемом Symfony 8.2 сервис event_dispatcher использует CompiledEventDispatcher. Он получает заранее подготовленный массив идентификаторов сервисов и методов в нужном порядке. OPcache хранит массив в общей памяти, а локатор загружает слушателей по мере необходимости. В приведённом микробенчмарке с 75 слушателями создание диспетчера сократилось с 33,7 до 0,48 микросекунды. Это ускорение создания, а не всего приложения Сама отправка событий работает с прежней скоростью. Слушатели по-прежнему создаются перед выполнением; если событие не отправлено или распространение остановлено, оставшиеся сервисы не создаются. Добавление и удаление слушателей на общем event_dispatcher во время выполнения заставляет его перейти к обычному диспетчеру. В Symfony 8.2 такие вызовы помечаются устаревающими. Перед обновлением стоит поискать addListener(), addSubscriber() и соответствующие удаления именно на общем сервисе. 🔗 Как работает скомпилированный диспетчер 🐸 Библиотека пхпшника
5 · 1.7K ·
Б
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Ссылка
нажмите — покажем
💡 Laravel MCP 1.0 ищет нужные инструменты в каталоге вместо передачи всех схем сразу У MCP-сервера десятки инструментов. Если клиент заранее добавляет каждое описание и полную схему параметров в контекст модели, значительная его часть расходуется ещё до первого полезного вызова. В Laravel MCP 1.0 разработчики выбрали каталог с поиском: агент сначала находит подходящий инструмент, затем получает необходимую информацию для вызова. Размер начального tools/list при этом не растёт вместе со всем каталогом. До этого команда пробовала другой подход: дать модели написать PHP, который вызовет несколько инструментов и обработает результаты внутри приложения. Почему от eval() отказались Сгенерированный код выполнялся в том же процессе, с доступом к окружению и базе приложения. Набор предложенных функций не ограничивал остальные возможности PHP. Успешные тестовые примеры не доказывали, что опасные действия невозможны. Попытки добавить изоляцию усложнили решение. В итоге каталог оказался проще для этой задачи. Это разбор конкретной реализации. Не каждый MCP-клиент заранее загружает все схемы, а поиск инструмента не заменяет проверку прав при его выполнении. 🔗 История четырёх вариантов Laravel MCP 🐸 Библиотека пхпшника
8 · 1.8K ·
Б
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
🛠 После исправления критических уязвимостей PHP проверьте способ обновления приложения 21 октября вышли исправления двух критических уязвимостей PHP, допускающих удалённое выполнение кода без авторизации. Обновлённые версии: 8.5.12, 8.4.27, 8.3.36 и 8.2.35. В инструкции для платформ Laravel разобраны действия для каждого способа размещения. На Laravel Cloud работающие приложения обновили автоматически. На Forge нужно нажать Update PHP для каждого сервера. На Vapor приложения с нативным runtime PHP 8.2 и новее требуется развернуть повторно; для собственного Docker-образа подготовить новое развёртывание. Проверьте все окружения и процессы приложения: веб-сервер, очереди и задания по расписанию. Для контейнеров пересоберите образ с исправленной версией PHP и замените работающие экземпляры. ➡️ Навигация: База знаний • Задачи • Собеседования • Вакансии 🐸 Библиотека программиста
4 · 1.7K ·
Б
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
💡 Symfony 8.2 сможет блокировать параллельные вызовы контроллера Два запроса одновременно запускают импорт каталога. Оба обработчика читают и изменяют одни данные. В готовящемся Symfony 8.2 для таких операций появится атрибут #[Lock]: use Symfony\Component\HttpKernel\Attribute\Lock; #[Lock('catalog-import', methods: 'POST')] public function import(): Response { // Импорт каталога } Первый запрос получает блокировку. Конкурирующий запрос с тем же ключом по умолчанию получает 409 Conflict. Режим blocking: true позволяет дождаться освобождения блокировки. Это пригодится для импорта, генерации отчётов и других операций с общим ресурсом. Подберите ключ под этот ресурс и проверьте длительность обработки: стандартный TTL — 30 секунд. Для долгой работы блокировку нужно продлевать. При нескольких экземплярах приложения настройте общее хранилище блокировок. ➡️ Навигация: База знаний • Задачи • Собеседования • Вакансии 🐸 Библиотека программиста
16 · 1.8K ·
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
🛠 Laravel Cloud позволяет выдать каждому окружению свой ключ Resend В Laravel Cloud появилась интеграция с Resend: отправку писем можно подключить как ресурс окружения. Аккаунт связывается один раз на уровне организации, затем для приложения выбираются домен и адрес отправителя. Cloud показывает DNS-записи для SPF и DKIM и отслеживает подтверждение домена. Сами записи нужно добавить у своего DNS-провайдера. После подключения платформа создаёт ключ, хранит его зашифрованным и передаёт приложению через RESEND_API_KEY вместе с настройками почты. Для тестового и рабочего окружений можно выпустить отдельные ключи. Тогда ключ тестового стенда получится заменить или отозвать независимо от продакшена. Если приложение работает на Laravel Cloud, подключите интеграцию сначала к тестовому окружению. Проверьте письмо сброса пароля, приглашение и адрес отправителя. ➡️ Навигация: База знаний • Задачи • Собеседования • Вакансии 🐸 Библиотека программиста
2 · 1.5K ·
Б
Фотография
🔔 Последние дни акции Proglib Academy! Покупаете один курс — второй получаете в подарок. Успейте до 31 октября. Можно совместить два направления и прокачать навыки сразу в нескольких областях: ⬆️ ИИ для разработчиков — системная работа с ИИ на всех этапах разработки: от планирования задачи до написания кода, тестирования и ревью. ⬆️ Разработка ИИ-агентов — создание собственных агентов для работы с данными, API и внешними сервисами. В программе — RAG, MCP, LangGraph, n8n и тестирование агентов. Первый курс поможет встроить ИИ в привычный процесс разработки, второй — перейти к созданию собственных интеллектуальных инструментов. 🎁 А если эти направления не совсем то, что нужно, можно выбрать любые две программы из каталога. Осталось совсем немного времени — акция заканчивается 31 октября! 👉 Подобрать свою пару курсов
1.4K ·
Б
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
💡 Symfony 8.2 позволит вставлять ссылки в переводы с экранированием параметров В переводе нужна ссылка внутри предложения. Частое решение — записать HTML прямо в строку и вывести её через trans|raw. Вместе с разметкой такой подход пропускает в результат и неэкранированные параметры сообщения. В готовящемся Symfony 8.2 появится фильтр trans_html. В переводе остаются именованные псевдотеги: auth_prompt: 'Чтобы продолжить, <signin>войдите</signin>.' Шаблон задаёт, какой HTML им соответствует: {{ 'auth_prompt'|trans_html(tags: { signin: { tag: 'a', attr: { href: path('login') } } }) }} Фильтр создаёт объявленные элементы и экранирует текст, параметры и значения атрибутов. Ссылка строится через маршрутизатор, переводчик управляет её положением в предложении. Перед обновлением найдите шаблоны с trans|raw. Начните с сообщений, в которые передаются имена пользователей и другие внешние данные. ➡️ Навигация: База знаний • Задачи • Собеседования • Вакансии 🐸 Библиотека программиста
👍2❤1
3 · 1.5K ·
Б
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Ссылка
нажмите — покажем
👀 Messenger Inbox поможет избежать повторной обработки сообщения Воркер записал заказ в базу и завершился до подтверждения сообщения. Брокер доставляет его снова, а обработчик повторяет уже выполненную работу. В Symfony 8.2 появится Messenger Inbox. Он сохраняет идентификатор сообщения вместе с изменениями обработчика в одной транзакции. При повторной доставке Messenger находит запись и пропускает уже завершённую обработку. Для подключения нужны symfony/doctrine-messenger, настройка identity_stamps: true, опция inbox: true у транспорта и middleware doctrine_transaction. Inbox должен использовать то же соединение с БД, что и обработчик. Начать стоит с операций, которые меняют данные в этой БД. Для внешнего платежа или отправки письма отдельно предусмотрите защиту от повторного действия: транзакция базы их не охватывает. ➡️ Навигация: База знаний • Задачи • Собеседования • Вакансии 🐸 Библиотека программиста
10 · 1.4K ·
Б
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Ссылка
нажмите — покажем
👀 HttpClient сможет читать итоговый статус gRPC из HTTP trailers Сервер может передать часть заголовков после тела ответа. Например, gRPC отправляет туда результат вызова — grpc-status и grpc-message. Эти поля называются HTTP trailers. В Symfony 8.2 HttpClient сохранит такие поля в информации об ответе. Прочитать их можно после завершения загрузки: $body = $response->getContent(); $trailers = $response->getInfo('trailers'); До завершения передачи значение trailers равно null. После успешной загрузки вернётся массив: пустой, если сервер ничего не прислал, или с полученными полями. Если работаете с потоковыми ответами или gRPC, проверьте, где получаете итог операции. Обычные заголовки и trailers читаются отдельно; в ответе gRPC без тела статус может прийти обычным заголовком. ➡️ Навигация: База знаний • Задачи • Собеседования • Вакансии 🐸 Библиотека программиста
2 · 1.4K ·
Б
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Ссылка
нажмите — покажем
👀 Symfony позволит учитывать права пользователя прямо при валидации Редактору можно писать описание любой длины, остальным пользователям — до 280 символов. Такое правило удобно держать рядом с проверяемым полем. В Symfony 8.2 функции проверки прав станут доступны в выражениях валидации. Например: #[Assert\When( expression: 'not is_granted("ROLE_EDITOR")', constraints: [new Assert\Length(max: 280)], )] public string $summary = ''; Функция current_user() даст доступ к текущему пользователю. С её помощью можно, например, запретить отправлять приглашение на собственный адрес. Такие проверки выполняются внутри HTTP-запроса. Если тот же объект проходит валидацию в консольной команде или воркере Messenger, функции проверки прав выбросят исключение. Учтите это при выборе групп валидации. ➡️ Навигация: База знаний • Задачи • Собеседования • Вакансии 🐸 Библиотека программиста
👾1
3 · 1.3K ·
Б
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
💡 Symfony 8.2 позволит проверить выражения до запуска приложения Ошибка в выражении для доступа или валидации может обнаружиться только при выполнении нужного запроса. Новая lint-команда поможет находить такие ошибки заранее. В разборе ExpressionLanguage показаны проверка выражений, их компиляция в PHP и ограничение констант, к которым они обращаются. При подготовке к Symfony 8.2 добавьте проверку выражений в CI. Так опечатка в редко используемом правиле обнаружится до выкладки. ➡️ Навигация: Вакансии • Задачи • Собеседования 🐸 Библиотека пхпшника
4 · 1.3K ·
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
💡 Symfony 8.2 упрощает обмен сообщениями между приложениями Один сервис принимает заказ, другой отправляет письмо, третий обновляет данные. Чтобы они понимали друг друга, нужно согласовать формат сообщений и способ их передачи. В разборе межсервисного обмена показаны новые возможности Messenger для взаимодействия отдельных приложений. Материал пригодится при разделении системы на сервисы. Начните с одного сообщения: определите его поля, получателя и правила изменения формата, затем проверьте отправку и обработку в двух приложениях. ➡️ Навигация: Вакансии • Задачи • Собеседования 🐸 Библиотека пхпшника
6 · 1.1K ·
Б
Фотография
🔴 Собес на PHP-разработчика с экс-лидом из Bumble в субботу в 15:00 7 ноября (в эту субботу!) в 15:00 МСК приходи онлайн на открытое собеседование. Посмотришь, как проходит настоящее интервью на Middle PHP-разработчика. Как это будет: 📂 Глеб Виноградов, Staff Software Engineer в Ad Tyres International, ex-Lead в Bumble, проведёт собес. У Глеба больше 11 лет в разработке. В Bumble он 4 года писал бэкенд для приложений Bumble и Badoo; 📂 Глеб задаст реальные вопросы с технических секций и прокомментирует ответы; 📂 В конце можно будет задать ему любой вопрос. Участие бесплатное. Эфир проходит в рамках менторской программы ШОРТКАТ для разработчиков, которые хотят сменить работу, повысить грейд и зарплату или прокачать навыки. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_php_bot Реклама. О рекламодателе.
9 · 1K ·
Б
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
💡 Symfony 8.2 позволит задать ответ при неудачной проверке атрибута контроллера Атрибут контроллера проверяет условие перед выполнением действия. Если проверка завершается неудачно, приложению может понадобиться понятное сообщение или другой сценарий обработки запроса. В разборе новой возможности показано, как контроллер сможет обработать такой исход. Полезно для действий, где пользователь должен понять причину отказа и следующий шаг. При обновлении проверьте эти ветки отдельными тестами: какой статус, текст и данные получает клиент. ➡️ Навигация: Вакансии • Задачи • Собеседования 🐸 Библиотека пхпшника
3 · 670 ·
Архив по месяцам
ноябрь 2026октябрь 2026сентябрь 2026август 2026июль 2026июнь 2026май 2026апрель 2026март 2026февраль 2026январь 2026декабрь 2025ноябрь 2025октябрь 2025сентябрь 2025август 2025июль 2025июнь 2025май 2025апрель 2025март 2025февраль 2025январь 2025декабрь 2024ноябрь 2024октябрь 2024сентябрь 2024август 2024июль 2024июнь 2024май 2024апрель 2024март 2024февраль 2024январь 2024декабрь 2023ноябрь 2023октябрь 2023сентябрь 2023август 2023июль 2023июнь 2023май 2023апрель 2023март 2023февраль 2023январь 2023декабрь 2022ноябрь 2022октябрь 2022сентябрь 2022август 2022июль 2022июнь 2022май 2022апрель 2022март 2022февраль 2022январь 2022декабрь 2021ноябрь 2021октябрь 2021сентябрь 2021август 2021июль 2021июнь 2021май 2021апрель 2021март 2021февраль 2021январь 2021декабрь 2020ноябрь 2020октябрь 2020сентябрь 2020август 2020июль 2020июнь 2020май 2020апрель 2020март 2020февраль 2020январь 2020декабрь 2019ноябрь 2019октябрь 2019сентябрь 2019август 2019июль 2019июнь 2019май 2019апрель 2019март 2019февраль 2019январь 2019декабрь 2018ноябрь 2018октябрь 2018сентябрь 2018август 2018июль 2018

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем