Telegram-бот на aiogram 3 для конвертации сумм в KZT, MDL, PLN, UAH, MXN, NGN и ETB в USD.
- Распознаёт суммы вроде
500₸,500тг(слитно тоже работает),100 злотых,1 500 грн,200 pesos. - Поддерживает русские, украинские и английские названия валют, символы и ISO-коды.
- Сохраняет порядок нескольких конвертаций в одном сообщении.
/rates(или кнопка "📊 Показать все курсы" под/start) показывает курс1 USDк поддерживаемым валютам и источник.- Источники используются в порядке: официальный ЦБ → ExchangeRate-API → резервное значение.
- Кэширует успешно полученные курсы на CACHE_TTL_SECONDS (по умолчанию раз в полдня), чтобы не дергать внешние API на каждое сообщение.
- Если все внешние источники временно недоступны, использует последний успешный кэш.
- Создайте
.envиз.env.example. - Заполните секреты.
- Запустите:
docker compose up -d --buildЛоги:
docker compose logs -f tengebotОстановка:
docker compose downpython -m venv .venv
# Linux/macOS
source .venv/bin/activate
# Windows PowerShell: .venv\\Scripts\\Activate.ps1
pip install -r requirements.txt
python main.pyBOT_TOKEN— токен Telegram-бота.EXCHANGE_API_KEY— ключ ExchangeRate-API; можно оставить пустым, тогда используется публичный endpoint без ключа.BANXICO_TOKEN— токен Banxico; если пустой/невалидный, MXN берётся из следующего источника.CACHE_TTL_SECONDS— TTL кэша, по умолчанию 43200 секунд (12 часов, т.е. раз в полдня).LOG_LEVEL— уровень логирования, по умолчаниюINFO.
Результат не гарантирует биржевой курс в реальном времени. В ответе указывается источник: официальный ЦБ, ExchangeRate-API или резервное значение. Резервное значение предназначено только для graceful degradation.