From 8801b8659bc246f1dfc5956b6548b18ede9b2302 Mon Sep 17 00:00:00 2001 From: fumiama Date: Mon, 10 May 2021 13:06:44 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=BE=A4=E7=AE=A1=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E6=8F=90=E9=86=92=E6=A3=80=E6=9F=A5=E5=8F=82=E6=95=B0=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E3=80=81=E4=BF=AE=E5=A4=8D=E6=8C=89=E5=91=A8=E6=8F=90?= =?UTF-8?q?=E9=86=92=E5=88=A4=E6=96=AD=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manager/manager.go | 20 ++++++++++++-------- manager/timer.go | 24 +++++++++++++++++++++++- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/manager/manager.go b/manager/manager.go index 025cef23..7e103974 100644 --- a/manager/manager.go +++ b/manager/manager.go @@ -235,14 +235,18 @@ func init() { // 插件主体 Handle(func(ctx *zero.Ctx) { dateStrs := ctx.State["regex_matched"].([]string) ts := getFilledTimeStamp(dateStrs, false) - go timer(ts, func() { - if ts.url == "" { - ctx.SendChain(AtAll(), message.Text(ts.alert)) - } else { - ctx.SendChain(AtAll(), message.Text(ts.alert), ImageNoCache(ts.url)) - } - }) - ctx.Send("记住了~") + if ts.enable { + go timer(ts, func() { + if ts.url == "" { + ctx.SendChain(AtAll(), message.Text(ts.alert)) + } else { + ctx.SendChain(AtAll(), message.Text(ts.alert), ImageNoCache(ts.url)) + } + }) + ctx.Send("记住了~") + } else { + ctx.Send("参数非法!") + } return }) // 取消定时 diff --git a/manager/timer.go b/manager/timer.go index ecf0ea97..c5f94e4b 100644 --- a/manager/timer.go +++ b/manager/timer.go @@ -63,32 +63,54 @@ func getFilledTimeStamp(dateStrs []string, matchDateOnly bool) TimeStamp { var ts TimeStamp ts.month = chineseNum2Int(monthStr) + if (ts.month != -1 && ts.month <= 0) || ts.month > 12 { //月份非法 + return ts + } lenOfDW := len(dayWeekStr) if lenOfDW == 4 { //包括末尾的"日" dayWeekStr = []rune{dayWeekStr[0], dayWeekStr[2]} //去除中间的十 ts.day = chineseNum2Int(dayWeekStr) + if (ts.day != -1 && ts.day <= 0) || ts.day > 31 { //日期非法 + return ts + } } else if dayWeekStr[lenOfDW-1] == rune('日') { //xx日 dayWeekStr = dayWeekStr[:lenOfDW-1] ts.day = chineseNum2Int(dayWeekStr) + if (ts.day != -1 && ts.day <= 0) || ts.day > 31 { //日期非法 + return ts + } } else if dayWeekStr[0] == rune('每') { //每周 ts.week = -1 } else { //周x ts.week = chineseNum2Int(dayWeekStr[1:]) + if ts.week == 7 { //周天是0 + ts.week = 0 + } + if ts.week < 0 || ts.week > 6 { //星期非法 + ts.week = -11 + return ts + } } if len(hourStr) == 3 { hourStr = []rune{hourStr[0], hourStr[2]} //去除中间的十 } ts.hour = chineseNum2Int(hourStr) + if ts.hour < -1 || ts.hour > 23 { //小时非法 + return ts + } if len(minuteStr) == 3 { minuteStr = []rune{minuteStr[0], minuteStr[2]} //去除中间的十 } ts.minute = chineseNum2Int(minuteStr) + if ts.minute < -1 || ts.minute > 59 { //分钟非法 + return ts + } if !matchDateOnly { urlStr := dateStrs[5] if urlStr != "" { //是图片url ts.url = urlStr[3:] //utf-8下用为3字节 if !strings.HasPrefix(ts.url, "http") { - ts.url = "illeagal" + ts.url = "illegal" return ts } } From 32eed9a4d8c43d29a27c5391504dcc4d0944a35c Mon Sep 17 00:00:00 2001 From: fumiama Date: Mon, 10 May 2021 13:09:16 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B1=89=E5=AD=97?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E5=91=A8=E5=A4=A9=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manager/timer.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/manager/timer.go b/manager/timer.go index c5f94e4b..65c12be1 100644 --- a/manager/timer.go +++ b/manager/timer.go @@ -151,13 +151,17 @@ func chineseNum2Int(rs []rune) int8 { //处理单个字符的映射0~10 func chineseChar2Int(c rune) int { - match := []rune("零一二三四五六七八九十") - for i, m := range match { - if c == m { - return i + if c == rune('日') || c == rune('天') { //周日/周天 + return 7 + } else { + match := []rune("零一二三四五六七八九十") + for i, m := range match { + if c == m { + return i + } } + return 0 } - return 0 } //@全体成员