Как я сделал Telegram-бота для IT-новостей на Python: Groq AI, двуязычный формат и автоматическая голосовая озвучка
Решил написать бота для своего Telegram-канала TechPulse (https://t.me/NewsAiPython)
Рассказываю, как за пару дней собрать и задеплоить автопостинг с мировых источников (TechCrunch, Wired, The Verge) с помощью Llama 3.3, gTTS и Render.
В современном мире IT новостей слишком много, и большая часть крутых первичных инсайдов появляется на англоязычных ресурсах — TechCrunch, The Verge, Wired. Для тех, кто хочет читать актуальные новости в Telegram, есть две проблемы: Англоязычные посты не всегда удобно быстро пробегать глазами. Сухой текстовый пересказ часто скучен — хочется читать коротко, с эмодзи и иметь возможность послушать аудио-выжимку на ходу. Я решил написать собственного бота на Python, который берет свежие мировые новости, генерирует двуязычный пост (на русском и английском) через ИИ и автоматически озвучивает русскую часть голосом.
🛠 Архитектура и стек технологий Проект получился достаточно компактным, но технологичным: Язык: Python 3.14 Парсинг RSS: feedparser (забирает мировые эксклюзивы) Нейросеть: Groq API (модель llama-3.3-70b-versatile — работает мгновенно и отлично форматирует текст) Озвучка: gTTS (Google Text-to-Speech) Работа с Telegram: pyTelegramBotAPI Фоновые процессы: threading & time Хостинг: Render (Web Service + Flask затычка для открытого порта)
💡 Как это работает изнутри? 1. Мониторинг мировых источников Бот обращается к проверенным RSS-лентам мировых изданий. Из новости извлекаются заголовок, краткий текст, ссылка на первоисточник и обложка:
RSS_FEEDS = [ "https://techcrunch.com/feed/", "https://www.theverge.com/rss/index.xml", "https://www.wired.com/feed/rss", ]
2. Генерация двуязычного поста через Groq AI Чтобы пост смотрелся стильно и подходил как для русскоязычной аудитории, так и для тех, кто подтягивает английский, нейросеть формирует два четких блока:
prompt = f""" Проанализируй следующую IT-новость и сделай ДВУХЯЗЫЧНЫЙ пост: Заголовок: {title} Текст: {summary} Формат: 🇷🇺 [Заголовок на русском] [Суть новости на русском с эмодзи] 🇬🇧 [Headline in English] [Summary in English with emojis] """
3. Генерация аудио-выжимки (Voice Note) Бот автоматически отделяет русскую часть поста от английской, очищает её от хештегов и ссылок, после чего превращает в голосовую заметку через gTTS и отправляет следом за постом. Это удобно для тех, кто читает канал в дороге.
4. Обход ограничений бесплатного хостинга Render При бесплатном деплое Telegram-ботов на Render часто возникают ошибки Timed Out или No open ports detected, из-за чего сервис засыпает или отключается. Решение оказалось простым — поднять микро-сервер на Flask в отдельном фоновом потоке threading.Thread, чтобы Render видел открытый веб-порт и держал статус Live:
app = Flask("") @app.route("/") def home(): return "Bot is alive!" def run_http_server(): port = int(os.environ.get("PORT", 8080)) app.run(host="0.0.0.0", port=port) # Запуск сервера и бота параллельно threading.Thread(target=run_http_server, daemon=True).start() threading.Thread(target=auto_post_loop, daemon=True).start() bot.infinity_polling()
🚀 Результаты и автоматизация Сейчас бот работает полностью самостоятельно на сервере Render. Раз в 1.5 часа он: Сканирует мировые RSS-ленты. Находит свежую новость, которую ещё не публиковал. Формирует пост на 2 языках с эмодзи. Создаёт голосовую заметку. Публикует всё в канал. 📌 Заключение и где посмотреть на результат Этот пет-проект показал, как с помощью современных бесплатный API (Groq, Render, Telegram) можно буквально за пару вечеров собрать полноценное автономное СМИ. Посмотреть, как работают двуязычные посты и аудио-озвучка на практике, можно в моём Telegram-канале:https://t.me/NewsAiPython 👉 TechPulse Буду рад вашим отзывам, вопросам по коду и идеям по улучшению бота в комментариях!