Python Telegram Bot
رفتن به کانال در Telegram
☑️ Заявки принимаются автоматически! Обучаем созданию и продвижению чат-ботов в телеграм. ссылка: @pybotg связь: @oksi_young https://telega.in/channels/+Mj_twnrYuAxkZmUy/card/?r=BrHKEWMo
نمایش بیشتر5 003
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-67 روز
+1730 روز
آرشیو پست ها
5 003
Стандартные модули
Python поставляется с библиотекой стандартных модулей, описанной в отдельном документе Справочника по библиотеке Python. Некоторые модули встроены в интерпретатор. Они обеспечивают доступ к операциям, не входящим в ядро языка, и встроены для большей эффективности и предоставления доступа к основным средствам операционной системы, таким как системные вызовы. Один модуль заслуживает определённого внимания:
sys, который встроен в каждый Python интерпретатор. Переменные sys.ps1 и sys.ps2 определяют строки, использующиеся в качестве основного и вспомогательного приглашений (Код 1)
Эти две переменные определены только для интерактивного режима интерпретатора.
Переменная sys.path представляет собой список строк, определяющий путь поиска модулей. Он инициализируется значением путей по умолчанию, взятым из PYTHONPATH переменной среды или из встроенного значения по умолчанию, если PYTHONPATH не установлен. Изменить его можно с помощью стандартного списка операции (Код 2)
#python_обучение5 003
Продолжение к посту выше
Если же сообщение пришло от бота, то поле будет
inline_message_id(когда вы нажали кнопку в инлайн режиме), chat_instance используется в основном в играл телеграмма, мы его пропустим.
Еще есть поле data, и это тот текст, который был передан в апдейт нашей инлайн кнопки. И последнее, поле game_short_name, которое определяет уникальное название игры в телеграмм.
Так же, телеграмм говорим нам о том, что когда пользователь нажимает на инлайн кнопку, клиент телеграмма показывает часы кнопки, и показывает довольно долго, пока вы не отправите ему answerCallbackQuerry. А теперь давайте рассмотрим, что это за метод. При нажатии на кнопку бот может прислать окошко уведомления с каким то текстом, и это уведомление будет ответом на CallbackQuery. Для того, чтобы его отправить, нужно всего лишь передать callback_query_id по этому методу.5 003
Мечты работать программистом рушатся о скалистые вакансии от HeadHunter? Смени курс — заходи в @job_python
Здесь есть вакансии с достойными условиями для любого уровня от топов IT-индустрии (Яндекса, Сбера, Intel) и стартапов, которых нет на крупных сервисах. В общем, все в одном месте!
А еще к нам можно заглянуть за:
— вакансиями с зп 300–400 тысяч рублей в месяц;
— предложениями от зарубежных компаний с релокацией;
— стажировками и обучающим контентом для повышения скиллов.
Цени свое время — подписывайся на канал Python Job!
5 003
Будьте честны
Не пытайтесь создать ложное впечатление всемогущего инструмента — пользователь должен понимать, что ваш бот умеет и какие у него есть ограничения.
5 003
Путь поиска модулей
При импорте модуля с именем
spam интерпретатор сначала выполняет поиск встроенного модуля с данным именем. Если файл не найден, выполняется поиск имени файла spam.py в списке каталогов, заданных переменной sys.path. sys.path инициализированы из следующих мест:
— Каталог, содержащий входной сценарий (или текущий каталог, если файл не указан).
— PYTHONPATH (список имён каталогов с тем же синтаксисом, что и переменная оболочки PATH).
Зависит от установки по умолчанию. Читайте примечание на фото выше
После инициализации программы Python могут изменить sys.path. Каталог, содержащий выполняемый скрипт, помещается в начало пути поиска перед стандартным путём библиотеки. Это означает, что скрипты в этом каталоге будут загружены вместо одноименных модулей в каталоге библиотеки. Это ошибка, если замена не предназначена.
#python_обучение5 003
Ищем 100 человек, которые пройдут 4 курса по IT бесплатно и дадут обратную связь!
Старая цена - 23 500 руб
Цена для тестовой группы - 0 руб 💯
👉🏻 Получить курсы тут
5 003
Продолжение к посту выше
Так же, есть поля
switch_inline_query и switch_inline_query_current_chat, в которые мы можем передавать какой нибудь текст, используемый как запрос в инлайн режиме. Только, в отличии от второго, в первом вам нужно будет выбрать чат, который вы хотите сделать этот инлайн запрос. Данная фича удобна, когда, к примеру, вы хотите другу скинуть ссылку на бота или товар через инлайн режим.
Далее, поле callback_game используется для запуска игры(да, в телеграмм есть игры) и поле pay, куды вы, по идее, присылаете платежную кнопку, которая нужна будет для проведения оплаты товара.
Теперь, разберемся как работать с CallbackQuerry. Когда человека нажал на инлайн кнопку, боту приходит данный апдейт, у которого есть свой id, поле from(определяет того, кто нажал на кнопку), поле message(к нему изначально прикрепляется клавиатура).5 003
Путь поиска модулей
При импорте модуля с именем
spam интерпретатор сначала выполняет поиск встроенного модуля с данным именем. Если файл не найден, выполняется поиск имени файла spam.py в списке каталогов, заданных переменной sys.path. sys.path инициализированы из следующих мест:
— Каталог, содержащий входной сценарий (или текущий каталог, если файл не указан).
— PYTHONPATH (список имён каталогов с тем же синтаксисом, что и переменная оболочки PATH).
Зависит от установки по умолчанию. Читайте примечание на фото выше
После инициализации программы Python могут изменить sys.path. Каталог, содержащий выполняемый скрипт, помещается в начало пути поиска перед стандартным путём библиотеки. Это означает, что скрипты в этом каталоге будут загружены вместо одноименных модулей в каталоге библиотеки. Это ошибка, если замена не предназначена.5 003
☑️ Телеграм бот для продажи продуктов по подписке
• Бюджет: ожидает предложений
• Срок: по договоренности
• Задача:
Функционал такой же как у кафе, только человек заказывает не одноразово, а на всю неделю.
Функционал грубо: приветствие – меню – выбор блюд – выбор напитков – корректировка дат – корректировка количества – выбор времени доставки – ввод квартиры – выбор подписки – оплата.
В дальнейшем будет добавление продуктов только в текущий заказ, а не во всю подписку......
Откликнуться
5 003
Журнал Академии Яндекса — интересно об IT
Помогает молодым IT-специалистам работать с удовольствием и эффективно
→ Расскажет, как попасть в компанию, которая вдохновляет.
→ Научит правильно организовать работу, расти в глазах коллег (и профессионально).
→ Поможет на лету решать проблемы, стать своим в сообществе и работать без стресса.
→ Покажет, как устроена работа в Яндексе изнутри — с точки зрения команд, продуктов и технологий.
→ Подсветит гиковские темы: от старых компьютерных игр до редких языков программирования.
Подписывайтесь, чтобы не пропустить свежие публикации!
5 003
Продолжение к посту выше
Ну и как обычно, давайте обратимся к нашему
API.
У нас есть объект InlineKeyboardMarkup, в котором есть всего одно поле - inline_keyboard, куда вы, как и в обычных кнопках, присылаете массив массивов, то есть сами кнопки. Но здесь используется уже InlineKeyboardButton, в котором уж очень много полей.
Самое первое поле - text, которое является единственным обязательным заполненным полем и идет в паре с другими полями, если оно нужно. Url - ссылка, по которой пользователь может перейти; login_url - ссылка для авторизации пользователя на вашем сайте, куда телеграмм сам автоматически передаст все данные пользователя в определенном запросе; callback_data - это будет какой то текст, прописанный в кнопке, но не видимый пользователю, который будет получать бот в виде хендлера CallbackQuery.
Остальные поля мы постараемся разобрать в следующем посте.5 003
Теперь мы затронем тему инлайн кнопок. На этот раз это не совсем текстовые кнопки, и когда вы на них нажимаете, боту не будет отправляться сообщение текстом, а будет отправляться callback.
Эти кнопки очень удобны тем, что они прикрепляются к одному сообщению и их потом можно менять сколько угодно раз, изменяя это же сообщение. То есть, пользователю не придется еще раз и еще раз отправлять сообщение, чтобы прислались новые кнопки.
Так же, инлайн кнопки удобны тем, чтоб позволяют редактировать текст, добавляя к нему разнообразные эмодзи. Но результат нажатия на кнопку будет скрытым, то есть бот будет его получать в упрощенном виде, который содержит только нужную информацию, а все это взаимодействие останется "за кадром".
Это были небольшие организационные моменты, дабы познакомить вас с инлайн кнопками. Более глубоко с ними мы разберемся в следующих постах.
5 003
Выполнение модулей как скриптов
Когда вы запускаете модуль Python в виде (Код 1) то код в этом модуле будет исполнен в момент его импортирования, но значением
__name__ будет строка "__main__".
Это значит, что добавляя следующий код в конец сценария (Код 2) вы можете сделать возможным запуск файла и в качестве сценария, и в качестве импортируемого модуля.
Это возможно, поскольку разбирающий командную строку код выполняется только при исполнении модуля как «главного» файла (Код 3).
Если модуль импортируется, код не будет выполнен (Код 4). Такой приём часто используется, чтобы предоставить удобный пользовательский интерфейс к модулю или для тестирования (выполнение модуля в качестве сценария запускает набор тестов).
#python_обучение5 003
Финал поста выше
Теперь, давайте создадим хендлер еще одним способом, чтобы, допустим, отлавливать нажатия по нескольким кнопкам сразу.
Мы можем сделать это с помощью фильтра text:
@dp.message_handler(Text(equals=["Пюрешка", "Макарошки"]))
async def get_food(message: types.Message): await message.answer(f"Вы выбрали: {message.text}", replay_markup=ReplayKeyboardRemove()). В данном хендлере replay_markup отвечает за то, чтобы убирать данные кнопки у пользователя.
Далее, наш хендлер нужно ипортировать в init.py. Поэтому, переходим и прописываем from .menu import dp. После чего, данный хендлер попадает в app.py. Все, теперь наши кнопки настроены и можно их тестировать.5 003
Зарплата Python-разработчика на должности мидла в России – от 110 до 250 тысяч рублей в месяц. Это исследования Хабр Карьеры.
А выучить Python до уровня мидла реально за 13 месяцев. Главное, крутая методика и внимательный ментор.
Этим и занимаются разработчики-преподаватели из Devman. Никаких занудных учебников и бесполезных туториалов. Вы сразу приступаете к практике.
И самое интересное:
Первая неделя курса БЕСПЛАТНАЯ!
- уроки и проекты из жизни;
- 50+ проектов для портфолио;
- крутое код-ревью и скорая помощь от преподавателей.
Сразу практика с первых уроков, а ваш код проверит опытный разработчик и даст подробную обратную связь.
Ждём вас на бесплатной пробной неделе: bit.ly/3E5cMX5
