- 已编辑
基于Dice!2.5.1的四个新机制,我们可以实现定时任务-调用脚本-广播通知的全流程:
.admin clock
指令允许设置任意名称的定时任务,而不仅限于原有的on/off/clear;- 通过读取plugin文件夹下lua脚本中的表task_call,将脚本函数注册到指定任务名;
- 通过
.send notice [通知等级] [通知文本]
指令,可以向所有满足通知等级的窗口广播通知; - 通知等级从原有的0~5扩展为了0~9,其中6~9不会被内置机制所使用;
因此我们可以如下定义一个定时早安机制:
.admin clock+good_morning=7:30
注册一个在7:30执行的定时任务good_morning
;在plugin文件夹下新建一个
每日问安.lua
文件,在里面添加task_call = { good_morning="morning_call", }
将脚本内函数
morning_call
注册到定时任务good_morning
;继续在lua文件内添加函数
morning_call
。这里我们占用通知窗口6用于早安专用窗口,请注意各个自定义功能的窗口不要起冲突。函数内使用eventMsg构造一条虚拟指令,视为自己私聊对自己发送了.send notice
指令。notice_head = ".send notice 6 " function table_draw(tab) if(#tab==0)then return "" end return tab[ranint(1,#tab)] end morning_word = { "早安呐~", "早上好哟~起床了吗?", } function morning_call() eventMsg(notice_head..table_draw(morning_word), 0, getDiceQQ()) end
继续在lua文件内添加两个脚本指令用于用户自由订阅及取消早安,如果希望由自己发放早安资格,可略过此步骤。
msg_order = {} function book_alarm_call(msg) eventMsg(".admin notice "..printChat(msg).." +6", 0, getDiceQQ()) return "已订阅{self}的定时早午晚安服务√" end function unbook_alarm_call(msg) eventMsg(".admin notice "..printChat(msg).." -6", 0, getDiceQQ()) return "已退订{self}的定时早午晚安服务√" end msg_order["订阅问安"]="book_alarm_call" msg_order["退订问安"]="unbook_alarm_call"
以上,一套完整的订阅问安机制就完成了。你也可以下载以下模板文件,安装到Dice存档目录下的plugin文件夹,来代替2-4步。
daily-call.zip1kB