Отправление сообщения каждый день aiogram

Увидел прикольную фишку: присылать пользователю сообщение каждый день. Пытался реализовать через библиотеку schedule (вроде для синхронных функции) и apscheduler (вроде для async), но запустить цикл бесконечной проверки не получается. Пробовал открывать второй поток и там делать проверку, но в бестолку.


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

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

Приветик. Тут на самом деле всё просто. Если использовать aiogram 3.5x то можно сделать так:

import asyncio

import aiogram
from aiogram import Dispatcher

bot = aiogram.Bot(token=config.BOT_TOKEN)
dispatcher = Dispatcher()


async def send_mes():
    await bot.send_message(chat_id="...", text="...")


async def periodic_send():
    while True:
        await send_new_ad()
        await asyncio.sleep(60)  # вместо 60 став нужно время в секундах


async def main():
    try:
        await asyncio.create_task(periodic_send())
        await bot.delete_webhook(drop_pending_updates=True)
        await dispatcher.start_polling(bot)
    finnaly:
        await bot.session.close()


if __name__ == '__main__':
    asyncio.run(main())

Если не хочешь писать нужное время в секундах можешь использовать timedelta из datetime

→ Ссылка