Приватный Telegram-бот, который приводит в порядок тексты и расшифровывает голосовые сообщения. Отправляешь боту черновик текстом или голосом — получаешь чистую, отредактированную версию, а одной кнопкой можешь переключить её стиль или разбить на сообщения для Авито.
Бот заточен под задачи Telegram-разработчика, который переписывается с клиентами: он сохраняет живой авторский тон, но убирает слова-паразиты, ошибки и «воду».
- Текст — присылаешь сообщение, бот возвращает вычищенный вариант.
- Голосовые и аудиофайлы — распознаёт речь через Whisper и восстанавливает смысл: убирает слова-паразиты, чинит ошибки распознавания, разбивает на абзацы. Поддерживает голосовые, а также аудио, отправленные файлом (
.ogg,.mp3,.m4a,.wav,.webm, до 25 МБ). - 4 стиля на выбор — переключаются inline-кнопками прямо под ответом:
- Как сказано — чистит текст, максимально сохраняя авторский стиль;
- Формальный — деловой, но тёплый тон;
- Дружелюбный — лёгкий стиль для общения на «ты»;
- Конспект — структурированная выжимка с тезисами и эмодзи.
- Разбивка для Авито — режет длинный текст на сообщения по 500–700 символов для отправки в чат Авито.
- Приватный доступ — бот отвечает только пользователям из белого списка (
ALLOWED_USERS).
- Сообщение проходит через middleware авторизации — если Telegram ID не в белом списке, бот отвечает отказом.
- Голос/аудио скачивается во временный файл, распознаётся через Whisper (
whisper-1), затем текст постобрабатывается моделью OpenAI. - Текст улучшается моделью OpenAI (
gpt-4o-mini) с системным промптом, задающим Tone of Voice и выбранный стиль. - Ответ хранится в памяти (последние 100 сообщений), чтобы кнопки смены стиля и разбивки работали с исходником.
- Python 3.12
- aiogram 3.x — асинхронный фреймворк для Telegram Bot API
- OpenAI API — Chat Completions (
gpt-4o-mini) и Whisper (whisper-1) - Docker / docker-compose — для развёртывания
text-bot/
├── bot.py # точка входа: инициализация бота, роутеров, middleware
├── config.py # загрузка и валидация переменных окружения
├── handlers/ # обработчики сообщений
│ ├── start.py # /start и приветствие
│ ├── text.py # текст + callback-кнопки (смена стиля, разбивка)
│ ├── voice.py # голосовые сообщения
│ ├── document.py # аудио, отправленное файлом
│ └── state.py # хранилище текстов в памяти
├── services/ # интеграции с OpenAI
│ ├── openai_client.py # инициализация клиента
│ ├── chatgpt.py # улучшение текста и разбивка для Авито
│ └── whisper.py # распознавание и постобработка речи
├── prompts/styles.py # системные промпты и настройки стилей
├── keyboards/inline.py # inline-клавиатуры
├── middlewares/auth.py # проверка доступа по белому списку
├── Dockerfile
└── docker-compose.yml
- Python 3.12+
- Токен Telegram-бота (получить у @BotFather)
- Ключ OpenAI API
Скопируй пример конфигурации и заполни своими значениями:
cp .env.example .envTELEGRAM_TOKEN=токен_от_BotFather
OPENAI_API_KEY=ключ_OpenAI
ALLOWED_USERS=123456789,987654321 # Telegram ID через запятую
.envуже в.gitignore— секреты не попадут в репозиторий.
pip install -r requirements.txt
python bot.pydocker compose up -d --buildБот работает в режиме long polling — внешний домен и вебхуки не нужны.
| Переменная | Описание |
|---|---|
TELEGRAM_TOKEN |
Токен бота от BotFather |
OPENAI_API_KEY |
Ключ OpenAI API |
ALLOWED_USERS |
Telegram ID пользователей через запятую (белый список) |
При старте бот проверяет, что обязательные переменные заданы, и предупреждает, если ALLOWED_USERS пуст (тогда бот никому не отвечает).