Задать вопрос
@helldess

Как отловить число в сообщении телеграм?

Всем привет, пишу телеграм бота на айограм. При выборе количества товара пользователь должен написать число, но как его отловить я немного не понимаю.

Код хендлера:
spoiler
@dp.callback_query_handler(lambda c: c.data and c.data.startswith('buy_item_vpn'))
async def purchasevpn(callback_query: types.CallbackQuery):
    code = callback_query.data
    res_str = code.replace('buy_item_vpn', '')
    chat_id = callback_query.from_user.id
    balance = BotDB.user_balance(chat_id)
    itemvpn = BotDB.get_item_vpn(res_str)
    cheque = str(random.randint(100000, 9999999999))
    for priceitem in itemvpn:
        if balance >= priceitem[2]:
            mes = ???
            await bot.delete_message(callback_query.from_user.id, callback_query.message.message_id)
            await bot.send_message(callback_query.from_user.id, f"""<b>Введите количество товаров для покупки.</b>
▶️ От 1 до {priceitem[3]}
➖➖➖➖➖➖➖➖➖➖➖➖➖
 Товар: {priceitem[1]}
 Ваш баланс: {balance}₽""", parse_mode='html')
            if mes <= priceitem[3]:
                await bot.delete_message(callback_query.from_user.id, callback_query.message.message_id)
                await bot.send_message(callback_query.from_user.id, f"""✅ <b>Вы успешно купили товар(ы).</b>
➖➖➖➖➖➖➖➖➖➖➖➖➖
 Чек: #{cheque}
 Название товара: {priceitem[1]}
 Куплено товаров: 1
 Сумма покупки: {priceitem[2]}₽
 Покупатель: @{callback_query.from_user.full_name} ({callback_query.from_user.id})""", parse_mode='html')
            else:
                await bot.delete_message(callback_query.from_user.id, callback_query.message.message_id)
                await bot.send_message(callback_query.from_user.id, f"""❌ <b>Неверное количество товаров.</b>
➖➖➖➖➖➖➖➖➖➖➖➖➖
 Введите количество товаров для покупки
▶️ От 1 до {priceitem[3]}
➖➖➖➖➖➖➖➖➖➖➖➖➖
 Товар: {priceitem[1]}
 Ваш баланс: {balance}₽""", parse_mode='html')
        else:
            await bot.delete_message(callback_query.from_user.id, callback_query.message.message_id)
            await bot.send_message(callback_query.from_user.id, f"""❌ <b>Недостаточно средств на счете.</b>
➖➖➖➖➖➖➖➖➖➖➖➖➖
 Введите количество товаров для покупки
▶️ От 1 до {priceitem[3]}
➖➖➖➖➖➖➖➖➖➖➖➖➖
 Товар: {priceitem[1]}
 Ваш баланс: {balance}₽""", parse_mode='html')


В эту переменную должно отлавливаться число:

mes = ???

А дальше эта переменная участвует в этом процессе:

if mes <= priceitem[3]:
  • Вопрос задан
  • 232 просмотра
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
fenrir1121
@fenrir1121
Начни с документации
Если приходит строка с текстом и числом, разделить через split, проверить что получено число через isdigit.
Либо регуляркой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Пользователь вводит число...

Тут ты его отлавливаешь:

@dp.message_handler()
async def command_5(message: types.message):

    numbers = message.text
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы