@Belshed

Как отправлять сообщения по расписанию с aiogram?

Привет, как можно реализовать отправку сообщений по расписанию? Использую библиотеку для ботов на питоне aiogram.
  • Вопрос задан
  • 893 просмотра
Решения вопроса 1
sotanodroid
@sotanodroid
Python/Golang developer
Ты можешь использовать функцию EventLoop call_at: https://docs.python.org/3/library/asyncio-eventloo...

К примеру тебе надо отправлять сообщение с определенным интервалом.

Получаем из текущего событийного цикла время, прибавляем к нему интервал -- это будет время вызова функции.
Далее создаем задачу на вызов в это время.
Функция call_at принимает параметр времени, когда вызвать функцию, и саму функцию вторым аргументом. Третьим и дале еаргументами можно передать аргументы для вызываемой функции.

loop = asyncio.get_event_loop()
delay = 100.0

async def my_func():
    # твоя логика с отправкой сообщений тут
    when_to_call = loop.time() + delay  # delay -- промежуток времени в секундах.
    loop.call_at(when_to_call, my_callback)

def my_callback():
    asyncio.ensure_future(my_func())


Таким образом ты зациклишь вызов своей функции по интервалу.
Не забудь так же что твой событийный цикл в этом случае должен работать бесконечно: https://docs.python.org/3/library/asyncio-eventloo...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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