<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Как я сделал Telegram-бота для скачивания ВК-Клипов]]></title><description><![CDATA[<p dir="auto">Дело было вечером, делать было нечего. Сидел, играл в <em>Oblivion Remastered</em>, и в голову ударила мысль:<br />
<strong>«А можно ли сделать бота, который скачивает ВК-клипы удаляет водный знак VK Clips и сразу отправляет их в Телеграм?»</strong></p>
<p dir="auto">Ответ: <strong>да, можно</strong>. И даже проще, чем я думал.</p>
<blockquote>
<p dir="auto">Ссылка на бота - <a href="https://t.me/vkclipssavebot" target="_blank" rel="noopener noreferrer">https://t.me/vkclipssavebot</a></p>
</blockquote>
<hr />
<h4><img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/1f6e0.png?v=a1e94250dac" class="not-responsive emoji emoji-android emoji--hammer_and_wrench" style="height:23px;width:auto;vertical-align:middle" title="🛠" alt="🛠" />️ Что использовал?</h4>
<ul>
<li><strong>Python</strong> (хотел JS, но захотелось чего-то новенького)</li>
<li><strong>yt-dlp</strong> (скачивание видео)</li>
<li><strong>python-telegram-bot</strong> (общение с Телеграмом)</li>
<li><strong>dotenv</strong> (хранение токена)</li>
<li><strong>nest_asyncio</strong> (чтобы асинхронность не сломалась)</li>
</ul>
<hr />
<h4><img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/1f680.png?v=a1e94250dac" class="not-responsive emoji emoji-android emoji--rocket" style="height:23px;width:auto;vertical-align:middle" title="🚀" alt="🚀" /> Пример кода: команда /start</h4>
<p dir="auto">Вот как выглядит простейший обработчик команды <code>/start</code>:</p>
<pre><code class="language-python">async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text(
        "Привет! Отправь ссылку на ВК-клип, и я скачу его для тебя 🎬"
    )
</code></pre>
<p dir="auto"><strong>Что делает этот код?</strong></p>
<ul>
<li>Когда пользователь пишет <code>/start</code> — бот отвечает приветственным сообщением.</li>
<li>Всё. Никаких секретов.</li>
</ul>
<hr />
<h4><img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/1f50b.png?v=a1e94250dac" class="not-responsive emoji emoji-android emoji--battery" style="height:23px;width:auto;vertical-align:middle" title="🔋" alt="🔋" /> Запуск бота</h4>
<p dir="auto">А вот как запускается сам бот:</p>
<pre><code class="language-python">async def main():
    app = ApplicationBuilder().token("YOUR_BOT_TOKEN").build()
    app.add_handler(CommandHandler("start", start))
    await app.run_polling()
</code></pre>
<p dir="auto"><strong>Главное:</strong></p>
<ul>
<li>Укажите токен из <code>@BotFather</code>.</li>
<li>Добавьте обработчики команд.</li>
<li>Запустите через <code>asyncio.run(main())</code>.</li>
</ul>
<hr />
<h4><img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4e9.png?v=a1e94250dac" class="not-responsive emoji emoji-android emoji--envelope_with_arrow" style="height:23px;width:auto;vertical-align:middle" title="📩" alt="📩" /> Обработка ссылок</h4>
<p dir="auto">Если бот получает ссылку на ВК-клип, он:</p>
<ol>
<li>Показывает кнопки с выбором разрешения (360p, 480p, 720p).</li>
<li>Скачивает видео через <code>yt-dlp</code>.</li>
<li>Проверяет размер (лимит Телеграма — 50 МБ для обычных ботов).</li>
<li>Отправляет видео обратно пользователю.</li>
</ol>
<p dir="auto">Пример кода для кнопок:</p>
<pre><code class="language-python">keyboard = [
    [InlineKeyboardButton(f"{res}p", callback_data=f"res_{res}") for res in ["360", "480", "720"&rsqb;&rsqb;
]
await update.message.reply_text("Выберите разрешение:", reply_markup=InlineKeyboardMarkup(keyboard))
</code></pre>
<hr />
<h4>🧵 Асинхронность и многопользовательность</h4>
<p dir="auto">Бот умеет работать с несколькими пользователями одновременно. Для этого я использовал <code>Semaphore</code>:</p>
<pre><code class="language-python">semaphore = asyncio.Semaphore(5)  # До 5 загрузок одновременно

async def button_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
    async with semaphore:
        # Логика загрузки и отправки видео
</code></pre>
<p dir="auto"><strong>Зачем это нужно?</strong><br />
Чтобы бот не зависал, когда несколько человек лезут к нему с запросами.</p>
<hr />
<h4><img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4e6.png?v=a1e94250dac" class="not-responsive emoji emoji-android emoji--package" style="height:23px;width:auto;vertical-align:middle" title="📦" alt="📦" /> Что дальше?</h4>
<ul>
<li>Хочу обойти лимит Телеграма на 50 МБ (есть идеи, но это потом).</li>
<li>Добавить поддержку других платформ (например, YouTube Shorts).</li>
<li>Научить бота удалять водяные знаки (пока не разобрался, но над этим работаю).</li>
</ul>
<hr />
<h4><img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4f2.png?v=a1e94250dac" class="not-responsive emoji emoji-android emoji--calling" style="height:23px;width:auto;vertical-align:middle" title="📲" alt="📲" /> Попробуйте сами!</h4>
<p dir="auto">Если кому-то интересно — пишите, поделюсь лайфхаками. А пока:<br />
<strong><a href="https://t.me/vkclipssavebot" target="_blank" rel="noopener noreferrer">https://t.me/vkclipssavebot</a></strong> — качает ВК-клипы, пока ты играешь в Oblivion <img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/1f609.png?v=a1e94250dac" class="not-responsive emoji emoji-android emoji--wink" style="height:23px;width:auto;vertical-align:middle" title="😉" alt="😉" /></p>
<hr />
<p dir="auto"><strong>P.S.</strong> Код не покажу — секрет фирмы <img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/1f60e.png?v=a1e94250dac" class="not-responsive emoji emoji-android emoji--sunglasses" style="height:23px;width:auto;vertical-align:middle" title="😎" alt="😎" /> Но если хотите повторить — начните с <code>python-telegram-bot</code> и <code>yt-dlp</code>. Всё работает))</p>
]]></description><link>https://forum.exlends.ru/topic/119/kak-ya-sdelal-telegram-bota-dlya-skachivaniya-vk-klipov</link><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 03:58:50 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/119.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 May 2025 07:05:15 GMT</pubDate><ttl>60</ttl></channel></rss>