From a30b25e9f5b529f5e9be870eff88084e36bb06e9 Mon Sep 17 00:00:00 2001 From: vasilytray Date: Tue, 11 Mar 2025 21:46:26 +0700 Subject: [PATCH] add buttons from keyboard --- README.md | 20 ++++++++++++++++++++ bot.py | 52 +++++++++++++++++++++++++++++----------------------- 2 files changed, 49 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 9f079be..94ffc20 100644 --- a/README.md +++ b/README.md @@ -518,3 +518,23 @@ async def reply_builder(message: types.Message): **Запуск веб-приложения (WebApp)**. При нажатии на кнопку открывает WebApp. Необходимо передать объект WebAppInfo. В этой книге веб-аппы пока рассматриваться не будут. +две заготовки хэндлеров на приём нажатий от нижних двух кнопок: +```py +# новый импорт +from aiogram import F + +@dp.message(F.user_shared) +async def on_user_shared(message: types.Message): + print( + f"Request {message.user_shared.request_id}. " + f"User ID: {message.user_shared.user_id}" + ) + + +@dp.message(F.chat_shared) +async def on_user_shared(message: types.Message): + print( + f"Request {message.chat_shared.request_id}. " + f"User ID: {message.chat_shared.chat_id}" + ) +``` diff --git a/bot.py b/bot.py index bb5fa31..a652228 100644 --- a/bot.py +++ b/bot.py @@ -197,29 +197,10 @@ async def echo_with_time(message: Message): # Отправляем новое сообщение с добавленным текстом await message.answer(f"{message.html_text}\n\n{not_anderstand}!!! Я не понимаю эту команду :(\nДля получения списка известных мне команд напиши /start \n{added_text}", parse_mode="HTML") -# Извлекаем из сообщений пользователя данные url, email, телефон и код -#@dp.message(F.text) -async def extract_data(message: Message): - data = { - "url": "", - "email": "", - "phone_number": "", - # "code": "" - } - entities = message.entities or [] - for item in entities: - if item.type in data.keys(): - # Неправильно - # data[item.type] = message.text[item.offset : item.offset+item.length] - # Правильно - data[item.type] = item.extract_from(message.text) - await message.reply( - "Вот что я нашёл:\n" - f"URL: {html.quote(data['url'])}\n" - f"E-mail: {html.quote(data['email'])}\n" - f"Телефон: {html.quote(data['phone_number'])}\n" - # f"Пароль: {html.quote(data['code'])}" - ) +@dp.message(F.text.lower() == "круто") +async def without_puree(message: types.Message): + await message.reply("Соглашусь, это круто!") + @dp.message(Command("settimer", prefix="/!")) # добавим дополнительные префиксы для оперделения команды async def cmd_settimer( @@ -431,6 +412,31 @@ async def send_gif(message: Message): show_caption_above_media=True ) +# Извлекаем из сообщений пользователя данные url, email, телефон и код +@dp.message(F.text) +async def extract_data(message: Message): + data = { + "url": "", + "email": "", + "phone_number": "", + # "code": "" + } + entities = message.entities or [] + for item in entities: + if item.type in data.keys(): + # Неправильно + # data[item.type] = message.text[item.offset : item.offset+item.length] + # Правильно + data[item.type] = item.extract_from(message.text) + await message.reply( + "Вот что я нашёл:\n" + f"URL: {html.quote(data['url'])}\n" + f"E-mail: {html.quote(data['email'])}\n" + f"Телефон: {html.quote(data['phone_number'])}\n" + # f"Пароль: {html.quote(data['code'])}" + ) + + # Запуск процесса поллинга новых апдейтов async def main(): # Регистрируем хэндлер cmd_test2 по команде /start