定时任务插件
约 635 字大约 2 分钟
2025-03-27
定时任务插件
请先了解插件项目的文件结构,参考了解插件
只有插件模式有内置的定时任务功能,如果需要在主动模式下使用,参考个人插件。
源代码
from ncatbot.plugin import BasePlugin, CompatibleEnrollment
import datetime
class ZaoBa(BasePlugin):
name = "ZaoBa" # 插件名称
version = "0.0.1" # 插件版本
async def on_load(self):
# 插件加载时执行的操作, 可缺省
print(f"早八问候插件已加载")
print(f"插件版本: {self.version}")
self.add_scheduled_task(
job_func=self.zaoba,
name="早八问候",
interval="08:00",
args=("早八人", ),
)
self.add_scheduled_task(
job_func=self.remind,
name="起床提醒",
interval="30s",
max_runs=10,
args_provider=lambda:(
datetime.datetime.now().hour,
datetime.datetime.now().minute
),
)
self.add_scheduled_task(
job_func=self.exam,
name="考试提醒",
interval="2025-03-27 13:12:20",
kwargs={"subject":"物理"}
)
def zaoba(self, extra):
print("你好, 早八人")
print(extra)
def remind(self, hour, minute):
print(f"起床了, 已经 {hour} 点 {minute} 分了")
def exam(self, subject):
print(f"要考试了, 是 {subject}")
详细解释
zaoba
self.add_scheduled_task(
job_func=self.zaoba,
name="早八问候",
interval="08:00",
args=("早八人", ),
)
def zaoba(self, extra):
print("你好, 早八人")
print(extra)
- interval: 这个格式表示每天 8 点执行。
- args: 静态位置参数,这里表示只有一个确定的参数
"早八人"
。注意("早八人", )
括号里面的逗号不能省略。 - zaoba: 要执行的任务函数,extra 就是传进来的
"早八人"
。
remind
self.add_scheduled_task(
job_func=self.remind,
name="起床提醒",
interval="30s",
max_runs=10,
args_provider=lambda:(
datetime.datetime.now().hour,
datetime.datetime.now().minute
),
)
def remind(self, hour, minute):
print(f"起床了, 已经 {hour} 点 {minute} 分了")
- interval: 这个格式表示注册开始后每 30 秒执行一次。
- max_runs: 最大执行次数,这里表示最多执行 10 次。无限次执行直接不写这个参数。
- args_provider: 动态位置参数生成函数,这里表示每次执行时都获取当前时间,然后获取小时和分钟。
- remind: 要执行的任务函数,hour 就是 args_provider 传进来的小时,minute 就是传进来的分钟。
exam
self.add_scheduled_task(
job_func=self.exam,
name="考试提醒",
interval="2025-03-27 13:12:20",
kwargs={"subject":"物理"}
)
def exam(self, subject):
print(f"要考试了, 是 {subject}")
- interval: 这个格式表示在 2025 年 3 月 27 日 13 点 12 分 20 秒执行。
- kwargs: 静态关键字参数,这里表示只有一个确定的参数
subject="物理"
。 - exam: 要执行的任务函数,subject 就是传进来的
"物理"
。
版权所有
版权归属:huan-yp