Итоговый проект
Вы создали бота и научили его отправлять сообщения. Через API вы научились запрашивать из кода статус домашки за нужный период. Теперь соберите эти сервисы в один — и у вас получится бот-информатор.
Для полного понимания картины нужно познакомиться понятием Polling (англ. «опрос»).
Статус домашки может измениться в любой момент, и поэтому одного запроса к API будет недостаточно. Нужно, чтобы бот постоянно бомбил сервер вопросами: «Что там с домашкой, ещё не проверили? ... А сейчас? ... А теперь?», регулярно отправляя запросы к API.
Если бот будет слишком назойлив, например, будет дёргать сервер каждую минуту, это может не понравиться серверу (как будто у него нет других дел), и он забанит назойливого бота. Поэтому нужно соблюдать приличия и интересоваться деликатно, скажем, раз в 10 минут.
Механизм Polling'а вам предстоит придумать самостоятельно.
Отправляем бота жить на сервер
При выключении вашего компьютера бот станет недоступен. Хорошо бы переселить его на какой-то компьютер, который никогда не спит. Такие компьютеры называют «веб-серверы», а размещение своих проектов на веб-серверах называют «услугой хостинга» или просто «хостингом». И за эту услугу не всегда берут деньги.
В этом уроке мы поселим бота на бесплатный сервис Heroku.
Как разместить бота на Heroku
- Зарегистрируйтесь на Heroku.
- Создайте приложение (кнопка New → Create new app).
Вас попросят придумать название для приложения и выбрать регион. Укажите географически близкий к вам регион: даже в интернете физические расстояния имеют значение.
- Теперь нужно привязать аккаунт на GithHub: зайдите в раздел Deploy, выберите GitHub в разделе Deployment method и нажмите Connect to GitHub.
После подтверждения действия (вас попросят ввести пароль), введите название репозитория, в котором находится код:
Осталось только нажать кнопку Deploy Branch. Heroku установит все зависимости и запустит приложение на сервере.
Имейте в виду: чтобы всё завелось, нужно поместить в репозиторий два служебных файла: requirements.txt со списком зависимостей, чтобы Heroku знал, какие пакеты ему нужно установить, и файл Procfile, в котором указана точка входа — имя файла, который должен быть запущен. Более подробно читайте в документации.
Здесь доступен пример размещения проекта на Heroku, прочтите его, и картина прояснится.
Теперь нужно передать на сервер переменные окружения. Откройте вкладку Settings и спуститесь до Config Vars. Нажмите Reveal Config Vars и добавьте поочередно ключ и значение для каждой переменной.
Теперь ваш бот будет работать круглые сутки, даже без перерыва на обед.
Обратите внимание на ограничения бесплатного аккаунта Heroku: между запросами не должно быть более получаса, иначе сервер «уснёт». Опрашивайте API домашек раз в 20 минут или около того.