Ответы пользователя по тегу Боты
  • Как отредактировать сообщение в телеграмм по таймеру с помощью aiogram?

    @progeroffline
    Я не назову свое решение правильным, но оно работает.
    И так для того чтобы была возможность редактировать сообщения через определённый тайминг, а сам бот при этом не уходил в спячку нужно эти действия делать в отдельном потоке. Суть этого способа в том чтобы процесс ожидания отправлять в отдельный поток, и в рамках этого потока ждем указанное вами время, а потом шлем запрос на сервера телеграмма для редактирования сообщения.

    Нам понадобиться библиотеки: threading, requests. Первая для многопотока, а вторая для отправки запросов на сервера телеграмма.
    # Импорт библиотек
    import time
    
    from threading import Thread
    
    # Это функция отправляет запрос на редактирования сообщения напрямую через сервера телеграмма
    # message - обьект сообщения
    # delay - задержкка
    # text - новый текст
    def edit_message(message, delay, text):
    	time.sleep(delay)
    	api_url = "https://api.telegram.org/bot" + TOKEN
    	method = "/editMessageText"
    	chat_id = message.chat.id
    	message_id = message.message_id
    
    	r = requests.post(api_url + method, data={'chat_id': chat_id, 'message_id': message_id, 'text': text})
    
    . . .
    . . .
    . . .
    
    @dp.message_handler(content_types=['text'])
    async def process_text(message: types.Message):
    	# Добавляем функцию в отдельный поток 
    	# args - аргументы функции
    	th = Thread(target=edit_message, args=(message, 5, "Cообщение изменено", ))
    	th.start()


    Надеюсь я понятно все изложил, если будут вопросы пишите..
    Ответ написан