Вывод строки посимвольно с задержкой для телеграм-бота
Можно ли сделать эффект вывода строки посимвольно с задержкой для телеграм-бота? вот пример этой функции
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)