вызвать команду в тексте бота телеграм (aiogram)
Есть команда в боте
@dp.message(Command("ask_tel"))
async def cmd_ask_tel(message: types.Message):
builder = ReplyKeyboardBuilder()
builder.row(
types.KeyboardButton(text="Запросить контакт", request_contact=True)
)
await message.answer(
"Отправьте контакт...",
reply_markup=builder.as_markup(resize_keyboard=True),
)
На одном из этапов бот выдает ответ:
@dp.callback_query(F.data == "usd_text")
async def send_random_value(callback: types.CallbackQuery):
await callback.message.answer("Hello, world! ... Оставь контакт!")
Как сделать "Оставь контакт!" кликабельным, чтобы он вызвал команду "ask_tel"?
Спасибо заранее!
Ответы (1 шт):
Автор решения: Baggrisha
→ Ссылка
Если тебя правильно понял(по комментам, что ты оставил) можешь юзать Deep Linking
Юзаешь это чтобы получить Deep Linking
@dp.message()
async def deep_linking(msg: types.Message, command: CommandObject):
link = await create_start_link(bot, '/ask_tel', encode=True)
print(link)
Потом чтобы обработать юзаешь
@dp.message(CommandStart())
async def cmd_ask_tel_start(msg: types.Message, command: CommandObject):
args = command.args
if args == "ask_tel":
builder = ReplyKeyboardMarkup(keyboard=[[
KeyboardButton(text="Запросить контакт", request_contact=True)
]], resize_keyboard=True)
await msg.answer(
"Отправьте контакт...",
reply_markup=builder,
)
await msg.answer("Hello, world! ... Оставь контакт!", reply_markup=builder)
И потом ловишь номер телефона
@dp.message(F.contact)
async def cmd_get_tel(msg: types.Message):
print(msg.contact.phone_number)