Как я засунул Качалку в Telegram-бота: файлы до 2 ГБ вместо 50 МБ и защита от спамеров

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Недавно писал про Качалку — бесплатную программу, которая скачивает видео с YouTube, TikTok, Instagram и VK. Друзья спросили: «а можно без установки, прямо в телеге?» Теперь можно: @kachalka_videobot. Без рекламы, без «подпишитесь на 5 каналов спонсоров». Расскажу, на какие грабли наступил.

Стена №1: 50 МБ

Обычный бот через api.telegram.org может отправить файл максимум 50 МБ. Для минутного TikTok хватает, для 10-минутного ролика с YouTube в 1080p — нет.

Первое решение — подбирать качество: сервер перебирает 1080 → 720 → 480 → 360 и берёт самое чёткое, что влезает в 47 МБ. Не влезает ничего — бот присылает ссылку на скачивание.

Работает, но хотелось честных 1080p.

Решение: свой сервер Bot API

У Telegram есть открытый telegram-bot-api. Если запустить его у себя с флагом --local, лимит на отправку становится 2000 МБ, а файл можно отдать прямо с диска, без загрузки по сети.

Собирается из исходников за 10–15 минут. Дальше:

  1. Нужны api_id и api_hash с my.telegram.org.

  2. Бот делает logOut у облачного API (вернуться назад можно только через 10 минут).

  3. Бот теперь стучится на http://127.0.0.1:8081 вместо api.telegram.org.

Грабли с ключами. my.telegram.org у меня не открывался: с VPN — «Sorry, too many tries», без VPN — сайт заблокирован у провайдера. Помогла вот эта статья на Хабре: прописать в hosts рабочий адрес my.telegram.org и зайти без VPN. Спасибо автору — без неё бот так и сидел бы на 50 МБ.

Грабли с путями. После переключения ни одно видео не ушло: «Telegram не принял файл». Оказалось, локальный сервер принимает файл с диска только как file:///путь/к/файлу. Голый /путь он считает ссылкой и молча ломается. Мой поддельный Telegram для тестов принимал что угодно, поэтому баг всплыл только в бою. В Python лечится одной строкой: Path(...).as_uri().

Итог: в личке видео до ~1,9 ГБ в оригинальном качестве. В группах по-прежнему держу до 47 МБ, чтобы не заваливать чат.

Бонус: повторы мгновенно

Telegram выдаёт каждому отправленному файлу file_id. Я храню пары «ссылка → file_id», и если ту же ссылку кидает второй человек, бот ничего не качает, а пересылает уже готовое за долю секунды. Популярные TikTok'и улетают мгновенно.

Стена №2: спамеры

Бесплатный бот и один сервер — идеальная мишень. Защита в несколько слоёв:

  • в боте: 3 ссылки разом, потом не чаще одной в 20 секунд; 25 в час, 100 и 3 ГБ в сутки на человека; очередь чата — 3, всего — 15;

  • флуд: больше 20 сообщений в минуту — бот перестаёт отвечать на 10 минут, потом на час, потом на сутки. Таким людям он пишет, что они отправлены в Азкабан;

  • на сервере: с одного адреса не больше 3 загрузок разом, общая очередь 25, дальше честное «сервер занят»; прямые эфиры и ссылки на внутренние адреса не качаем, одна загрузка не дольше 30 минут;

  • снаружи: бесплатное правило Rate limiting в Cloudflare: 40 запросов за 10 секунд с IP — блок;

  • изоляция: бот и качалка работают под разными пользователями systemd в «клетке»: качалка не видит токен бота, бот не видит чужие файлы.

Ещё приятная мелочь — очередь, которую видно: «Ты в очереди: впереди 2, это примерно полминуты». Люди спокойно ждут, когда понимают, сколько.

Как вообще качается YouTube осенью 2026

Частый вопрос в комментариях к прошлой статье. Коротко: yt-dlp + deno, yt-dlp обновляется сам несколько раз в день с проверкой и откатом, а YouTube идёт через сервер с «чистым» IPv4 — с адресов датацентров он требует войти в аккаунт. Без кук. IPv6 нашего второго сервера YouTube забанил целой подсетью, так что yt-dlp ходит только по IPv4 через SOCKS4. Иногда «not a bot» всё равно прилетает — это гонка вооружений.

Что ещё умеет бот

  • кнопка «Только звук — MP3» под каждым видео;

  • работает в группах: Shorts и TikTok качает сам, остальное — по просьбе;

  • встроенный режим: пишешь в любом чате @kachalka_videobot ссылка — и видео отправляется прямо туда;

  • фото и карусели из Instagram и TikTok — альбомом.

Попробовать: @kachalka_videobot. Программа для компьютера и исходники — github.com/kozliq/kachalka, сайт — kachalka.flownote.cc.

Если поделитесь, как боретесь со спамом в своих ботах, — буду рад почитать в комментариях.

Источник: https://habr.com/ru/articles/1098856/


Интересные статьи

Интересные статьи

Портал «Работа России» опубликовал национальные рейтинги трудоустройства выпускников вузов и колледжей. Рейтинги отражают востребованность молодых специалистов на рынке труда и позволяют сравнить резу...
Когда производитель с дилерской сетью из 85+ партнёров решает стандартизировать их сайты — первый инстинкт понятен: сделать JSON-фид с основного домена, настроить синхронизацию, и пусть у всех будет о...
Сегодня создание и поддержка веб-сайта стали неотъемлемой частью бизнеса. Если вы занимаетесь электронной коммерцией, ведете блог или разрабатываете корпоративный портал, вам потребуется надежная и фу...
Игры могут быть более опасными, чем мы когда-либо думали. Читать далее
В 2019 году люди знакомятся с брендом, выбирают и, что самое главное, ПОКУПАЮТ через интернет. Сегодня практически у любого бизнеса есть свой сайт — от личных блогов, зарабатывающих на рекламе, до инт...