mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-06-02 09:26:12 +08:00
✨ add require_brownser
for scheduler config
This commit is contained in:
parent
c04710c7ae
commit
769b13ee4a
@ -1,9 +1,12 @@
|
||||
from nonebot.log import logger
|
||||
|
||||
from ..config import config
|
||||
from .scheduler import Scheduler
|
||||
from ..utils import SchedulerConfig
|
||||
from ..config.db_model import Target
|
||||
from ..types import Target as T_Target
|
||||
from ..platform import platform_manager
|
||||
from ..plugin_config import plugin_config
|
||||
|
||||
scheduler_dict: dict[type[SchedulerConfig], Scheduler] = {}
|
||||
|
||||
@ -27,6 +30,10 @@ async def init_scheduler():
|
||||
else:
|
||||
_schedule_class_platform_dict[scheduler_config].append(platform_name)
|
||||
for scheduler_config, target_list in _schedule_class_dict.items():
|
||||
if not plugin_config.bison_use_browser and scheduler_config.require_browser:
|
||||
logger.warning(f"{scheduler_config.name} requires browser, it will not schedule.")
|
||||
continue
|
||||
|
||||
schedulable_args = []
|
||||
for target in target_list:
|
||||
schedulable_args.append(
|
||||
|
@ -10,6 +10,7 @@ class SchedulerConfig:
|
||||
schedule_type: Literal["date", "interval", "cron"]
|
||||
schedule_setting: dict
|
||||
name: str
|
||||
require_browser: bool = False
|
||||
|
||||
def __str__(self):
|
||||
return f"[{self.name}]-{self.name}-{self.schedule_setting}"
|
||||
|
@ -172,3 +172,64 @@ async def test_schedule_delete(init_scheduler):
|
||||
await config.del_subscribe(TargetQQGroup(group_id=123), T_Target("t1"), "bilibili")
|
||||
stat_res = await get_schedule_times(BilibiliSchedConf, 2)
|
||||
assert stat_res["bilibili-t2"] == 2
|
||||
|
||||
|
||||
async def test_scheduler_skip_browser(mocker: MockerFixture):
|
||||
from nonebot_bison.platform import platform_manager
|
||||
from nonebot_bison.plugin_config import plugin_config
|
||||
from nonebot_bison.platform.platform import NewMessage
|
||||
from nonebot_bison.scheduler.scheduler import SchedulerConfig
|
||||
from nonebot_bison.scheduler import init_scheduler, scheduler_dict
|
||||
|
||||
mocker.patch.object(plugin_config, "bison_use_browser", False)
|
||||
|
||||
class MockPlatformSchedConf(SchedulerConfig):
|
||||
name = "mock"
|
||||
schedule_type = "interval"
|
||||
schedule_setting = {"seconds": 100}
|
||||
require_browser = True
|
||||
|
||||
class MockPlatform(NewMessage):
|
||||
platform_name = "mock_platform"
|
||||
name = "Mock Platform"
|
||||
enabled = True
|
||||
is_common = True
|
||||
enable_tag = True
|
||||
has_target = True
|
||||
scheduler = MockPlatformSchedConf
|
||||
|
||||
mocker.patch.dict(platform_manager, {"mock_platform": MockPlatform})
|
||||
|
||||
await init_scheduler()
|
||||
|
||||
assert MockPlatformSchedConf not in scheduler_dict.keys()
|
||||
|
||||
|
||||
async def test_scheduler_no_skip_not_require_browser(mocker: MockerFixture):
|
||||
from nonebot_bison.platform import platform_manager
|
||||
from nonebot_bison.plugin_config import plugin_config
|
||||
from nonebot_bison.platform.platform import NewMessage
|
||||
from nonebot_bison.scheduler.scheduler import SchedulerConfig
|
||||
from nonebot_bison.scheduler import init_scheduler, scheduler_dict
|
||||
|
||||
mocker.patch.object(plugin_config, "bison_use_browser", False)
|
||||
|
||||
class MockPlatformSchedConf(SchedulerConfig):
|
||||
name = "mock"
|
||||
schedule_type = "interval"
|
||||
schedule_setting = {"seconds": 100}
|
||||
|
||||
class MockPlatform(NewMessage):
|
||||
platform_name = "mock_platform"
|
||||
name = "Mock Platform"
|
||||
enabled = True
|
||||
is_common = True
|
||||
enable_tag = True
|
||||
has_target = True
|
||||
scheduler = MockPlatformSchedConf
|
||||
|
||||
mocker.patch.dict(platform_manager, {"mock_platform": MockPlatform})
|
||||
|
||||
await init_scheduler()
|
||||
|
||||
assert MockPlatformSchedConf in scheduler_dict.keys()
|
||||
|
Loading…
x
Reference in New Issue
Block a user