From bccf789714d33a5c3467b6da473f7293ea4f120e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Tue, 8 Mar 2022 20:39:02 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20job=E5=A2=9E=E5=8A=A0=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 +++++++++ plugin/job/main.go | 15 +++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 12608264..6b9ec243 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,7 @@ zerobot [-h] [-t token] [-u url] [-n nickname] [-p prefix] [-d|w] [-g 监听地 - [x] 查看所有触发指令 - [x] 查看在"cron"触发的指令 - [x] 注入指令结果:任意指令,可以使用形如`?::参数1提示语::1!`,`?::参数2提示语::2!`的未定参数,在注入时一一匹配 + - [x] 执行指令:任意指令,可以使用形如`?::参数1提示语::1!`,`?::参数2提示语::2!`的未定参数,在注入时一一匹配 - 一些示例 > 每日9:30推送摸鱼人日历 ``` @@ -93,6 +94,14 @@ else: print('今天没有coser哦~') if '?::想看coser吗?::1!' == '想': print('coser') else: print('好吧') ``` +> 自行编写简易的选择困难症助手小插件 +```python +执行指令:>runcoderaw py +from random import random +if random() > 0.5: print('您最终会选?::请输入您的选择1::1!') +else: print('您最终会选?::请输入您的选择2::2!') +``` +![example](https://user-images.githubusercontent.com/41315874/157239729-bd8b5ce6-da0a-46c5-a9d0-5db60f356bca.png) - **聊天** `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/chat"` - [x] [BOT名字] - [x] [戳一戳BOT] diff --git a/plugin/job/main.go b/plugin/job/main.go index 64da9fc3..bc94e557 100644 --- a/plugin/job/main.go +++ b/plugin/job/main.go @@ -32,7 +32,7 @@ var ( func init() { en := control.Register("job", order.AcquirePrio(), &control.Options{ DisableOnDefault: false, - Help: "定时指令触发器\n- 记录在\"cron\"触发的指令\n- 取消在\"cron\"触发的指令\n- 查看所有触发指令\n- 查看在\"cron\"触发的指令\n- 注入指令结果:任意指令", + Help: "定时指令触发器\n- 记录在\"cron\"触发的指令\n- 取消在\"cron\"触发的指令\n- 查看所有触发指令\n- 查看在\"cron\"触发的指令\n- 注入指令结果:任意指令\n- 执行指令:任意指令", PrivateDataFolder: "job", }) db.DBPath = en.DataFolder() + "job.db" @@ -146,6 +146,11 @@ func init() { } ctx.SendChain(message.Text(lst)) }) + en.OnPrefix("执行指令:", ctxext.UserOrGrpAdmin, islonotnil, func(ctx *zero.Ctx) bool { + return ctx.State["args"].(string) != "" + }, parseArgs).SetBlock(true).Handle(func(ctx *zero.Ctx) { + inject(ctx.Event.SelfID, binary.StringToBytes(strings.ReplaceAll(ctx.Event.RawEvent.Raw, "执行指令:", "")))() + }) en.OnPrefix("注入指令结果:", ctxext.UserOrGrpAdmin, islonotnil, func(ctx *zero.Ctx) bool { return ctx.State["args"].(string) != "" }, parseArgs).SetBlock(true).Handle(func(ctx *zero.Ctx) { @@ -163,6 +168,7 @@ func init() { ctx.Event.RawMessage = msg.Elements.String() time.Sleep(time.Second * 5) // 防止风控 ctx.Event.Time = time.Now().Unix() + ctx.DeleteMessage(id) vev, cl := binary.OpenWriterF(func(w *binary.Writer) { err = json.NewEncoder(w).Encode(ctx.Event) }) @@ -175,7 +181,7 @@ func init() { inject(ctx.Event.SelfID, vev)() cl() } - })).Echo([]byte(strings.ReplaceAll(ctx.Event.RawEvent.Raw, "注入指令结果:", ""))) + })).Echo(binary.StringToBytes(strings.ReplaceAll(ctx.Event.RawEvent.Raw, "注入指令结果:", ""))) }) } @@ -262,11 +268,12 @@ func parseArgs(ctx *zero.Ctx) bool { case <-time.After(time.Second * 120): ctx.SendChain(message.Text("参数读取超时")) return false - case e := <-zero.NewFutureEvent("message", 0, false, zero.CheckUser(ctx.Event.UserID)).Next(): + case e := <-zero.NewFutureEvent("message", 0, true, zero.CheckUser(ctx.Event.UserID)).Next(): args[arg] = e.Message.String() + arr = args[arg] + process.SleepAbout1sTo2s() ctx.SendChain(message.Reply(e.MessageID), message.Text("已记录")) process.SleepAbout1sTo2s() - arr = args[arg] } } ctx.Event.RawEvent.Raw = ctx.Event.RawEvent.Raw[:start] + arr + ctx.Event.RawEvent.Raw[numend+1:]