Очень стыдно перед подписчиками и читателями, что я так долго не мог продолжить писать сей бот. Что-то с головой моей было последние полгода. Не мог настроиться на изучение нового. Вот я похоже на финишной черте, сегодня утром дописал обработку первых трех команд (lowprice, highprice, bestdeal). Отправил куратору и пришел положительный ответ:
Вот так у меня бот работает на момент написания статьи:
Пожалуй пора приступать к объяснению как же это всё работает...
Ну и пожалуй было неправильным, в первых пяти частях, писать заголовок типа:
Нужно было в заголовке указать чем именно будет заниматься данный бот. Ведь, надеюсь, это не последняя программа написанная мной. Но переименовывать теперь заголовки, тоже не комильфо - дзен этого не любит (изменений в статьях). Так что оставлю всё как есть, зато потом сам оглядываясь назад буду понимать какую я там "дичь" написал!
Черновик статьи написал тоже очень давно, все что было написано - стало слегка не актуально. В пятой части я брал за основу календаря х.з какой то календарь, потом подумал - а зачем пользователю выбор года?! Кто ищет себе отель на год вперёд?! Вообще надо исходить из текущего месяца и даты.
В общем формат статьи будет такой: Я код буду писать только в картинках чтобы тот кто читает статью не мог сделать Ctrl+C, Ctrl+V. Ребятушки, потренируйте ручки переписывая код - что-то отложится в голове. Скриншот работы бота и в этой же галерее скриншоты того как это сделано.
В общем, нашел "календарь" на гитхабе у "Dmitry Gridnev", который слегка подправил ибо там была кнопка "Отмена", а зачем ее нажимать ведь она не несет никакой полезной функции! Ну и так, по мелочам еще внес изменения.
В одну галерею код, относящийся к календарю не вместился, вторая галерея:
Вот такой получился код, связанный с календарём. С одной стороны вроде и не много строк, но в то же время и не мало. Но если разобраться то никаких сложностей.
Кнопки генерации возможных вариантов городов не претерпели никаких изменений.
Блин, немного не по порядку начал писать, надо было сначала вывести как работают кнопки с вариантами городов, а потом уже как календарь, ибо календарь используется практически в самом конце опроса пользователя (как можно увидеть на ролике в начале). Ну да ладно, оставлю как есть, ибо переделывать - пол дня как минимум (тут нельзя перетащить галереи сверху вниз).
Сам опрос пользователя осуществляется с помощью "машины состояний" пользователя. Создается новый класс в папке states, в котором прописываются эти состояния.
Ну и далее мы используем эти состояния чтобы записать ответ пользователя:
Вот в общем-то, мы у пользователя спросили все что нам нужно, а он ответил на наши вопросы и мы записали с помощью "машины состояний" эти ответы. Следующим шагом я отправляю в чат всю собранную информацию в виде:
Ну вот, мы вывели исходную информацию в чат (у нас есть все необходимые данные для формирования дальнейших запросов), переходим к поиску отелей.
Запрос к серверу у меня выполнен в виде одного файла:
Это пожалуй будет финальная версия программы. Осталось прописать взаимодействие с базой данных (буду использовать sqlite3), в которую запишу информацию, собранную от пользователя, и результаты поиска выданные по запросу пользователя. Это видимо будет две таблицы (но это не точно). И потом по команде "history" будет происходить выборка из этой БД, и отправка пользователю.
Скорее всего, на следующей неделе, 13 - 19 марта, я закончу этот долгострой.
И самое главное - я очень начинающий программист, не стоит воспринимать мою писанину как истину в последней инстанции. Я всего лишь надеюсь что мои изыскания помогут кому-то сдвинуться с мёртвой точки непонимания происходящего!!!
Ну вот, как-то так. Не пожалейте банального лайка данной статье. Я старался.
Если я что-то упустил, или есть какие-то вопросы - я с радостью отвечу, даже на самые тупые вопросы. Комменты открыты для всех!