Как все начиналось
В конце июня этого года я возвращался с дачи, слушая радио в машине. Новости по радио выходят раз в час, и их разнообразие оставляет желать лучшего. Тогда я подумал: было бы здорово, если бы было приложение, которое автоматически собирало новости из Telegram-каналов и озвучивало их голосом на русском языке.
Вернувшись домой, я поискал готовое решение, но ничего подходящего в интернете не нашёл. Решил спросить у ИИ.
Первый диалог с ChatGPT
Мой диалог с ChatGPT начался так:
Я: Нужно мобильное приложение для андроид, чтобы в нем можно было задать, из каких чатов телеграмма читать новости... и прочитать их голосом по-русски --- возможно ли такое сделать?
ChatGPT: Да, такое мобильное приложение для Android --- вполне реально создать... Лучше использовать Kotlin... Для работы с Telegram нужно использовать TDLib... Для озвучивания --- Google TextToSpeech...
Я попросил ChatGPT детализировать идею, и он выдал практически готовое техническое задание с четкой структурой:
Название: «Голосовые новости из Telegram»
Функционал: Авторизация в Telegram через TDLib, выбор каналов/групп, настройка временного диапазона (от 5 минут до суток), фильтрация дубликатов новостей, озвучка через TTS с объявлением канала и времени, настройки голоса.
Инструменты
Kotlin --- язык для Android.
TDLib --- библиотека Telegram для работы с личными чатами и каналами.
Android TextToSpeech --- синтез речи.
Room (SQLite) --- хранение каналов и настроек.
Выглядело всё это устрашающе сложно. Я спросил у ИИ, нет ли уже готовых приложений, но он предложил только костыли вроде ботов или сторонних TTS-ридеров, которые не решали задачу.
Стало ясно --- нужно делать свое приложение для себя. Но как?
Путь разработки: от нуля до рабочего приложения
Мой опыт программирования ограничивался институтским Фортраном в начале 90-х, а о мобильной разработке я не знал ничего. Тем не менее, с помощью ИИ я прошел путь от установки Android Studio до создания APK. Вот ключевые этапы.
Настройка окружения
По совету Claude Opus 4, я установил Android Studio, JDK 17, Android SDK, Git и Gradle в виртуальной машине, чтобы случайно не попортить свой компьютер разными программами. Это заняло целый день.
Скрипт
Claude сгенерировал мне sh-скрипт, который создавал всю структуру папок и файлов проекта. Получилось не с первого раза, но это был маленький успех.
API ключи
Нашел инструкцию, как сделать API ключи. Запустил проект... Первый же запуск проекта в Android Studio завершился провалом, так как никаких библиотек TDlib у меня не было, и я не знал, где их взять.
Поиск в интернете явно не дал результатов. В конечном итоге, где-то я смог найти нужные файлы и даже запустить приложение. Вот в таком виде, но больше ничего не нажималось и не открывалось.

