mirror of
https://github.com/nonebot/nonebot2.git
synced 2024-12-01 01:25:07 +08:00
Add APScheduler as builtin scheduler
This commit is contained in:
parent
2884a58a52
commit
01d6a8cb3c
@ -4,7 +4,18 @@ import none
|
|||||||
from demo import config
|
from demo import config
|
||||||
|
|
||||||
none.init(config)
|
none.init(config)
|
||||||
app = none.get_bot().asgi
|
|
||||||
|
|
||||||
|
@none.scheduler.scheduled_job('interval', seconds=3)
|
||||||
|
async def cb():
|
||||||
|
bot_ = none.get_bot()
|
||||||
|
try:
|
||||||
|
await bot_.send_private_msg(self_id=3281334718,
|
||||||
|
user_id=1002647525,
|
||||||
|
message='哇')
|
||||||
|
except Exception as e:
|
||||||
|
none.logger.exception(e)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
none.load_builtin_plugins()
|
none.load_builtin_plugins()
|
||||||
|
@ -9,6 +9,12 @@ from aiocqhttp import CQHttp
|
|||||||
from aiocqhttp.message import Message
|
from aiocqhttp.message import Message
|
||||||
|
|
||||||
from .log import logger
|
from .log import logger
|
||||||
|
from .scheduler import Scheduler
|
||||||
|
|
||||||
|
if Scheduler:
|
||||||
|
scheduler = Scheduler()
|
||||||
|
else:
|
||||||
|
scheduler = None
|
||||||
|
|
||||||
|
|
||||||
class NoneBot(CQHttp):
|
class NoneBot(CQHttp):
|
||||||
@ -40,6 +46,9 @@ class NoneBot(CQHttp):
|
|||||||
async def _(ctx):
|
async def _(ctx):
|
||||||
asyncio.ensure_future(handle_notice_or_request(self, ctx))
|
asyncio.ensure_future(handle_notice_or_request(self, ctx))
|
||||||
|
|
||||||
|
if scheduler:
|
||||||
|
scheduler.configure(self.config.APSCHEDULER_CONFIG)
|
||||||
|
|
||||||
def run(self, host: str = None, port: int = None, *args, **kwargs):
|
def run(self, host: str = None, port: int = None, *args, **kwargs):
|
||||||
host = host or self.config.HOST
|
host = host or self.config.HOST
|
||||||
port = port or self.config.PORT
|
port = port or self.config.PORT
|
||||||
@ -88,6 +97,8 @@ def get_bot() -> NoneBot:
|
|||||||
|
|
||||||
def run(host: str = None, port: int = None, *args, **kwargs) -> None:
|
def run(host: str = None, port: int = None, *args, **kwargs) -> None:
|
||||||
"""Run the NoneBot instance."""
|
"""Run the NoneBot instance."""
|
||||||
|
if scheduler and not scheduler.running:
|
||||||
|
scheduler.start()
|
||||||
get_bot().run(host=host, port=port, *args, **kwargs)
|
get_bot().run(host=host, port=port, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,3 +30,7 @@ COMMAND_SEP = {'/', '.'}
|
|||||||
SESSION_EXPIRE_TIMEOUT = timedelta(minutes=5)
|
SESSION_EXPIRE_TIMEOUT = timedelta(minutes=5)
|
||||||
SESSION_RUNNING_EXPRESSION = '您有命令正在执行,请稍后再试'
|
SESSION_RUNNING_EXPRESSION = '您有命令正在执行,请稍后再试'
|
||||||
SHORT_MESSAGE_MAX_LENGTH = 50
|
SHORT_MESSAGE_MAX_LENGTH = 50
|
||||||
|
|
||||||
|
APSCHEDULER_CONFIG = {
|
||||||
|
'apscheduler.timezone': 'Asia/Shanghai'
|
||||||
|
}
|
||||||
|
11
none/scheduler.py
Normal file
11
none/scheduler.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
try:
|
||||||
|
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
||||||
|
except ImportError:
|
||||||
|
# APScheduler is not installed
|
||||||
|
AsyncIOScheduler = None
|
||||||
|
|
||||||
|
if AsyncIOScheduler:
|
||||||
|
class Scheduler(AsyncIOScheduler):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
Scheduler = None
|
3
setup.py
3
setup.py
@ -15,6 +15,9 @@ setup(
|
|||||||
long_description=long_description,
|
long_description=long_description,
|
||||||
long_description_content_type='text/markdown',
|
long_description_content_type='text/markdown',
|
||||||
install_requires=['aiocqhttp>=0.6', 'aiocache>=0.10'],
|
install_requires=['aiocqhttp>=0.6', 'aiocache>=0.10'],
|
||||||
|
extras_require={
|
||||||
|
'Scheduler': ['apscheduler>=1.2'],
|
||||||
|
},
|
||||||
python_requires='>=3.6',
|
python_requires='>=3.6',
|
||||||
platforms='any',
|
platforms='any',
|
||||||
classifiers=(
|
classifiers=(
|
||||||
|
Loading…
Reference in New Issue
Block a user