@DmtIDS

Не могу понять где ошибка в кусочке коде (Telegram бот на aiogram)?

Это что-то типо таймера. Пользователь отправляет боту сообщение с цифрой, а бот выводит сообщение в котром каждую секунду меняются числа от заданного до 0 и выполняет какое-либо действие, в моём случает это вывод другого сообщения.

Выводит сообщение "Time: вводимое число", и на этом всё.

Вот сам код:
import asyncio
from aiogram import Bot, executor, Dispatcher

bot = Bot(token='')
dp = Dispatcher(bot=bot)
bot_dispather = Dispatcher(bot=bot)


@dp.message_handler()
async def new_timer_message(message):
    try:
        timer_seconds = int(message.text)
        if timer_seconds <= 0:
            raise ValueError()

    except (TypeError, ValueError):
        await bot.send_message(chat_id=message.chat.id, text="Error")
        return
    new_message = await bot.send_message(chat_id=message.chat.id, text=f"Time: {timer_seconds}")

    for seconds_left in range(timer_seconds - 1, -1):
        await asyncio.sleep(1)
        await new_message.edit_text(f"Time: {timer_seconds}")

    await bot.send_message(chat_id=message.chat.id, text=f"Timeout")

if __name__ == "__main__":
    executor.start_polling(dp)
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
1. Код оформляйте правильно, с помощью специальной кнопки.
2. Нельзя сделать range() от большего к меньшему, без задания шага.

Либо range(timer_seconds - 1, -1, -1) либо reversed(range(timer_seconds))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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