@@ -6,8 +6,11 @@ import (
6
6
"encoding/json"
7
7
"net/http"
8
8
"strings"
9
+ "time"
9
10
11
+ fcext "github.com/FloatTech/floatbox/ctxext"
10
12
"github.com/FloatTech/floatbox/web"
13
+ sql "github.com/FloatTech/sqlite"
11
14
"github.com/tidwall/gjson"
12
15
zero "github.com/wdvxdr1123/ZeroBot"
13
16
"github.com/wdvxdr1123/ZeroBot/message"
@@ -18,60 +21,78 @@ import (
18
21
)
19
22
20
23
func init () {
24
+ var sdb = & storage {}
25
+
21
26
en := control .AutoRegister (& ctrl.Options [* zero.Ctx ]{
22
27
DisableOnDefault : false ,
23
28
Extra : control .ExtraFromString ("aiimage" ),
24
29
Brief : "AI画图" ,
25
- Help : "- 设置AI画图密钥 \n " +
30
+ Help : "- 设置AI画图密钥xxx \n " +
26
31
"- 设置AI画图接口地址https://api.siliconflow.cn/v1/images/generations\n " +
27
32
"- 设置AI画图模型名Kwai-Kolors/Kolors\n " +
28
33
"- 查看AI画图配置\n " +
29
34
"- AI画图 [描述]" ,
30
35
PrivateDataFolder : "aiimage" ,
31
36
})
32
37
33
- en .OnPrefix ("设置AI画图密钥" , zero .OnlyPrivate , zero .SuperUserPermission ).SetBlock (true ).
38
+ getdb := fcext .DoOnceOnSuccess (func (ctx * zero.Ctx ) bool {
39
+ sdb .db = sql .New (en .DataFolder () + "aiimage.db" )
40
+ err := sdb .db .Open (time .Hour )
41
+ if err == nil {
42
+ // 创建配置表
43
+ err = sdb .db .Create ("config" , & imageConfig {})
44
+ if err != nil {
45
+ ctx .SendChain (message .Text ("[ERROR]:" , err ))
46
+ return false
47
+ }
48
+ return true
49
+ }
50
+ ctx .SendChain (message .Text ("[ERROR]:" , err ))
51
+ return false
52
+ })
53
+
54
+ en .OnPrefix ("设置AI画图密钥" , getdb , zero .OnlyPrivate , zero .SuperUserPermission ).SetBlock (true ).
34
55
Handle (func (ctx * zero.Ctx ) {
35
56
apiKey := strings .TrimSpace (ctx .State ["args" ].(string ))
36
- cfg := GetConfig ()
37
- err := SetConfig (apiKey , cfg .APIURL , cfg .ModelName )
57
+ cfg := sdb . getConfig ()
58
+ err := sdb . setConfig (apiKey , cfg .APIURL , cfg .ModelName )
38
59
if err != nil {
39
60
ctx .SendChain (message .Text ("ERROR: 设置API密钥失败: " , err ))
40
61
return
41
62
}
42
63
ctx .SendChain (message .Text ("成功设置API密钥" ))
43
64
})
44
65
45
- en .OnPrefix ("设置AI画图接口地址" , zero .OnlyPrivate , zero .SuperUserPermission ).SetBlock (true ).
66
+ en .OnPrefix ("设置AI画图接口地址" , getdb , zero .OnlyPrivate , zero .SuperUserPermission ).SetBlock (true ).
46
67
Handle (func (ctx * zero.Ctx ) {
47
68
apiURL := strings .TrimSpace (ctx .State ["args" ].(string ))
48
- cfg := GetConfig ()
49
- err := SetConfig (cfg .APIKey , apiURL , cfg .ModelName )
69
+ cfg := sdb . getConfig ()
70
+ err := sdb . setConfig (cfg .APIKey , apiURL , cfg .ModelName )
50
71
if err != nil {
51
72
ctx .SendChain (message .Text ("ERROR: 设置API地址失败: " , err ))
52
73
return
53
74
}
54
75
ctx .SendChain (message .Text ("成功设置API地址" ))
55
76
})
56
77
57
- en .OnPrefix ("设置AI画图模型名" , zero .OnlyPrivate , zero .SuperUserPermission ).SetBlock (true ).
78
+ en .OnPrefix ("设置AI画图模型名" , getdb , zero .OnlyPrivate , zero .SuperUserPermission ).SetBlock (true ).
58
79
Handle (func (ctx * zero.Ctx ) {
59
80
modelName := strings .TrimSpace (ctx .State ["args" ].(string ))
60
- cfg := GetConfig ()
61
- err := SetConfig (cfg .APIKey , cfg .APIURL , modelName )
81
+ cfg := sdb . getConfig ()
82
+ err := sdb . setConfig (cfg .APIKey , cfg .APIURL , modelName )
62
83
if err != nil {
63
84
ctx .SendChain (message .Text ("ERROR: 设置模型失败: " , err ))
64
85
return
65
86
}
66
87
ctx .SendChain (message .Text ("成功设置模型: " , modelName ))
67
88
})
68
89
69
- en .OnFullMatch ("查看AI画图配置" , zero .OnlyPrivate , zero .SuperUserPermission ).SetBlock (true ).
90
+ en .OnFullMatch ("查看AI画图配置" , getdb , zero .OnlyPrivate , zero .SuperUserPermission ).SetBlock (true ).
70
91
Handle (func (ctx * zero.Ctx ) {
71
- ctx .SendChain (message .Text (PrintConfig ()))
92
+ ctx .SendChain (message .Text (sdb . PrintConfig ()))
72
93
})
73
94
74
- en .OnPrefix ("AI画图" ).SetBlock (true ).
95
+ en .OnPrefix ("AI画图" , getdb ).SetBlock (true ).
75
96
Handle (func (ctx * zero.Ctx ) {
76
97
ctx .SendChain (message .Text ("少女思考中..." ))
77
98
prompt := strings .TrimSpace (ctx .State ["args" ].(string ))
@@ -80,22 +101,21 @@ func init() {
80
101
return
81
102
}
82
103
83
- cfg := GetConfig ()
104
+ cfg := sdb . getConfig ()
84
105
if cfg .APIKey == "" || cfg .APIURL == "" || cfg .ModelName == "" {
85
106
ctx .SendChain (message .Text ("请先配置API密钥、地址和模型" ))
86
107
return
87
108
}
88
109
89
110
// 准备请求数据
90
- reqData := map [string ]interface {}{
111
+ reqBytes , _ := json . Marshal ( map [string ]interface {}{
91
112
"model" : cfg .ModelName ,
92
113
"prompt" : prompt ,
93
114
"image_size" : "1024x1024" ,
94
115
"batch_size" : 4 ,
95
116
"num_inference_steps" : 20 ,
96
117
"guidance_scale" : 7.5 ,
97
- }
98
- reqBytes , _ := json .Marshal (reqData )
118
+ })
99
119
100
120
// 发送API请求
101
121
data , err := web .RequestDataWithHeaders (
0 commit comments