add buttons from keyboard

This commit is contained in:
vasilytray 2025-03-11 21:46:26 +07:00
parent 9c1ac6e0bb
commit a30b25e9f5
2 changed files with 49 additions and 23 deletions

View File

@ -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}"
)
```

52
bot.py
View File

@ -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": "<N/A>",
"email": "<N/A>",
"phone_number": "<N/A>",
# "code": "<N/A>"
}
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": "<N/A>",
"email": "<N/A>",
"phone_number": "<N/A>",
# "code": "<N/A>"
}
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