aiogram==2.25.1
и aiohttp>=3.8.0,<3.9.0
указывают, что они поддерживаются максимально до Python 3.10.call_later
работает так как предполагается с такими временными рамками. Обычно использовал с временными рамками до 2 минутimport asyncio
import concurrent.futures
from datetime import datetime, timedelta
import os
import shutil
def delete_func():
# Удаление временных файлов и создание каталога заново
shutil.rmtree('tempfiles/')
print('Folder deleted')
os.mkdir(path='tempfiles/')
print('Folder created')
def repeat_delete():
_loop = asyncio.get_running_loop()
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
# Выполнение функции delete_func в отдельном потоке
_loop.run_in_executor(executor, delete_func)
# Вычисляем время до 4 утра следующего дня
now = datetime.now()
tomorrow_4am = datetime(now.year, now.month, now.day) + timedelta(days=1, hours=4)
delta = tomorrow_4am - now
# Выполняем повторный запуск repeat_delete через вычисленное время
_loop.call_later(delta.total_seconds(), repeat_delete)
async def main():
...
if __name__ == '__main__':
# Создание нового цикла событий asyncio
loop = asyncio.new_event_loop()
# Вызов repeat_delete через 1 секунду
loop.call_later(1, repeat_delete)
# Запуск основной функции
loop.run_until_complete(main())
update.py
main.py
вы пытаетесь зарегистрировать хендлеры в хендлереimport logging
async def on_startup(dispatcher):
logging.basicConfig(
level=logging.DEBUG,
format=u'%(filename)s:%(lineno)d #%(levelname)-8s [%(asctime)s] - %(name)s - %(message)s',
)
logger.info("Starting bot")
# Импортируем функции регистрации хендлеров
from update_photo import register_new_photo
# Регистрируем хендлеры
register_new_photo(dispatcher)
async def on_shutdown(dispatcher):
logging.warning('Shutting down..')
await dispatcher.storage.close()
await dispatcher.storage.wait_closed()
logging.warning('Bye!')
if __name__ == '__main__':
from aiogram.utils import executor
from loader import dp
executor.start_polling(dp,
skip_updates=True, # Если нужно пропускаем апдейты
on_startup=on_startup,
on_shutdown=on_shutdown)
import os
from aiogram import Bot, Dispatcher
from aiogram.contrib.fsm_storage.memory import MemoryStorage
bot = Bot(token=os.getenv("TOKEN"))
storage = MemoryStorage()
dp = Dispatcher(bot=bot, storage=storage)