mirror of
https://github.com/MrSedan/neuro-reply-bot-reworked.git
synced 2026-01-14 21:49:42 +03:00
46 lines
1.7 KiB
Python
46 lines
1.7 KiB
Python
import asyncio
|
|
import logging
|
|
from typing import Coroutine
|
|
|
|
from aiogram import Bot, types
|
|
from aiogram.filters import Command
|
|
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
|
|
|
from neuroapi import neuroapi
|
|
from neuroapi.config import GlobalConfig
|
|
from neuroapi.types import BotSettings
|
|
|
|
from .handler import MessageHandlerABC
|
|
|
|
|
|
class UpdateSettingsCommand(MessageHandlerABC):
|
|
settings: BotSettings
|
|
post: Coroutine
|
|
filter = Command('update_settings')
|
|
|
|
async def settings_and_schedule_checker(self):
|
|
await self._auto_update_settings()
|
|
|
|
async def _auto_update_settings(self):
|
|
self.settings = await neuroapi.bot_settings.get()
|
|
self.scheduler.remove_all_jobs()
|
|
self.scheduler.add_job(self._auto_update_settings, 'interval', seconds=60)
|
|
|
|
# TODO: Сделать в бэке и в боте, чтоб дни тоже можно было в настройках хранить
|
|
for i in self.settings.message_times:
|
|
self.scheduler.add_job(self.post, 'cron', day_of_week='mon-sun', hour=i.split(':')[0], minute=i.split(':')[1])
|
|
logging.debug(self.scheduler.get_jobs())
|
|
|
|
def __init__(self, bot: Bot, post_command: Coroutine, *args) -> None:
|
|
super().__init__(bot)
|
|
self.post = post_command
|
|
config = GlobalConfig()
|
|
logging.debug(config)
|
|
self.scheduler = AsyncIOScheduler(event_loop=asyncio.get_event_loop())
|
|
self.scheduler.add_job(self.settings_and_schedule_checker, 'interval', seconds=60)
|
|
self.scheduler.start()
|
|
|
|
async def _command(self, mes: types.Message):
|
|
self.settings = await neuroapi.bot_settings.get_update()
|
|
await mes.answer('Настройки обновлены')
|
|
|