@dp.message(CommandStart()) # обработчик события!
async def dejur(message: Message):
...
aioschedule.every().minute.do(dejur) # планируем вызов функции
Запомни раз и навсегда - никогда не вызывай обработчики событий напрямую.
Если тебе нужно реализовать одну и ту же функциональность и в обработчике, и где-то ещё - вынеси эту функциональность в отдельную подпрограмму, и уже её вызывай и в обработчике, и в других местах.
В твоём случае можно сделать что-то типа такого:
async def send_duty_list(chat: int):
print(1)
global n,skipper
if weekday():
await bot.send_message(chat, text=f"Дежурные: {spisok[n]}")
if skipper == True:
if n!=14:
n = n+1
else:
n=0
return n
else:
skipper = True
return skipper
@dp.message(CommandStart())
async def dejur(message: Message):
await send_duty_list(message.chat.id) # шлём ответ в тот же чат, где была команда
async def scheduler():
aioschedule.every().minute.do(send_duty_list, chat=1108995102) # а тут шлём фиксированному юзеру
while True:
await aioschedule.run_pending()
await asyncio.sleep(1)
Кроме того, имей ввиду:
async def on_startup(_):
asyncio.create_task(scheduler())
У тебя созданный объект задачи может быть собран сброщиком мусора - что, разумеется, прервёт задачу.
Так что сохраняй ссылку на задачу куда-нибудь в глобальную переменную.
scheduler_task = None
async def on_startup(_):
global scheduler_task
scheduler_task = asyncio.create_task(scheduler())