fortune 增加下载锁;优化 gui 插件控制

This commit is contained in:
fumiama 2021-10-27 12:42:34 +08:00
parent 82ee2f6b0a
commit 755bfeaa5b
5 changed files with 63 additions and 67 deletions

View File

@ -128,23 +128,11 @@ func updateAllPluginStatus(context *gin.Context) {
} }
enable = parse["enable"].(bool) enable = parse["enable"].(bool)
} }
var groups []int64
zero.RangeBot(func(id int64, ctx *zero.Ctx) bool {
for _, group := range ctx.GetGroupList().Array() {
groups = append(groups, group.Get("group_id").Int())
}
return true
})
ctrl.ForEach(func(key string, manager *ctrl.Control) bool { ctrl.ForEach(func(key string, manager *ctrl.Control) bool {
if enable { if enable {
for _, group := range groups { manager.Enable(0)
manager.Enable(group)
}
} else { } else {
for _, group := range groups { manager.Disable(0)
manager.Disable(group)
}
} }
return true return true
}) })
@ -175,18 +163,11 @@ func updatePluginAllGroupStatus(context *gin.Context) {
context.JSON(404, nil) context.JSON(404, nil)
return return
} }
zero.RangeBot(func(id int64, ctx *zero.Ctx) bool { if enable {
for _, group := range ctx.GetGroupList().Array() { control.Enable(0)
if enable { } else {
control.Enable(group.Get("group_id").Int()) control.Disable(0)
} else { }
control.Disable(group.Get("group_id").Int())
}
}
return true
})
context.JSON(200, nil) context.JSON(200, nil)
} }

24
main.go
View File

