Как сделать анимацию загрузки edit_text aiogram?
надо создать код под айограм используя модуль time , неоходимо сделать анимацию загрузки в виде процентов от 0-100% примерный код который смог придумать приклеплен снизу , помогите решить эту проблему , вся основная задача заключается в edit_text тоесть бот должен редактировать сообщения каждый раз меняя его от 0% до 100% таким образом и выходит анимация , я сам попытался сделать через модуль time
Код
import time
pisos = 0
ids = ""
for i in range(2,101):
time.sleep(0.8)
if pisos == 100:
break
else:
pisos += 1
ids += str(message.message_id)
await bot.message.edit_text(message.chat.id, message.message_id=ids, f'Перезагрузка бота : {pisos}%')
Ответы (1 шт):
Автор решения: MyZik
→ Ссылка
Очень просто:
Для шага в 10 (10, 20, 30, ..., 100):
@dp.callback_query_handler(text="animation")
async def animation_handler(query: CallbackQuery):
for i in range(110):
await query.message.edit_text(text=f"{i}%")
await asyncio.sleep(0.2)
Для шага в 1 (1, 2, 3, ..., 100):
@dp.callback_query_handler(text="animation")
async def animation_handler(query: CallbackQuery):
for i in range(101):
await query.message.edit_text(text=f"{i}%")
await asyncio.sleep(0.2)
Если хотите, чтобы бот реагировал на конкретный текст:
import asyncio
from aiogram.dispatcher.filters import Text
...
@dp.message_handler(Text(equals="Загрузка", ignore_case=True))
async def animation_handler(message: Message):
upload_message = await bot.send_message(chat_id=message.chat.id, text="Начинаем загрузку...")
await asyncio.sleep(1)
for i in range(101):
await upload_message.edit_text(text=f"{i}%")
await asyncio.sleep(0.2)