Телеграм-бот отправляет пользователю информацию о текущей погоде. Для получения информации пользователю нужно выбрать способ передачи его текущей локации боту. На данный момент есть два варианта:
Вариант передачи локации | Описание способа |
---|---|
По городу |
Пользователь нажимает на соответствующую кнопку в меню бота. Бот переходит в режим ожидания пользовательского ввода. Пользователь отправляет свой город в ответе боту и получает погоду. |
По геолокации |
Пользователь нажимает на соответствующую кнопку в меню бота. Бот переходит в режим ожидания пользовательского ввода. Пользователь отправляет свою геолокацию через специальный пункт во "Вложениях". Бот в ответ отправляет погоду. |
- Бот использует библиотеку Aiogram для работы с Telegram API.
- Для получения данных о погоде бот обращается к API OpenWeatherMap. Вы должны зарегистрироваться и получить свой API ключ на сайте OpenWeatherMap.
- Бот использует библиотеку Aiohttp для выполнения асинхронных HTTP-запросов к сервису OpenWeatherMap.
- При запуске и остановке бота отправляются соответствующие сообщения в Telegram Администратора.
- Бот логирует свою работу в отдельном файле bot.log. По-стандарту выставлен уровень логирования DEBUG.
- После нажатия на одну из кнопок запроса погоды бот будет ожидать ответ от пользователя. Если пользователь пришлёт некорректный город, бот попросит повторить запрос. Если пользователь передумал запрашивать погоду - нажатие на кнопку отмена отключит состояние ожидания.
Команда /start :
Нажатие на кнопку "Меню" :
Нажатие на кнопку "Погода по городу" :
Отправка города и получение ответа :
Нажатие на кнопку "Погода по геолокации" :
Отправка геолокации и получение ответа :
Будет добавлена возможность запрашивать почасовой прогноз. Он будет запрашиваться при помощи Inline кнопок в ответе бота. Прогноз будет поделён на несколько вариантов: за 3, 6, 12 и 24 часа.
Будет добавлена возможность запрашивать прогноз на 1 - 5 суток по аналогии с почасовым.
- Склонируйте репозиторий:
git clone https://github.com/PrimeStr/meteo_assistant_bot.git
- Перейдите в папку с проектом:
cd meteo_assistant_bot/
- Установите виртуальное окружение для проекта:
Примечание: Обратите внимание, что в моём случае используется инструмент создания виртуальных сред venv, но вы можете использовать любой другой на своё усмотрение.
python3 -m venv venvpython -m venv venv
- Активируйте виртуальное окружение для проекта:
source venv/bin/activate
.\venv\Scripts\activate.ps1source venv/Scripts/activate
- После активации виртуального окружения установите зависимости:
pip install -r requirements.txt
-
Зарегистрируйте telegram-бота и получите его токен. Для этого воспользуйтесь услугами BotFather.
-
Создайте в корневой директории проекта файл .env для хранения переменных окружения. Перенесите переменные из файла .env.example. Дополните их необходимыми значениями.
API_TOKEN=example # Вставьте сюда токен вашего бота
ADMIN_CHAT_ID=example # Вставьте сюда свой Telegram ID для получения важных сообщений
WEATHER_API_KEY=example # Вставьте сюда токен API сервиса OpenWeatherMap
# Следующие переменные вам понадобятся только в случае запуска бота на Webhooks
WEBHOOK_HOST=0.0.0.0 # Вставьте сюда белый IP вашего сервера
WEBHOOK_PORT=8443 # 443, 80, 88 или 8443 (порт должен быть 'открыт')
-
Для запуска сервера локально, используя polling, раскомментируйте 109 строку в файле main.py.
-
Запустите проект локально:
python3 main.pypython main.py
Максим Головин
Вы можете заглянуть в другие мои репозитории в профиле GitHub. Нажмите здесь.