✏️ 持久化 fansdaily

This commit is contained in:
fumiama 2021-11-26 19:45:48 +08:00
parent d1656b25c9
commit 2917ff6701
2 changed files with 108 additions and 68 deletions

View File

@ -5,6 +5,7 @@ import (
"net/http" "net/http"
"time" "time"
"github.com/FloatTech/ZeroBot-Plugin/control"
"github.com/fumiama/cron" "github.com/fumiama/cron"
zero "github.com/wdvxdr1123/ZeroBot" zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/message" "github.com/wdvxdr1123/ZeroBot/message"
@ -23,25 +24,52 @@ type follower struct {
// 开启日报推送 // 开启日报推送
func init() { 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) { 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分钟执行一次 // 定时任务每天晚上最后2分钟执行一次
func fansDaily(groupID int64) { func fansDaily() {
c := cron.New() c := cron.New()
_, err := c.AddFunc("58 23 * * *", func() { fansData(groupID) }) _, err := c.AddFunc("58 23 * * *", func() { sendNotice() })
if err == nil { if err == nil {
c.Start() c.Start()
} }
} }
// 获取数据拼接消息链并发送 // 获取数据拼接消息链并发送
func fansData(groupID int64) { func getMsg() message.MessageSegment {
// TODO: 更改为 GetBot
zero.RangeBot(func(id int64, ctx *zero.Ctx) bool {
var ( var (
diana = fansapi("672328094") diana = fansapi("672328094")
ava = fansapi("672346917") ava = fansapi("672346917")
@ -49,9 +77,7 @@ func fansData(groupID int64) {
bella = fansapi("672353429") bella = fansapi("672353429")
carol = fansapi("351609538") carol = fansapi("351609538")
) )
ctx.SendGroupMessage( return message.Text(
groupID,
message.Text(
time.Now().Format("2006-01-02"), " Asoul全团粉丝日报如下", "\n\n", time.Now().Format("2006-01-02"), " Asoul全团粉丝日报如下", "\n\n",
"uid: ", diana.Mid, "\n", "uid: ", diana.Mid, "\n",
"名字: ", diana.Uname, "\n", "名字: ", diana.Uname, "\n",
@ -102,9 +128,24 @@ func fansData(groupID int64) {
"舰队: ", carol.GuardNum, "\n", "舰队: ", carol.GuardNum, "\n",
"直播总排名: ", carol.AreaRank, "\n", "直播总排名: ", carol.AreaRank, "\n",
"数据来源: ", "https://vtbs.moe/detail/", "351609538", "数据来源: ", "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 return true
}) })
}
} }
// 请求api // 请求api

View File

@ -16,8 +16,7 @@ var engine = control.Register("bilibili", &control.Options{
DisableOnDefault: false, DisableOnDefault: false,
Help: "bilibili\n" + Help: "bilibili\n" +
"- >vup info [名字|uid]\n" + "- >vup info [名字|uid]\n" +
"- >user info [名字|uid]\n" + "- >user info [名字|uid]",
"- /开启粉丝日报",
}) })
// 查成分的 // 查成分的