Ошибка aiogram(Middleware),AttributeError: 'SchedulerMiddleware' object has no attribute '_sсheduler'
хочу добавлять новые задачи(apscheduler) в хэндлерах, ну это думаю неважно . Важно как решить эту проблему .
Полная ошибка :
Updates were skipped successfully.
Task exception was never retrieved
future: <Task finished name='Task-11' coro=<Dispatcher._process_polling_updates() done, defined at C:\Users\ACER\Desktop\BANBOT\venv\lib\site-packages\aiogram\dispatcher\dispatcher.py:407> exception=AttributeError("'SchedulerMiddleware' object has no attribute '_sсheduler'")>
Traceback (most recent call last):
File "C:\Users\ACER\Desktop\BANBOT\venv\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 415, in _process_polling_updates
for responses in itertools.chain.from_iterable(await self.process_updates(updates, fast)):
File "C:\Users\ACER\Desktop\BANBOT\venv\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 235, in process_updates
return await asyncio.gather(*tasks)
File "C:\Users\ACER\Desktop\BANBOT\venv\lib\site-packages\aiogram\dispatcher\handler.py", line 101, in notify
await self.dispatcher.middleware.trigger(f"pre_process_{self.middleware_key}", args + (data,))
File "C:\Users\ACER\Desktop\BANBOT\venv\lib\site-packages\aiogram\dispatcher\middlewares.py", line 53, in trigger
await app.trigger(action, args)
File "C:\Users\ACER\Desktop\BANBOT\venv\lib\site-packages\aiogram\dispatcher\middlewares.py", line 140, in trigger
await self.pre_process(obj, data, *args)
File "C:\Users\ACER\Desktop\BANBOT\ban-bot.py", line 23, in pre_process
data["scheduler"] = self._sсheduler
AttributeError: 'SchedulerMiddleware' object has no attribute '_sсheduler'.
код :
from aiogram import Bot , types
from aiogram.dispatcher import Dispatcher
import os
from aiogram.utils import executor
import random
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from time import sleep
from datetime import date ,datetime
from typing import Dict ,Any,Callable,Awaitable
from aiogram.types.base import TelegramObject
from aiogram.dispatcher.middlewares import LifetimeControllerMiddleware
scheduler = AsyncIOScheduler()
class SchedulerMiddleware(LifetimeControllerMiddleware):
def __init__(self, scheduler:AsyncIOScheduler):
super().__init__()
self._scheduler = scheduler
async def pre_process(self,obj:TelegramObject,data:Dict[str,Any],*kwargs:Any):
data["scheduler"] = self._sсheduler
def register_all_middlewares(dp,scheduler):
dp.setup_middleware(SchedulerMiddleware(scheduler))
bot = Bot(token=os.getenv('TOKEN'))
dp = Dispatcher(bot)
otvet = ["YES",'no','hohoho']
otvetrand = 0
async def dasd ():
await bot.send_message( твой айди,'norm ')
@dp.message_handler()
async def ben_per(message : types.Message,scheduler:AsyncIOScheduler):
global otvet
global otvetrand
otvetrand = random.choice(otvet)
await bot.send_message( твой айди, otvetrand)
scheduler.add_job(dasd,'interval',seconds=3)
register_all_middlewares(dp,scheduler)
scheduler.start()
executor.start_polling(dp , skip_updates = True)