@XWR

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

Как отредактировать сообщение в телеграмм с помощью aiogram?
Здравствуйте хочу отредактировать команду /start
@dp.message_handler(commands=['start'])
async def process_start_command(message: types.Message):
    user_name = message.from_user.first_name
    await message.answer('Привет')


Хочу сделать чтобы оно редактировалось на пока по таймеру (5 секунд)
Как это можно сделать?
Рад буду если поможите (
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
@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()


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

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

Войти через центр авторизации
Похожие вопросы