Адрес бота: @weather35bot
- Узнать текущую погоду
- Узнать прогноз на конкретный час (в пределах следующих двух дней)
- Узнать прогноз на конкретный день (в пределах следующих семи дней)
- Подписаться на ежедневную рассылку в удобное для вас время
Прогноз на конкретный час состоит из типа погоды, фактической и ощущаемой температур, скорости ветра (и порывов, если присутствуют), показателя влажности, показателя облачности, и предупреждений (если присутствуют).
Прогноз на конкретный день дополняется информацией о температуре каждого времени суток - утра, дня, вечера, и ночи.
Начните диалог с ботом @weather35bot.
Вся работа с ним будет происходить при помощи клавиатуры, которую бот выдаст вместе с его первым сообщением. В этом сообщении будет описано, за что отвечает каждая кнопка клавиатуры.
Теперь вы можете узнать текущую погоду, получить прогноз, и подписаться на рассылку.
- Хочу без лишних усилий получать подробную информацию о текущей погоде.
Поэтому я выбрал Telegram. Простой интерфейс, автоматическая рассылка. Можно один раз настроить, и бот сам будет отправлять прогноз.
- Хочу иметь небольшой проект для практикования.
Периодически я возвращаюсь к этому проекту с целью улучшения кода, структуры проекта, внешнего вида и т.д. Об этих рефакторингах можно прочитать здесь под заголовками, содержащими "CheWeatherBot".
- Для получения информации о погоде используется OpenWeatherMap с тарифом One Call API.
- Для запросов к API используется aiohttp.
- Для удобной работы с ответом API используется pydantic.
Используется SQLite. В качестве асинхронной обёртки используется aiosqlite.
BOT_TOKEN
- токен telegram ботаWEATHER_API_KEY
- ключ с сайта openweathermap.org (тариф One Call API)DATABASE_URL
- путь к базе данных (по умолчаниюsubscribers.db
)RUN_TYPE
- режим работы бота (polling
(по умолчанию) |webhook
)
- Основные зависимости:
pip install -r requirements.txt
- Зависимости для разработки (включают основные):
pip install -r requirements-dev.txt
Запуск бота происходит через:
python -m app
Сборка контейнера:
docker build -t cwb .
Запуск контейнера:
docker run -d -it --rm \
-e BOT_TOKEN=<token> \
-e WEATHER_API_KEY=<key> \
cwb
Или с переменными из файла:
docker run -d -it --rm --env-file ./.env cwb
Запуск через docker-compose:
docker compose up
Логи выводятся в консоль, а также сохраняются в папку logs (еженедельная ротация).
В файл undefined_weather_types.txt
сохраняются типы погод, для которых нет стикера.