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

Не получив число после команды бот должен отправить сообщение?

Когда кто-то пишет боту: "/number 5" бот отвечает: "Твое число 5" Но если кто-то напишет "/number" то выскакивает ошибка потому что нету числа. Как сделать чтобы в такой ситуации бот писал: "Введите число"
@dp.message_handler(commands=['number'])
async def number(message: types.Message):
    number = message.get_args()
    number1 = int(number)*1000
    if int(number) < 0:
        await message.reply("Нельзя вводить отрицательное число")
    else:
        await message.reply(f"Твое число {number1}")
  • Вопрос задан
  • 94 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@twistfire92
Python backend developer
Я подозреваю, что number принимает значение None, тогда на него можно будет завязаться.
Попробуй так, может получится
@dp.message_handler(commands=['number'])
async def number(message: types.Message):
    number = message.get_args()
    if number is None:
        await message.reply(f"Твое число {number}")
    else:
        await message.reply("Введите число")
Ответ написан
Исходя из вашего
кода
@dp.message_handler(commands=['number'])
async def number(message: types.Message):
    number = message.get_args()
    number1 = int(number)*1000
    if int(number) < 0:
        await message.reply("Нельзя вводить отрицательное число")
    else:
        await message.reply(f"Твое число {number1}")
который вы написали в комментарии, к ответу выше.

Вам следует сделать проверку есть ли deeplink и является ли он числом

Например
@dp.message_handler(commands=['number'])
async def number(message: types.Message):
    number = message.get_args()
    if number is not None and number.isdigit():
        if int(number) < 0:
            await message.reply("Нельзя вводить отрицательное число")
        else:
            await message.reply(f"Твое число {int(number) * 1000}")
    elif number is None:
        await message.reply(f'Введите число после команды "/number 5 "')
    else:
        await message.reply(f'После команды "/number" ожидается число, а не текст')

Ответ написан
Комментировать
Ваш ответ на вопрос

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

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