@ -101,23 +101,21 @@ func printBanner() {
func main() { func main() {
printBanner() printBanner()
zero.Run(zero.Config{
NickName: []string{"椛椛", "ATRI", "atri", "亚托莉", "アトリ"},
CommandPrefix: "/",
// SuperUsers 某些功能需要主人权限,可通过以下两种方式修改
// []string{}:通过代码写死的方式添加主人账号
// flag.Args():通过命令行参数的方式添加主人账号
SuperUsers: append([]string{"12345678", "87654321"}, flag.Args()...),
Driver: []zero.Driver{
driver.NewWebSocketClient(*url, *token),
},
},
)
// 帮助 // 帮助
zero.OnFullMatchGroup([]string{"/help", ".help", "菜单"}, zero.OnlyToMe).SetBlock(true).FirstPriority(). zero.OnFullMatchGroup([]string{"/help", ".help", "菜单"}, zero.OnlyToMe).SetBlock(true).FirstPriority().
Handle(func(ctx *zero.Ctx) { Handle(func(ctx *zero.Ctx) {
ctx.SendChain(message.Text(banner)) ctx.SendChain(message.Text(banner))
}) })
zero.Run(
zero.Config{
NickName: []string{"椛椛", "ATRI", "atri", "亚托莉", "アトリ"},
CommandPrefix: "/",
// SuperUsers 某些功能需要主人权限,可通过以下两种方式修改
// "12345678", "87654321":通过代码写死的方式添加主人账号
// flag.Args():通过命令行参数的方式添加主人账号,无需修改下方任何代码
SuperUsers: append([]string{"12345678", "87654321"}, flag.Args()...),
Driver: []zero.Driver{driver.NewWebSocketClient(*url, *token)},
},
)
select {} select {}
} }

View File

@ -38,6 +38,7 @@ func fansDaily(groupID int64) {
// 获取数据拼接消息链并发送 // 获取数据拼接消息链并发送
func fansData(groupID int64) { func fansData(groupID int64) {
// TODO: 更改为 GetBot
zero.RangeBot(func(id int64, ctx *zero.Ctx) bool { zero.RangeBot(func(id int64, ctx *zero.Ctx) bool {
var ( var (
diana = fansapi("672328094") diana = fansapi("672328094")

View File

@ -12,6 +12,7 @@ import (
"math/rand" "math/rand"
"os" "os"
"strconv" "strconv"
"sync"
"time" "time"
"github.com/fogleman/gg" "github.com/fogleman/gg"
@ -35,6 +36,8 @@ var (
table = [...]string{"车万", "DC4", "爱因斯坦", "星空列车", "樱云之恋", "富婆妹", "李清歌", "公主连结", "原神", "明日方舟", "碧蓝航线", "碧蓝幻想", "战双", "阴阳师"} table = [...]string{"车万", "DC4", "爱因斯坦", "星空列车", "樱云之恋", "富婆妹", "李清歌", "公主连结", "原神", "明日方舟", "碧蓝航线", "碧蓝幻想", "战双", "阴阳师"}
// 映射底图与 index // 映射底图与 index
index = make(map[string]uint32) index = make(map[string]uint32)
// 下载锁
dlmu sync.Mutex
) )
func init() { func init() {
@ -77,24 +80,32 @@ func init() {
// 检查签文文件是否存在 // 检查签文文件是否存在
mikuji := base + "运势签文.json" mikuji := base + "运势签文.json"
if file.IsNotExist(mikuji) { if file.IsNotExist(mikuji) {
ctx.SendChain(message.Text("正在下载签文文件,请稍后...")) dlmu.Lock()
err := file.DownloadTo(site+"运势签文.json", mikuji) if file.IsNotExist(mikuji) {
if err != nil { ctx.SendChain(message.Text("正在下载签文文件,请稍后..."))
ctx.SendChain(message.Text("ERROR: ", err)) err := file.DownloadTo(site+"运势签文.json", mikuji)
return if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
ctx.SendChain(message.Text("下载签文文件完毕"))
} }
ctx.SendChain(message.Text("下载签文文件完毕")) dlmu.Unlock()
} }
// 检查字体文件是否存在 // 检查字体文件是否存在
ttf := base + "sakura.ttf" ttf := base + "sakura.ttf"
if file.IsNotExist(ttf) { if file.IsNotExist(ttf) {
ctx.SendChain(message.Text("正在下载字体文件,请稍后...")) dlmu.Lock()
err := file.DownloadTo(site+"sakura.ttf", ttf) if file.IsNotExist(ttf) {
if err != nil { ctx.SendChain(message.Text("正在下载字体文件,请稍后..."))
ctx.SendChain(message.Text("ERROR: ", err)) err := file.DownloadTo(site+"sakura.ttf", ttf)
return if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
ctx.SendChain(message.Text("下载字体文件完毕"))
} }
ctx.SendChain(message.Text("下载字体文件完毕")) dlmu.Unlock()
} }
// 获取该群背景类型,默认车万 // 获取该群背景类型,默认车万
kind := "车万" kind := "车万"
@ -110,23 +121,27 @@ func init() {
// 检查背景图片是否存在 // 检查背景图片是否存在
folder := base + kind folder := base + kind
if file.IsNotExist(folder) { if file.IsNotExist(folder) {
ctx.SendChain(message.Text("正在下载背景图片,请稍后...")) dlmu.Lock()
zipfile := kind + ".zip" if file.IsNotExist(folder) {
zipcache := base + zipfile ctx.SendChain(message.Text("正在下载背景图片,请稍后..."))
err := file.DownloadTo(site+zipfile, zipcache) zipfile := kind + ".zip"
if err != nil { zipcache := base + zipfile
ctx.SendChain(message.Text("ERROR: ", err)) err := file.DownloadTo(site+zipfile, zipcache)
return if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
ctx.SendChain(message.Text("下载背景图片完毕"))
err = unpack(zipcache, folder+"/")
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
ctx.SendChain(message.Text("解压背景图片完毕"))
// 释放空间
os.Remove(zipcache)
} }
ctx.SendChain(message.Text("下载背景图片完毕")) dlmu.Unlock()
err = unpack(zipcache, folder+"/")
if err != nil {
ctx.SendChain(message.Text("ERROR: ", err))
return
}
ctx.SendChain(message.Text("解压背景图片完毕"))
// 释放空间
os.Remove(zipcache)
} }
// 生成种子 // 生成种子
t, _ := strconv.ParseInt(time.Now().Format("20060102"), 10, 64) t, _ := strconv.ParseInt(time.Now().Format("20060102"), 10, 64)

View File

@ -190,6 +190,7 @@ func (ts *Timer) nextWakeTime() (date time.Time) {
func (ts *Timer) judgeHM() { func (ts *Timer) judgeHM() {
if ts.Hour < 0 || ts.Hour == int32(time.Now().Hour()) { if ts.Hour < 0 || ts.Hour == int32(time.Now().Hour()) {
if ts.Minute < 0 || ts.Minute == int32(time.Now().Minute()) { if ts.Minute < 0 || ts.Minute == int32(time.Now().Minute()) {
//zero.GetBot(zero.BotConfig.SelfID)
zero.RangeBot(func(id int64, ctx *zero.Ctx) bool { zero.RangeBot(func(id int64, ctx *zero.Ctx) bool {
ctx.Event = new(zero.Event) ctx.Event = new(zero.Event)
ctx.Event.GroupID = int64(ts.Grpid) ctx.Event.GroupID = int64(ts.Grpid)