На это ушло 2 дня. Далее процесс застопорился, мой проект я умудрился испортить и больше совсем ничего не запускалось. Я понял, что затея глупая и потер все папки проекта...
Через 2 недели все-таки вернулся к теме и решил использовать Grok. Он мне выдал новый скрипт для развертывания приложения и запуска через Android Studio. Часть его ниже.
#!/bin/bash
# Telegram News Reader - Автоматическая настройка проекта Android Studio (обновлённая версия by Grok)
set -e
PROJECT_NAME="TelegramNewsReader"
PACKAGE_NAME="com.example.telegramnewsreader"
PACKAGE_PATH="com/example/telegramnewsreader"
echo "? Создание проекта $PROJECT_NAME..."
# Создание структуры проекта
mkdir -p $PROJECT_NAME
cd $PROJECT_NAME
# Создание основных директорий
mkdir -p app/src/main/java/$PACKAGE_PATH/activities
mkdir -p app/src/main/java/$PACKAGE_PATH/services
mkdir -p app/src/main/java/$PACKAGE_PATH/managers
mkdir -p app/src/main/java/$PACKAGE_PATH/models
mkdir -p app/src/main/java/$PACKAGE_PATH/adapters
mkdir -p app/src/main/java/$PACKAGE_PATH/telegram
mkdir -p app/src/main/java/$PACKAGE_PATH/tts
mkdir -p app/src/main/java/$PACKAGE_PATH/db
mkdir -p app/src/main/res/layout
mkdir -p app/src/main/res/values
mkdir -p app/src/main/res/drawable
mkdir -p app/src/main/assets
mkdir -p app/libs
mkdir -p gradle/wrapper
# ...
Невероятное количество ошибок мне сыпалось при запуске проекта, я их скидывал ИИ и вносил исправления.
TDLib
Следующий шаг --- подключение Telegram API через TDLib. Ссылки на библиотеки, предложенные ИИ, оказались битыми. После долгих поисков я нашел TDLib на GitHub, скомпилировал его вручную и добавил в проект. На создание библиотек у меня ушла еще неделя, в виртуальной машине на Ubuntu, так как в Windows собираться библиотеки категорически не хотели. Запуск проекта выдал ошибки: TDLib не находил зависимости. Пришлось вручную править build.gradle, добавляя строки, предложенные ИИ.
Работа с ИИ: помощники и их ограничения
Сначала я метался между ChatGPT, DeepSeek, Claude Opus и Grok.
Бесплатные лимиты быстро кончались. В конце июля, начале августа на несколько дней появился Horizon (предвестник ChatGPT5), модели были на тесте и безлимитные, жаль всего несколько дней, но за эти дни удалось продвинуться значительно дальше.
Я использовал несколько ИИ-моделей. Каждый выдавал код, но с разной точностью:
ChatGPT 4: Часто давал неполные фрагменты кода, которые ломали проект.
Horizon Alpha/Beta (тестовые модели на OpenRouter): Выдавали почти идеальный код с первого раза.
Qwen 3 Coder: Стал моим фаворитом за точность и экономичность (меньше затрат на OpenRouter).
ChatGPT 5: Лучше чем 4-версия, но дороже, чем Qwen
Claude Opus: Лучше справлялся с генерацией больших объемов кода и структуры проекта.
DeepSeek и Grok -- использовались в меньшей степени.
Ошибки в Android Studio я копировал в ИИ, требуя полный файл кода, а не фрагменты, чтобы избежать конфликтов. Для отката изменений я использовал локальный Git, что спасало, когда ИИ «ломал» логику.
Ключевые этапы разработки
Дата |
Этап |
Проблемы |
---|---|---|
17 июля |
Первый запуск UI |
TDLib не подключался |
27 июля |
Озвучка новостей |
Механический голос, нет пауз |
02 августа |
Новая оболочка |
Настройки голоса |
13 августа |
Первая рабочая версия-первый APK |
Ошибки компиляции APK |
18 августа |
Финальная версия (v5) |
Мелкие баги UI |
17 июля: После недели компиляции TDLib я увидел первый интерфейс.

