Python Telegram Bot
Kanalga Telegram’da o‘tish
☑️ Заявки принимаются автоматически! Обучаем созданию и продвижению чат-ботов в телеграм. ссылка: @pybotg связь: @oksi_young https://telega.in/channels/+Mj_twnrYuAxkZmUy/card/?r=BrHKEWMo
Ko'proq ko'rsatish5 003
Obunachilar
Ma'lumot yo'q24 soatlar
-67 kunlar
+1730 kunlar
Postlar arxiv
5 003
Продолжение к посту выше
Познакомимся немного с
InputMessageContent. В него можно передать: InputTextMessageContent, InputLocationMessageContent, InputVenueMessageContent, InputContactMessageContent.То есть, вот эти все вещи можно передать, и, помимо этого, в answerInlineQuery(туда приходит results) можно заново загрузить предыдущие сообщения, либо взять их из кеша.
Тогда, вам нужно будет передать всего лишь audio_file_id(это пример, сюда можно передать id любого файла), в противном случае, нам нужно передавать audio_url, который не всегда отрабатывает корректно. На этом с теорией можно закончить. В следующем посте уже приступим к делу и начнем писать хендлер5 003
Продолжение к посту выше
Приступим к написанию хендлера:
@dp.inline_handler(). Еще немного теории. В данных хендлер приходят отдельные апдейты InlineQuery. И, если обратиться в Bot API, то можно увидеть, что Inline Mode имеет InlineQuery, который, как раз таки, явялется отдельным типом апдейта.
Сам апдейт имеет спецаильный метод - answerInlineQuery, который можно использовать для приходящих апдейтов. У этого метода так же есть свои методы: inline_query.id(id того, кому вы хотите ответить), results(список InlineQueryResult, который может включать огромное количество разнородных списков на каждый тип данных(все они прописаны в документации)).
Ну и помимо этого, у каждого InlineQueryResult есть input_message_content(обязательный параметр) и у него есть InputMessageContent, куда можно передать различные методы, с которыми мы познакомимся в следующем посте5 003
Замеры производительности
Некоторым пользователям
Python интересно знать относительную производительность различных подходов к решению одной и той же проблемы. Python предлагает инструмент для немедленного ответа на эти вопросы.
Например, очень заманчиво использовать присваивание кортежей вместо традиционного подхода к замене значений переменных местами. Модуль timeit быстро продемонстрирует незначительное превосходство кортежей.
В отличие от высокого разрешения модуля timeit, модули profile и pstats предлагают возможность обнаружить критические по времени участки в больших фрагментах кода.
#python_обучение5 003
Продолжение к посту выше
Немного протестим бота. Регистрация в нем будет проходить очень просто: пользователю нужно нажать кнопку
start. Это не единственный способ и его выбор зависит полностью от вас и вашей фантазии. Мы же остановимся на нем. В идеале, хендлер для inline режима создается в отдельной папочке inline, потому что inline mode не принадлежит ни к какому чату, но ради учебного примера мы оставим его в папке users.
Создаем файл inline.py и начинаем писать наш хендлер. В силу того, что inline mode никак не связан с чатами, message_handler и callback_query_handler нам не подойдут. В этих постах будет использоваться специальный хендлер, предназначенный для inline режима, который называется inline_handler. Более подробно и на примере мы с ним познакомимся в следующем посте5 003
Какая из строчек кода выведет структуру, отсортированную в порядке увеличения возрастов животных?
5 003
Росбанк F*ckup Night
Бесплатное мероприятие для IT-специалистов, которые понимают, что ошибаться — это нормально. Будем говорить про фейлы и уроки в формате коротких питчей и обсуждений.
🔵 Как выстроить работу с джунами и не поймать «биг бадабум»;
🔵 Платить ли за T-shape;
🔵 «Проблема не на нашей стороне или все же…»;
Полный список тем и спикеров узнайте на нашем сайте.
Мероприятие можно посмотреть онлайн или посетить лично — оно пройдет в офисе Росбанка в башне ОКО II бизнес-центра "Москва-Сити".
10 марта, в 19:00
Online / offline
5 003
В этих постах мы поговорим про
inline режим. Это, довольно, интересная и полезная вещь. С помощью него к вашему боту могут обратиться в любом чате, введя его username. А ваш бот в это время сможет удобно отобразить данные в виде списка, который можно будет крутить на клиенте телеграма.
Например, довольно удобно работают боты Pic, Gif, которые отпраляют результаты в виде кучи gif или картинок. Собственно, в этом и состоит удобство данного режима, ибо пользователям не нужно отправлять сообщения, а достаточно всего лишь ввести имя бота и запрос, не отправляя сообщения. В следующем посте разберем этот режим на конкретном примере5 003
Сжатие данных
Наиболее распространённые форматы сжатия и архивации напрямую поддерживаются модулями стандартной библиотеки, включая:
zlib, gzip, bz2, lzma, zipfile и tarfile.
#python_обучение5 003
Каналы от Senior разработчиков
Хотите быстро выучить Python, Java или другой язык программирования? Подписывайтесь на каналы от опытных разработчиков, где они объясняют код и учат программировать.
🐍 Канал Senior Python разработчика:
@seniorpy
☕️ Канал Java разработчика:
@seniorjavist
🖥 Канал C++ разработчика:
@seniorcpp
🖥 Канал JavaScript разработчика:
@senior_front
🛢 Обучение SQL с нуля:
@seniorsql
5 003
Что выведет интерпретатор для следующей программы (версия Python 3.6+)?
5 003
Финал поста выше
По своей сути, эти теги в точности такие же, как и в
HTML. Но, каждый тег в aiogram имеет еще один параметр - quote, который позволяет обойти значки тегов(<>/&), заменяя их на другие. Например, < - <, > - >. Таким образом, форматирование проходит без проблем.
Создадим рандомный небольшой форматированный текст и закинем в хендлер, который будет присылать нам этот текст. Сам хендлер выглядит следующим образом: @dp.message_handler(Command('parse_mode_html')) async def show_parse_mode(message: types.Message): await message.answer(html_text, parse_mode=types.ParseMode.HTML). Протестируем и получим отформатированный текст. В целом, это все. Теперь вы можете использовать форматирование текста в своих проектах5 003
Дата и время
Модуль
datetime предлагает классы для работы с датами и временем как в простых, так и сложных случаях. Кроме поддержки календарной арифметики, реализация обращает особенное внимание на эффективность вычисления составных частей для вывода и дальнейших манипуляций. Модуль также предлагает объекты с поддержкой временных зон
#python_обучение5 003
Продолжение к посту выше
Разберем еще несколько тегов:
- для моноширного текста, по аналогии можно использовать . Ну и тег для гиперссылок будет выглядеть следующим образом: , где alt - необязательный параметр, который отображает название файла в случае его ошибочной загрузки или, если файл не найден. Параметр href предназначен для того, чтобы передать в него нужную вам ссылку.
В aiogram, для того, чтобы это все не запоминать, есть утилита markdown, которая импортируется из aiogram.utils. В себе она содержит основые теги форматирования текста(жирний, курсивный, моноширный шрифты и т.д).
Для того, чтобы работать с этой утилитой, вы просто должны написать нужный тег и в скобочках передать слово/текст, которые нудно отформатировать. Например: hbold("Какой то текст")5 003
Имеется кортеж вида T = (4, 2, 3). Какая из операций приведёт к тому, что имя T будет ссылаться на кортеж (1, 2, 3)?
5 003
В этих постах мы разберем примеры форматирования текста.
Несмотря на то, что есть 2 варианта форматирования текста -
Markdown и HTML, мы настоятельно рекомендуем использовать HTML. В Markdown есть много проблем, в отличии от HTML, в котором текст форматируется с помощью тегов.
Кто встречался с HTML, тот знает, что такое теги(проще говоря, вы закрываете текст с одной стороны открывающим, а с другой закрывающим спец. символами, которые понимает браузер). Например, вы хотите создать жирный текст. Для этого вам нужно написать: <b>Какой то текст</b>. В данном примере <b> - открывающий тег, </b> - закрывающий. Раз уж заговорили о начертаниях шрифта, то есть тег <i> - курсив, <u> - подчеркнутый текст, <s> - зачеркнутый текст и т.д. Все эти теги являются парными и нуждаются в закрывающем теге.