From 2917ff67018e297907b78ad74649708e5e1603f7 Mon Sep 17 00:00:00 2001 From: fumiama Date: Fri, 26 Nov 2021 19:45:48 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20=20=E6=8C=81=E4=B9=85?= =?UTF-8?q?=E5=8C=96=20fansdaily?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin_bilibili/fansDaily.go | 173 ++++++++++++++++++++++------------- plugin_bilibili/info.go | 3 +- 2 files changed, 108 insertions(+), 68 deletions(-) diff --git a/plugin_bilibili/fansDaily.go b/plugin_bilibili/fansDaily.go index 07803a8a..3581ee33 100644 --- a/plugin_bilibili/fansDaily.go +++ b/plugin_bilibili/fansDaily.go @@ -5,6 +5,7 @@ import ( "net/http" "time" + "github.com/FloatTech/ZeroBot-Plugin/control" "github.com/fumiama/cron" zero "github.com/wdvxdr1123/ZeroBot" "github.com/wdvxdr1123/ZeroBot/message" @@ -23,88 +24,128 @@ type follower struct { // 开启日报推送 func init() { - engine.OnFullMatch("/开启粉丝日报", zero.AdminPermission).SetBlock(true). + fansDaily() + en := control.Register("fansdaily", &control.Options{ + DisableOnDefault: true, + Help: "fansdaily\n- /开启粉丝日报\n- /关闭粉丝日报", + }) + zero.OnCommand("开启粉丝日报", zero.AdminPermission).SetBlock(true). Handle(func(ctx *zero.Ctx) { - fansDaily(ctx.Event.GroupID) // 群号传进去给下面发信息的函数 + m, ok := control.Lookup("fansdaily") + if ok { + if m.IsEnabledIn(ctx.Event.GroupID) { + ctx.Send(message.Text("已启用!")) + } else { + m.Enable(ctx.Event.GroupID) + ctx.Send(message.Text("添加成功!")) + } + } else { + ctx.Send(message.Text("找不到该服务!")) + } + }) + en.OnCommand("关闭粉丝日报", zero.AdminPermission).SetBlock(true). + Handle(func(ctx *zero.Ctx) { + m, ok := control.Lookup("fansdaily") + if ok { + if m.IsEnabledIn(ctx.Event.GroupID) { + m.Disable(ctx.Event.GroupID) + ctx.Send(message.Text("关闭成功!")) + } else { + ctx.Send(message.Text("未启用!")) + } + } else { + ctx.Send(message.Text("找不到该服务!")) + } }) } // 定时任务每天晚上最后2分钟执行一次 -func fansDaily(groupID int64) { +func fansDaily() { c := cron.New() - _, err := c.AddFunc("58 23 * * *", func() { fansData(groupID) }) + _, err := c.AddFunc("58 23 * * *", func() { sendNotice() }) if err == nil { c.Start() } } // 获取数据拼接消息链并发送 -func fansData(groupID int64) { - // TODO: 更改为 GetBot - zero.RangeBot(func(id int64, ctx *zero.Ctx) bool { - var ( - diana = fansapi("672328094") - ava = fansapi("672346917") - eileen = fansapi("672342685") - bella = fansapi("672353429") - carol = fansapi("351609538") - ) - ctx.SendGroupMessage( - groupID, - message.Text( - time.Now().Format("2006-01-02"), " Asoul全团粉丝日报如下", "\n\n", - "uid: ", diana.Mid, "\n", - "名字: ", diana.Uname, "\n", - "当前粉丝数: ", diana.Follower, "\n", - "今日涨粉数: ", diana.Rise, "\n", - "视频投稿数: ", diana.Video, "\n", - "直播间id: ", diana.Roomid, "\n", - "舰队: ", diana.GuardNum, "\n", - "直播总排名: ", diana.AreaRank, "\n", - "数据来源: ", "https://vtbs.moe/detail/", "672328094", "\n\n", +func getMsg() message.MessageSegment { + var ( + diana = fansapi("672328094") + ava = fansapi("672346917") + eileen = fansapi("672342685") + bella = fansapi("672353429") + carol = fansapi("351609538") + ) + return message.Text( + time.Now().Format("2006-01-02"), " Asoul全团粉丝日报如下", "\n\n", + "uid: ", diana.Mid, "\n", + "名字: ", diana.Uname, "\n", + "当前粉丝数: ", diana.Follower, "\n", + "今日涨粉数: ", diana.Rise, "\n", + "视频投稿数: ", diana.Video, "\n", + "直播间id: ", diana.Roomid, "\n", + "舰队: ", diana.GuardNum, "\n", + "直播总排名: ", diana.AreaRank, "\n", + "数据来源: ", "https://vtbs.moe/detail/", "672328094", "\n\n", - "uid: ", ava.Mid, "\n", - "名字: ", ava.Uname, "\n", - "当前粉丝数: ", ava.Follower, "\n", - "今日涨粉数: ", ava.Rise, "\n", - "视频投稿数: ", ava.Video, "\n", - "直播间id: ", ava.Roomid, "\n", - "舰队: ", ava.GuardNum, "\n", - "直播总排名: ", ava.AreaRank, "\n", - "数据来源: ", "https://vtbs.moe/detail/", "672346917", "\n\n", + "uid: ", ava.Mid, "\n", + "名字: ", ava.Uname, "\n", + "当前粉丝数: ", ava.Follower, "\n", + "今日涨粉数: ", ava.Rise, "\n", + "视频投稿数: ", ava.Video, "\n", + "直播间id: ", ava.Roomid, "\n", + "舰队: ", ava.GuardNum, "\n", + "直播总排名: ", ava.AreaRank, "\n", + "数据来源: ", "https://vtbs.moe/detail/", "672346917", "\n\n", - "uid: ", eileen.Mid, "\n", - "名字: ", eileen.Uname, "\n", - "当前粉丝数: ", eileen.Follower, "\n", - "今日涨粉数: ", eileen.Rise, "\n", - "视频投稿数: ", eileen.Video, "\n", - "直播间id: ", eileen.Roomid, "\n", - "舰队: ", eileen.GuardNum, "\n", - "直播总排名: ", eileen.AreaRank, "\n", - "数据来源: ", "https://vtbs.moe/detail/", "672342685", "\n\n", + "uid: ", eileen.Mid, "\n", + "名字: ", eileen.Uname, "\n", + "当前粉丝数: ", eileen.Follower, "\n", + "今日涨粉数: ", eileen.Rise, "\n", + "视频投稿数: ", eileen.Video, "\n", + "直播间id: ", eileen.Roomid, "\n", + "舰队: ", eileen.GuardNum, "\n", + "直播总排名: ", eileen.AreaRank, "\n", + "数据来源: ", "https://vtbs.moe/detail/", "672342685", "\n\n", - "uid: ", bella.Mid, "\n", - "名字: ", bella.Uname, "\n", - "当前粉丝数: ", bella.Follower, "\n", - "今日涨粉数: ", bella.Rise, "\n", - "视频投稿数: ", bella.Video, "\n", - "直播间id: ", bella.Roomid, "\n", - "舰队: ", bella.GuardNum, "\n", - "直播总排名: ", bella.AreaRank, "\n", - "数据来源: ", "https://vtbs.moe/detail/", "672353429", "\n\n", + "uid: ", bella.Mid, "\n", + "名字: ", bella.Uname, "\n", + "当前粉丝数: ", bella.Follower, "\n", + "今日涨粉数: ", bella.Rise, "\n", + "视频投稿数: ", bella.Video, "\n", + "直播间id: ", bella.Roomid, "\n", + "舰队: ", bella.GuardNum, "\n", + "直播总排名: ", bella.AreaRank, "\n", + "数据来源: ", "https://vtbs.moe/detail/", "672353429", "\n\n", - "uid: ", carol.Mid, "\n", - "名字: ", carol.Uname, "\n", - "当前粉丝数: ", carol.Follower, "\n", - "今日涨粉数: ", carol.Rise, "\n", - "视频投稿数: ", carol.Video, "\n", - "直播间id: ", carol.Roomid, "\n", - "舰队: ", carol.GuardNum, "\n", - "直播总排名: ", carol.AreaRank, "\n", - "数据来源: ", "https://vtbs.moe/detail/", "351609538", - )) - return true - }) + "uid: ", carol.Mid, "\n", + "名字: ", carol.Uname, "\n", + "当前粉丝数: ", carol.Follower, "\n", + "今日涨粉数: ", carol.Rise, "\n", + "视频投稿数: ", carol.Video, "\n", + "直播间id: ", carol.Roomid, "\n", + "舰队: ", carol.GuardNum, "\n", + "直播总排名: ", carol.AreaRank, "\n", + "数据来源: ", "https://vtbs.moe/detail/", "351609538", + ) +} + +// 获取数据拼接消息链并发送 +func sendNotice() { + m, ok := control.Lookup("fansdaily") + if ok { + msg := getMsg() + zero.RangeBot(func(id int64, ctx *zero.Ctx) bool { + for _, g := range ctx.GetGroupList().Array() { + grp := g.Get("group_id").Int() + if m.IsEnabledIn(grp) { + ctx.SendGroupMessage(grp, msg) + } + } + return true + }) + } } // 请求api diff --git a/plugin_bilibili/info.go b/plugin_bilibili/info.go index b2bbab85..64dff005 100644 --- a/plugin_bilibili/info.go +++ b/plugin_bilibili/info.go @@ -16,8 +16,7 @@ var engine = control.Register("bilibili", &control.Options{ DisableOnDefault: false, Help: "bilibili\n" + "- >vup info [名字|uid]\n" + - "- >user info [名字|uid]\n" + - "- /开启粉丝日报", + "- >user info [名字|uid]", }) // 查成分的