Но ничего не нажималось из-за заглушек в коде от ИИ. Каналы не загружались. Как оказалось у меня еще многофакторная аутентификация была, пришлось добавить третье поле с вводом пароля.
// ? Обработка ожидания облачного пароля
telegramClient.onPasswordRequired = {
runOnUiThread {
binding.etPassword.visibility = View.VISIBLE
binding.btnVerifyPassword.visibility = View.VISIBLE
Toast.makeText(this, "Введите облачный пароль", Toast.LENGTH_SHORT).show()
}
}
// ✅ Переход в MainActivity только после полной авторизации
telegramClient.onClientReady = {
runOnUiThread {
Toast.makeText(this, "Авторизация успешна", Toast.LENGTH_SHORT).show()
PreferenceManager.setAuthorized(this, true)
startActivity(Intent(this, MainActivity::class.java))
finish()
}
}
27 июля: Добавлена озвучка через Android TTS. Голос звучал механически, и я экспериментировал с RHVoice, но вернулся к Android TTS, добавив код для фильтрации рекламы и пауз. Ниже, один пример.
private fun dropTrivial(texts: List<String>): List<String> {
val trivial = Regex("^(фото|видео|аудио|ссылка|репост)\\b.*$", RegexOption.IGNORE_CASE)
val subscribe = Regex("(?i)^.*\\b(подписывай(ся|тесь)?|подписка)\\b.*$", RegexOption.IGNORE_CASE)
return texts.map { it.trim() }
.filter { text ->
val isTrivial = text.length < 8 || trivial.containsMatchIn(text)
val hasSubscribe = subscribe.containsMatchIn(text)
if (hasSubscribe) {
Log.d("TTSManager", "⚠️ Найдена подписка: '$text'")
}
!(isTrivial || hasSubscribe)
}
}

02 августа: Новая оболочка. Голосовые настройки. Плашка скрытых каналов-нажав на канал, можно его скрыть. Кнопки воспроизведения.

13 августа: Первая рабочая версия с выбором каналов, их картинками, временем выборки и озвучкой. Тогда же решил создать APK для установки на телефоне, первая компиляция выдала более 20 ошибок, пришлось по каждой проводить исправления через ИИ.
APK получился в 250 МБ из-за лишних библиотек. После подсказок и оптимизации (удаление ненужных зависимостей) размер сократился до 55 МБ.

18 августа: Финальная версия (v5) с улучшенным UI, настройками TTS и прогресс-баром.

Функционал финального приложения
Финальная версия приложения (18 августа 2025) включает:
Авторизация: Вводим свой номер телефона Telegram. В Telegram получаем код, который, вставляем в поле приложения, вводим дополнительный пароль (если есть). Входим в программу. Это надо всего один раз, далее программа помнит авторизацию.
Выбор каналов: Отображение каналов, на которые вы подписаны с возможностью отметить избранные (звездочкой), что бы поднять их в списке или скрыть лишние.
Диапазон времени: От 10 минут до 24 часов, по умолчанию --- 30 минут.
Сбор новостей из выбранных каналов.
Фильтрация и очистка текста. Удаление мусора и рекламы (правда не всё удаляет, но большую часть).
Текстовые сообщения → Синтез отдельных WAV файлов для каждой новости через TTS. Добавление пауз между новостями.
Создание MP3 с тайм-кодами для навигации
Озвучка: Настраиваемый голос (мужской/женский), темп, тембр. Тестовое воспроизведение для проверки.
Прогресс-бар: Показывает процесс сбора новостей (максимум 100 сообщений).
Формат озвучки: «Новости из канала РИА Новости, 21:10, [текст новости].»
Приложение весит 55 МБ, что приемлемо для моих целей. Мелкие баги не мешают работе.
Заключение
За основном за месяц я, человек без опыта программирования, создал Android-приложение, которое озвучивает новости из Telegram-каналов. Это было непросто: битые ссылки, ошибки компиляции и ограничения ИИ заставили попотеть. Но результат того стоил --- теперь я могу слушать новости из моих каналов в дороге, нажав пару кнопок, как и хотел изначально.
P.S. Если вы знаете похожие бесплатные приложения без рекламы - напишите.
P.P.S. В проекте примерно 5000 строчек кода.
pol_pot
Он на своем родном сайте работает, без ограничений и пускает тех кто живет севернее кореи https://chat.qwen.ai/
Для tts можно еще попробовать edge
У дновостных каналов обычно есть веб сайты, их проще читать чем телеграм, никакой авторизации не требуется обычно.
jaker Автор
"Он на своем родном сайте работает" - вот, не подумал, спасибо за информацию