Найти в Дзене
Движение-Жизнь

Телеграм бот "Поиск отелей по заданным параметрам". Часть шестая. Предфинальная

Очень стыдно перед подписчиками и читателями, что я так долго не мог продолжить писать сей бот. Что-то с головой моей было последние полгода. Не мог настроиться на изучение нового. Вот я похоже на финишной черте, сегодня утром дописал обработку первых трех команд (lowprice, highprice, bestdeal). Отправил куратору и пришел положительный ответ:

Ответ куратора...
Ответ куратора...

Вот так у меня бот работает на момент написания статьи:

Пожалуй пора приступать к объяснению как же это всё работает...

Ну и пожалуй было неправильным, в первых пяти частях, писать заголовок типа:

Нужно было в заголовке указать чем именно будет заниматься данный бот. Ведь, надеюсь, это не последняя программа написанная мной. Но переименовывать теперь заголовки, тоже не комильфо - дзен этого не любит (изменений в статьях). Так что оставлю всё как есть, зато потом сам оглядываясь назад буду понимать какую я там "дичь" написал!

Черновик статьи написал тоже очень давно, все что было написано - стало слегка не актуально. В пятой части я брал за основу календаря х.з какой то календарь, потом подумал - а зачем пользователю выбор года?! Кто ищет себе отель на год вперёд?! Вообще надо исходить из текущего месяца и даты.

В общем формат статьи будет такой: Я код буду писать только в картинках чтобы тот кто читает статью не мог сделать Ctrl+C, Ctrl+V. Ребятушки, потренируйте ручки переписывая код - что-то отложится в голове. Скриншот работы бота и в этой же галерее скриншоты того как это сделано.

В общем, нашел "календарь" на гитхабе у "Dmitry Gridnev", который слегка подправил ибо там была кнопка "Отмена", а зачем ее нажимать ведь она не несет никакой полезной функции! Ну и так, по мелочам еще внес изменения.

В одну галерею код, относящийся к календарю не вместился, вторая галерея:

Вот такой получился код, связанный с календарём. С одной стороны вроде и не много строк, но в то же время и не мало. Но если разобраться то никаких сложностей.

Кнопки генерации возможных вариантов городов не претерпели никаких изменений.

Блин, немного не по порядку начал писать, надо было сначала вывести как работают кнопки с вариантами городов, а потом уже как календарь, ибо календарь используется практически в самом конце опроса пользователя (как можно увидеть на ролике в начале). Ну да ладно, оставлю как есть, ибо переделывать - пол дня как минимум (тут нельзя перетащить галереи сверху вниз).

Сам опрос пользователя осуществляется с помощью "машины состояний" пользователя. Создается новый класс в папке states, в котором прописываются эти состояния.

-5

Ну и далее мы используем эти состояния чтобы записать ответ пользователя:

Вот в общем-то, мы у пользователя спросили все что нам нужно, а он ответил на наши вопросы и мы записали с помощью "машины состояний" эти ответы. Следующим шагом я отправляю в чат всю собранную информацию в виде:

Ну вот, мы вывели исходную информацию в чат (у нас есть все необходимые данные для формирования дальнейших запросов), переходим к поиску отелей.

Запрос к серверу у меня выполнен в виде одного файла:

-9
Вывод программы
Вывод программы

Это пожалуй будет финальная версия программы. Осталось прописать взаимодействие с базой данных (буду использовать sqlite3), в которую запишу информацию, собранную от пользователя, и результаты поиска выданные по запросу пользователя. Это видимо будет две таблицы (но это не точно). И потом по команде "history" будет происходить выборка из этой БД, и отправка пользователю.

Скорее всего, на следующей неделе, 13 - 19 марта, я закончу этот долгострой.

И самое главное - я очень начинающий программист, не стоит воспринимать мою писанину как истину в последней инстанции. Я всего лишь надеюсь что мои изыскания помогут кому-то сдвинуться с мёртвой точки непонимания происходящего!!!

Ну вот, как-то так. Не пожалейте банального лайка данной статье. Я старался.

Если я что-то упустил, или есть какие-то вопросы - я с радостью отвечу, даже на самые тупые вопросы. Комменты открыты для всех!