Python Telegram Bot
Открыть в Telegram
☑️ Заявки принимаются автоматически! Обучаем созданию и продвижению чат-ботов в телеграм. ссылка: @pybotg связь: @oksi_young https://telega.in/channels/+Mj_twnrYuAxkZmUy/card/?r=BrHKEWMo
Больше5 003
Подписчики
Нет данных24 часа
-67 дней
+1730 день
Архив постов
5 003
Продолжение к посту выше
Теперь разберем подробнее код из прошлого поста. Наша переменная menu по
api состоит из массива массивов, поэтому мы передаем ей keyboard, в котором хранятся все наши кнопки. Опять же, тот пример с котлеткой, макарошками и пюрешкой всего лишь пример.
Наша клавиатура готова к использованию, но, единственное, что нам осталось сделать, это в файле init.py прописать импорт. То есть from .menu import menu и пока что закрываем этот файл. По команде /menu нам будет присылаться прописанная клавиатура.
Далее, нужно прописать реакцию на эти кнопки. Создаем хендлер для котлеток: @dp.message_handler(text="Котлетки") async def get_cotletki(message: types.Message): await message.answer("Вы выбрали котлетки."). Это один из способов отслеживания нажатия на одну нопку. В следующем посте разберем, как создавать хендлеры для реакции на нажатия нескольких кнопок.5 003
Станьте Python-разработчиком на Хекслете
✔ Пройдите бесплатные вводные курсы, чтобы познакомиться с профессией.
✔ Если понравится — присоединяйтесь к обучению в группе с наставником
✔ Развивайте нетворкинг в 26-тысячном сообществе айтишников
✔ Выполняйте проекты, участвуйте в Open Source, готовьтесь к трудоустройству
Начните прямо сейчас, переходите по ссылке выше. Вводные ознакомительные курсы профессии доступны бесплатно сразу после регистрации👆👆👆
Оцените формат и решите, стоит ли продолжать!
👻🎁 P.S. не упустите подарки и спецпредложения в честь Черной Пятницы!
Подарок на выбор при покупке профессии или вторая программа за полцены.
5 003
Модули
Модуль — это файл, содержащий определения и Python операторы. Именем файла является имя модуля с добавленным суффиксом
.py. Внутри модуля, имя модуля (в качестве строки) доступно в виде значения глобальной переменной с именем __name__. Например, используя ваш любимый текстовый редактор, создайте в текущем каталоге файл с именем fibo.py со следующим содержимым Код 1
Теперь можно войти в интерпретатор Python и импортировать этот модуль следующей командой Код 2
Имена функций, определенных в fibo, не вводятся непосредственно в текущую таблицу символов; здесь вводится только имя модуля fibo. С помощью имени модуля можно получить доступ к функциям Код 3
Если вы собираетесь использовать функцию часто, можно присвоить её локальному имени Код 4
#python_обучение5 003
Продолжение к посту выше
Далее, пишем
async def show_menu(message: types.Message) и что то отвечаем пользователю. Например: await message.answer("Выберите товар из меню ниже", replay_markup=menu). В данном примере использован replay_markup для вызова клавиатуры.
Теперь нам надо создать нашу клавиатуру menu. Переходим в keyboards/default и создаем тут файл с названием menu.py. Это конечно не совсем правильно, потому что у нас уже есть файл с именем menu, но для такого маленького проекта это не страшно.
В самом файле создаем объект нашей менюшки menu = ReplayKeyboardMarkup(keyboard = [[KeyboardButton(text="Котлетки")], [KeyboardButton(text="Макарошки"), KeyboardButton(text="Пюрешка")], resize_keyboard=True). Пока не стоит вникать что тут написано, подробнее мы разберемся в следующем посте. А пока, напоминаем, что данные текстовые примеры используются лишь в учебных целях.5 003
Продолжение к посту выше
Далее, пишем
async def show_menu(message: types.Message) и что то отвечаем пользователю. Например: await message.answer("Выберите товар из меню ниже", replay_markup=menu). В данном примере использован replay_markup для вызова клавиатуры.
Теперь нам надо создать нашу клавиатуру menu. Переходим в keyboards/default и создаем тут файл с названием menu.py. Это конечно не совсем правильно, потому что у нас уже есть файл с именем menu, но для такого маленького проекта это не страшно.
В самом файле создаем объект нашей менюшки menu = ReplayKeyboardMarkup(keyboard = [[KeyboardButton(text="Котлетки")], [KeyboardButton(text="Макарошки"), KeyboardButton(text="Пюрешка")], resize_keyboard=True). Пока не стоит вникать что тут написано, подробнее мы разберемся в следующем посте. А пока, напоминаем, что данные текстовые примеры используются лишь в учебных целях.5 003
English for Developers - канал для тех, кто хочет учить технический английский. От создатателей популярного ит-канала Машинное обучение.
1. техническая лексика
2. опросы на английском
3. шутки на английском
4.разбор ит-документации
Подписывайтесь, проходите опросы, читайте полезные прогерские фразы на английском.
1 канал вместо тысячи учебников и курсов
5 003
Продолжение к посту выше
Теперь, когда мы знаем, как это используется в
api, это все уже реализовано в aiogram и удобно в использовании. Поэтому, в этой серии постов будет разбираться ветка default_buttons.
Для начала нужно создать новый файл в папке users, который назовем menu.py. Далее выполняется импорт из loader нашего диспатчера. Создаем хендлер @dp.message_handler(), в который мы будет ожидать что то. Мы хотим, чтобы бот на команду menu присылал клавиатуру. Для этого из aiogram.dispatcher.filters импортируем Command, который прописываем в нашем хендлере и передаем ему текст menu. Хендлер будет выглядеть так: @dp.message_handler(Command("menu")). Что это значит? Если боту будет прислана команда /menu, то он будет выполнять все, что записано в хендлере .5 003
Сравнение последовательностей и других типов
Объекты последовательностей можно сравнивать с другими объектами с тем же типом последовательности. Сравнение использует лексикографический порядок: сравниваются первые два элемента, и если они различны — результат сравнения определён; если они равны, сравниваются следующие два элемента и так далее до тех пор, пока одна из последовательностей не будет исчерпана.
Если сравниваемые два элемента сами являются последовательностями одного типа, лексикографическое сравнение происходит в них рекурсивно.
Если все элементы обеих последовательностей оказались равны, последовательности считаются равными.
Если одна последовательность оказывается стартовой последовательностью другой, более короткая последовательность считается меньшей.
Лексикографическое упорядочивание строк использует порядок в таблице Юникод для индивидуальных символов. Несколько примеров сравнений между однотипными последовательностями на фото.
5 003
Продолжение к посту выше
Есть так же поле
one_time_keyboard, которое прячет клавиатуру при нажатии на кнопку, но клавиатура не убирается совсем, а просто сворачивается. Далее, есть поле selective, предназначенное для групповых чатов. Когда вы хотите отправить кнопку только для пользователей, которые были упомянуты в сообщении, то есть был сделан тег через @, то это поле как раз для этого.
Теперь подробно разберем параметры каждого поля. У KeyboardButton есть: text - текст кнопки, request_contact - получение контактов пользователя по нажатию на кнопку(к примеру, получение номера телефона происходит не ручным вводом, а просто проверкой его на реальность), request_location - запрос местоположения пользователя по нажатию на кнопку, request_poll - запрос на создание опроса. Данные параметры работают лишь в личной переписке с ботом и не будут работать в групповых чатах или каналах.5 003
🐍Змей-искуситель говорит: «Выучи Python и начни уже получать достойную зарплату не выходя из дома»
Заманчиво, правда? Тогда поддайся искушению, подпишись на «Программирование на Питоне» и уже через несколько месяцев получи первую зарплату за свой код
5 003
Методы перебора элементов. Часть 3
Для организации цикла по отсортированной последовательности можно применить функцию
sorted(), которая возвращает отсортированный список, оставляя исходный без изменений. Код 1
Иногда появляется соблазн изменить список во время его обхода; однако, часто проще и безопаснее создать новый список. Код 2
#python_обучение5 003
В этом посте поговорим про реализацию простых текстовых кнопок в Телеграм. Что это за кнопки? Это кнопки, которые могут появится у пользователя под текстовым полем, являющиеся упрощенным способом ввода информации, чтобы пользователь не вводил текст, а нажал на кнопку и все.
Сами кнопки присылаются пользователю, к примеру, с приветственным сообщением в поле
replaymarkup. Как это выглядит в api? У нас есть метод sendMessage, в котором есть поле replay_markup, куда мы можем передавать инлайн кнопки и обычные кнопки. Поэтому, если перейти в replayKeyboardMarkup, то можно увидеть, что это за объект. В нем есть 4 поля, с двумя из них сейчас познакомимся. Keyboard - это массив массивов, в котором лежат наши отдельные кнопки KeyboardButton. Resize_keyboard, который можно использовать когда кнопок не много и нужно, чтобы они занимали мало места.