mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-06-04 02:26:11 +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 ..config import config
|
||||||
from .scheduler import Scheduler
|
from .scheduler import Scheduler
|
||||||
from ..utils import SchedulerConfig
|
from ..utils import SchedulerConfig
|
||||||
from ..config.db_model import Target
|
from ..config.db_model import Target
|
||||||
from ..types import Target as T_Target
|
from ..types import Target as T_Target
|
||||||
from ..platform import platform_manager
|
from ..platform import platform_manager
|
||||||
|
from ..plugin_config import plugin_config
|
||||||
|
|
||||||
scheduler_dict: dict[type[SchedulerConfig], Scheduler] = {}
|
scheduler_dict: dict[type[SchedulerConfig], Scheduler] = {}
|
||||||
|
|
||||||
@ -27,6 +30,10 @@ async def init_scheduler():
|
|||||||
else:
|
else:
|
||||||
_schedule_class_platform_dict[scheduler_config].append(platform_name)
|
_schedule_class_platform_dict[scheduler_config].append(platform_name)
|
||||||
for scheduler_config, target_list in _schedule_class_dict.items():
|
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 = []
|
schedulable_args = []
|
||||||
for target in target_list:
|
for target in target_list:
|
||||||
schedulable_args.append(
|
schedulable_args.append(
|
||||||
|
@ -10,6 +10,7 @@ class SchedulerConfig:
|
|||||||
schedule_type: Literal["date", "interval", "cron"]
|
schedule_type: Literal["date", "interval", "cron"]
|
||||||
schedule_setting: dict
|
schedule_setting: dict
|
||||||
name: str
|
name: str
|
||||||
|
require_browser: bool = False
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"[{self.name}]-{self.name}-{self.schedule_setting}"
|
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")
|
await config.del_subscribe(TargetQQGroup(group_id=123), T_Target("t1"), "bilibili")
|
||||||
stat_res = await get_schedule_times(BilibiliSchedConf, 2)
|
stat_res = await get_schedule_times(BilibiliSchedConf, 2)
|
||||||
assert stat_res["bilibili-t2"] == 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