Вывод строки посимвольно с задержкой для телеграм-бота

Можно ли сделать эффект вывода строки посимвольно с задержкой для телеграм-бота? вот пример этой функции

import time

def print_with_delay(text, delay):
    for char in text:
        print(char, end='', flush=True)  # Печать символа без перевода строки
        time.sleep(delay)  # Задержка между символами

# Пример использования
text_to_display = "Привет, мир!"
delay_time = 0.1  # Задержка в секундах

print_with_delay(text_to_display, delay_time)

Можно ли использовать это для приветствия или там какое - то особенное уведомление от бота ?


Ответы (1 шт):

Автор решения: NTA

Да, можно. В телеграм-ботах нету flush и других плюшек, которые есть в стандартном print, поэтому я переписал код и подключил библиотеку aiogram для использования ботов. Вот код:

from aiogram import Bot, Dispatcher, executor, types
from asyncio import sleep

bot = Bot(token='токен')
dp = Dispatcher(bot)

@dp.message_handler(commands='start') #ответ на команду /start
async def start(message: types.Message):
    text = 'Привет, мир!'
    delay = 0.1
    chat_id = message.chat.id
    message_info = await message.answer(text[0])
    for i in range(2, len(text) + 2):
        new_message = text[0:i]
        if new_message[len(new_message) - 1] != ' ': #aiogram не видит пробелов и ругается когда сообщение не изменяется, поэтому не меняем сообщение если символ = пробел
            await bot.edit_message_text(chat_id=chat_id, message_id=int(message_info.message_id), text=new_message)
        await sleep(delay) #так как aiogram ассинхронный, здесь другая функция задержки

if __name__ == '__main__':
    executor.start_polling(dp)
→ Ссылка