Кто-то сказал: "Для лучшего запоминания пройденного материала - расскажи об этом людям". Рассказываю!
В данный момент занимаюсь написанием дипломного проекта по программированию, курс Python Basic на платформе SkillBox. Дипломный проект - написать телеграм-бота, который ищет информацию об отелях и хостелах, в городах, по запросу пользователя.
Изначально дается шаблон для написания данной программы, вот ее структура:
В качестве первого задания (для отправки куратору) был пункт - исправить шаблон таким образом, чтобы бот: во-первых - запустился, а во вторых мог отзываться на команду /hello_world, и на слово "привет".
На первый взгляд структура программы выглядит очень "страшно" куча всяческих файлов и папок, глаза не знают за что зацепиться, но на самом деле - очень просто: тут у нас настройки, там различные обработчики событий, там различные кнопочки и клавиатуры и прочее (о чем я напишу позже, когда сам разберусь в этом).
Если с реализацией реакции программы на слово "привет" у меня не составило труда:
То с выполнением команды /hello_world - хоть убей не понимаю почему программа в упор не видит эту команду! Команды /start и /help она видит и реагирует на них а мою "привет_мир" - игнорирует. Если "выключаю" работу файла echo.py, то моя команда работает как надо, но тогда нет реакции на слово "привет".
Изначально файл "hello_world.py", я поместил в папку "default_handlers" (обработчик по-умолчанию), ибо там и другие обработчики событий. В каждой папке есть файлы __init__.py, которые отвечают за инициализацию каждого файла-обработчика событий.
Куда мне нужно было сделать запись о моём, новом файле "hello_world.py", что я и сделал. Вроде бы всё правильно, но не работает, программа отрабатывает лишь файл "echo.py", а до моего уже не доходит. А все потому что я свой файл "инициализировал" в файле __init__.py, после файла echo, который и обрабатывал мою команду совершенно не так как это нужно было мне. Дело было в очередности, а я про это забыл.
Запись должна располагаться перед echo, вот как то так:
Но оставлять мой файл в папке, которая предназначена для обработки событий по-умолчанию было как то неправильно. Поэтому создал новую папку в папке handlers (обработчики), назвал её custom_handlers и туда уже отправил свой файл. В данной папке автоматически сгенерировался пустой файл __init__.py в котором нужно было прописать мой файл.
Теперь нужно было программе объяснить какие файлы обрабатывать в первую очередь а какие во вторую, чтобы сначала обрабатывалось содержимое custom_handlers а потом уже default_handlers это так же прописывается в файле __init__.py, но уже директории handlers, и не забываем про очередность записей, иначе не будет работать.
Вот вроде бы и всё, если вдруг чего-то упустил или не дописал, то маякните внизу в комментариях. А за лайк и подписку буду очень благодарен.
Следующей публикацией будут нюансы реализации команды /lowprice:
После ввода команды у пользователя запрашивается:
1. Город, где будет проводиться поиск.
2. Количество отелей, которые необходимо вывести в результате (не больше
заранее определённого максимума).
3. Необходимость загрузки и вывода фотографий для каждого отеля («Да/Нет»):
a. При положительном ответе пользователь также вводит количество
необходимых фотографий (не больше заранее определённого
максимума)
Да прибудет с вами сила!
ЗЫ. Как жеж без прикольной картиночки?! Вот: