mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-18 20:50:12 +08:00
feat(all): update to go1.24+
This commit is contained in:
parent
724e48f3e8
commit
aa67d09ee1
2
.github/workflows/gomod2nix.yml
vendored
2
.github/workflows/gomod2nix.yml
vendored
@ -18,7 +18,7 @@ jobs:
|
|||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@master
|
uses: actions/setup-go@master
|
||||||
with:
|
with:
|
||||||
go-version: "1.20"
|
go-version: "1.25"
|
||||||
|
|
||||||
- name: Check out code into the Go module directory
|
- name: Check out code into the Go module directory
|
||||||
uses: actions/checkout@master
|
uses: actions/checkout@master
|
||||||
|
|||||||
3
.github/workflows/nightly.yml
vendored
3
.github/workflows/nightly.yml
vendored
@ -30,7 +30,7 @@ jobs:
|
|||||||
- name: Setup Go environment
|
- name: Setup Go environment
|
||||||
uses: actions/setup-go@master
|
uses: actions/setup-go@master
|
||||||
with:
|
with:
|
||||||
go-version: '1.20'
|
go-version: '1.25'
|
||||||
- name: Cache downloaded module
|
- name: Cache downloaded module
|
||||||
uses: actions/cache@master
|
uses: actions/cache@master
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
@ -45,6 +45,7 @@ jobs:
|
|||||||
GOARCH: ${{ matrix.goarch }}
|
GOARCH: ${{ matrix.goarch }}
|
||||||
IS_PR: ${{ !!github.head_ref }}
|
IS_PR: ${{ !!github.head_ref }}
|
||||||
run: |
|
run: |
|
||||||
|
go generate ./...
|
||||||
if [ $GOOS = "windows" ]; then export BINARY_SUFFIX="$BINARY_SUFFIX.exe"; fi
|
if [ $GOOS = "windows" ]; then export BINARY_SUFFIX="$BINARY_SUFFIX.exe"; fi
|
||||||
if $IS_PR ; then echo $PR_PROMPT; fi
|
if $IS_PR ; then echo $PR_PROMPT; fi
|
||||||
export BINARY_NAME="$BINARY_PREFIX$GOOS_$GOARCH$BINARY_SUFFIX"
|
export BINARY_NAME="$BINARY_PREFIX$GOOS_$GOARCH$BINARY_SUFFIX"
|
||||||
|
|||||||
6
.github/workflows/pull.yml
vendored
6
.github/workflows/pull.yml
vendored
@ -26,7 +26,7 @@ jobs:
|
|||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@master
|
uses: actions/setup-go@master
|
||||||
with:
|
with:
|
||||||
go-version: '1.20'
|
go-version: '1.25'
|
||||||
|
|
||||||
- name: Check out code into the Go module directory
|
- name: Check out code into the Go module directory
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@ -34,7 +34,9 @@ jobs:
|
|||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
|
|
||||||
- name: Tidy Modules
|
- name: Tidy Modules
|
||||||
run: go mod tidy
|
run: |
|
||||||
|
go mod tidy
|
||||||
|
go generate ./...
|
||||||
|
|
||||||
- name: golangci-lint
|
- name: golangci-lint
|
||||||
uses: golangci/golangci-lint-action@master
|
uses: golangci/golangci-lint-action@master
|
||||||
|
|||||||
6
.github/workflows/push.yml
vendored
6
.github/workflows/push.yml
vendored
@ -8,13 +8,15 @@ jobs:
|
|||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@master
|
uses: actions/setup-go@master
|
||||||
with:
|
with:
|
||||||
go-version: '1.20'
|
go-version: '1.25'
|
||||||
|
|
||||||
- name: Check out code into the Go module directory
|
- name: Check out code into the Go module directory
|
||||||
uses: actions/checkout@master
|
uses: actions/checkout@master
|
||||||
|
|
||||||
- name: Tidy Modules
|
- name: Tidy Modules
|
||||||
run: go mod tidy
|
run: |
|
||||||
|
go mod tidy
|
||||||
|
go generate ./...
|
||||||
|
|
||||||
- name: Run Lint
|
- name: Run Lint
|
||||||
uses: golangci/golangci-lint-action@master
|
uses: golangci/golangci-lint-action@master
|
||||||
|
|||||||
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@ -16,7 +16,7 @@ jobs:
|
|||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
uses: actions/setup-go@master
|
uses: actions/setup-go@master
|
||||||
with:
|
with:
|
||||||
go-version: '1.20'
|
go-version: '1.25'
|
||||||
|
|
||||||
- name: Run GoReleaser
|
- name: Run GoReleaser
|
||||||
uses: goreleaser/goreleaser-action@master
|
uses: goreleaser/goreleaser-action@master
|
||||||
|
|||||||
@ -56,7 +56,7 @@ run:
|
|||||||
deadline: 5m
|
deadline: 5m
|
||||||
issues-exit-code: 1
|
issues-exit-code: 1
|
||||||
tests: false
|
tests: false
|
||||||
go: '1.20'
|
go: '1.25'
|
||||||
|
|
||||||
# output configuration options
|
# output configuration options
|
||||||
output:
|
output:
|
||||||
|
|||||||
@ -4,6 +4,7 @@ env:
|
|||||||
before:
|
before:
|
||||||
hooks:
|
hooks:
|
||||||
- go mod tidy
|
- go mod tidy
|
||||||
|
- go generate ./...
|
||||||
- go install github.com/tc-hib/go-winres@latest
|
- go install github.com/tc-hib/go-winres@latest
|
||||||
- go-winres make
|
- go-winres make
|
||||||
builds:
|
builds:
|
||||||
|
|||||||
58
README.md
58
README.md
@ -1462,50 +1462,6 @@ print("run[CQ:image,file="+j["img"]+"]")
|
|||||||
|
|
||||||
- [x] 每日特惠
|
- [x] 每日特惠
|
||||||
</details>
|
</details>
|
||||||
<details>
|
|
||||||
<summary>百度文心AI</summary>
|
|
||||||
|
|
||||||
`import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/wenxinAI"`
|
|
||||||
|
|
||||||
基于百度文心API的一些功能
|
|
||||||
|
|
||||||
key申请链接:https://wenxin.baidu.com/moduleApi/key
|
|
||||||
|
|
||||||
- [x] 为[自己/本群/QQ号/群+群号]设置文心key [API Key] [Secret Key]
|
|
||||||
|
|
||||||
- [x] 为[自己/本群/QQ号/群+群号]设置画图key [API Key] [Secret Key]
|
|
||||||
|
|
||||||
例:“为10086设置画图key 123 456”;“为群10010设置画图key 789 101”
|
|
||||||
|
|
||||||
文心key和画图key的API key 可以是相同的,只是文心key日限为200,画图日限为50,以此作区别。
|
|
||||||
|
|
||||||
- [x] 文心作文 (x字的)[作文题目]
|
|
||||||
|
|
||||||
- [x] 文心提案 (x字的)[文案标题]
|
|
||||||
|
|
||||||
- [x] 文心摘要 (x字的)[文章内容]
|
|
||||||
|
|
||||||
- [x] 文心小说 (x字的)[小说上文]
|
|
||||||
|
|
||||||
- [x] 文心对联 [上联]
|
|
||||||
|
|
||||||
- [x] 文心问答 [问题]
|
|
||||||
|
|
||||||
- [x] 文心补全 [带“_”的填空题]
|
|
||||||
|
|
||||||
- [x] 文心自定义 [prompt]
|
|
||||||
|
|
||||||
- [x] [bot名称]画几张[图片描述]的[图片类型][图片尺寸]
|
|
||||||
|
|
||||||
指令示例:
|
|
||||||
|
|
||||||
- 文心作文 我的椛椛机器人
|
|
||||||
|
|
||||||
- 文心作文 300字的我的椛椛机器人
|
|
||||||
|
|
||||||
- 椛椛帮我画几张金凤凰,背景绚烂,高饱和,古风,仙境,高清,4K,古风的油画方图
|
|
||||||
|
|
||||||
</details>
|
|
||||||
<details>
|
<details>
|
||||||
<summary>抽老婆</summary>
|
<summary>抽老婆</summary>
|
||||||
|
|
||||||
@ -1549,21 +1505,21 @@ print("run[CQ:image,file="+j["img"]+"]")
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
<details>
|
<details>
|
||||||
<summary>一些游戏王插件</summary>
|
<summary>游戏王白鸽API卡查</summary>
|
||||||
|
|
||||||
`import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/ygo"`
|
`import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/ygocdb"`
|
||||||
|
|
||||||
##### 白鸽API卡查
|
|
||||||
|
|
||||||
###### `"github.com/FloatTech/ZeroBot-Plugin/plugin/ygo/ygocdb.go"`
|
|
||||||
- [x] /ydp [xxx]
|
- [x] /ydp [xxx]
|
||||||
- [x] /yds [xxx]
|
- [x] /yds [xxx]
|
||||||
- [x] /ydb [xxx]
|
- [x] /ydb [xxx]
|
||||||
- 注:[xxx]为搜索内容;p:返回一张图片;s:返回一张效果描述;b:高级搜索
|
- 注:[xxx]为搜索内容;p:返回一张图片;s:返回一张效果描述;b:高级搜索
|
||||||
|
|
||||||
##### 集换社卡价查询
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary>游戏王集换社卡价查询</summary>
|
||||||
|
|
||||||
|
`import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/ygotrade"`
|
||||||
|
|
||||||
###### `"github.com/FloatTech/ZeroBot-Plugin/plugin/ygo/ygotrade.go"`
|
|
||||||
- [x] 查卡价 [卡名]
|
- [x] 查卡价 [卡名]
|
||||||
- [x] 查卡价 [卡名] -r [稀有度 稀有度 ...]
|
- [x] 查卡价 [卡名] -r [稀有度 稀有度 ...]
|
||||||
- [x] 查卡店 [卡名]
|
- [x] 查卡店 [卡名]
|
||||||
|
|||||||
164
abineundo/main.go
Normal file
164
abineundo/main.go
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
// Package abineundo provides an explicit "from the beginning" (Latin: "ab ineundō")
|
||||||
|
// initialization anchor.
|
||||||
|
//
|
||||||
|
// Name origin:
|
||||||
|
//
|
||||||
|
// Latin phrase "ab ineundō" meaning "from which is to be begun".
|
||||||
|
//
|
||||||
|
// Purpose:
|
||||||
|
//
|
||||||
|
// Place this package at the very top of top-level main.go so its init (present
|
||||||
|
// or future) executes before other plugin packages, filling in a predictable
|
||||||
|
// plugin priority.
|
||||||
|
//
|
||||||
|
// Typical usage:
|
||||||
|
//
|
||||||
|
// import (
|
||||||
|
// _ "github.com/your/module/abineundo" // priority anchor
|
||||||
|
// // ... other imports ...
|
||||||
|
// )
|
||||||
|
//
|
||||||
|
// A blank identifier import preserves ordering side-effects without expanding the
|
||||||
|
// exported API surface.
|
||||||
|
//
|
||||||
|
// (No further code is required here; the package's presence alone defines ordering semantics.)
|
||||||
|
package abineundo
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
_ "embed"
|
||||||
|
"regexp"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/FloatTech/zbputils/control"
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
|
)
|
||||||
|
|
||||||
|
//go:embed ref/main/main.go
|
||||||
|
var maincode string
|
||||||
|
|
||||||
|
//go:embed ref/custom/register.go
|
||||||
|
var customcode string
|
||||||
|
|
||||||
|
const (
|
||||||
|
statusnone = iota
|
||||||
|
statushigh
|
||||||
|
statushighend
|
||||||
|
statusmid
|
||||||
|
statusmidend
|
||||||
|
statuslow
|
||||||
|
statuslowend
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
priore = regexp.MustCompile(`^\t// -{28}(高|中|低)优先级区-{28} //$`)
|
||||||
|
mainpluginre = regexp.MustCompile(`^\t_ "github\.com/FloatTech/ZeroBot-Plugin/plugin/(\w+)"\s+// `)
|
||||||
|
custpluginre = regexp.MustCompile(`^\t_ "github\.com/FloatTech/ZeroBot-Plugin/custom/plugin/(\w+)"\s+// `)
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
highprios := make([]string, 0, 64)
|
||||||
|
midprios := make([]string, 0, 64)
|
||||||
|
lowprios := make([]string, 0, 64)
|
||||||
|
|
||||||
|
status := statusnone
|
||||||
|
scanner := bufio.NewScanner(strings.NewReader(maincode))
|
||||||
|
for scanner.Scan() {
|
||||||
|
line := scanner.Text()
|
||||||
|
|
||||||
|
prioword := ""
|
||||||
|
match := priore.FindStringSubmatch(line)
|
||||||
|
if len(match) > 1 {
|
||||||
|
prioword = match[1]
|
||||||
|
}
|
||||||
|
switch prioword {
|
||||||
|
case "高":
|
||||||
|
switch status {
|
||||||
|
case statusnone:
|
||||||
|
status = statushigh
|
||||||
|
case statushigh:
|
||||||
|
status = statushighend
|
||||||
|
default:
|
||||||
|
panic("unexpected")
|
||||||
|
}
|
||||||
|
case "中":
|
||||||
|
switch status {
|
||||||
|
case statushighend:
|
||||||
|
status = statusmid
|
||||||
|
case statusmid:
|
||||||
|
status = statusmidend
|
||||||
|
default:
|
||||||
|
panic("unexpected")
|
||||||
|
}
|
||||||
|
case "低":
|
||||||
|
switch status {
|
||||||
|
case statusmidend:
|
||||||
|
status = statuslow
|
||||||
|
case statuslow:
|
||||||
|
status = statuslowend
|
||||||
|
default:
|
||||||
|
panic("unexpected")
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
switch status {
|
||||||
|
case statusnone: // 还未开始匹配
|
||||||
|
continue
|
||||||
|
case statuslowend: // 匹配已结束
|
||||||
|
break
|
||||||
|
default: // 继续匹配插件
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 在对应优先级区域内匹配插件
|
||||||
|
if matches := mainpluginre.FindStringSubmatch(line); len(matches) > 1 {
|
||||||
|
name := matches[1]
|
||||||
|
switch status {
|
||||||
|
case statushigh:
|
||||||
|
highprios = append(highprios, name)
|
||||||
|
case statusmid:
|
||||||
|
midprios = append(midprios, name)
|
||||||
|
case statuslow:
|
||||||
|
lowprios = append(lowprios, name)
|
||||||
|
default: // 在不该匹配到插件的区域匹配到
|
||||||
|
panic("unexpected")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
custprios := make([]string, 0, 64)
|
||||||
|
|
||||||
|
scanner = bufio.NewScanner(strings.NewReader(customcode))
|
||||||
|
for scanner.Scan() {
|
||||||
|
line := scanner.Text()
|
||||||
|
|
||||||
|
if matches := custpluginre.FindStringSubmatch(line); len(matches) > 1 {
|
||||||
|
custprios = append(custprios, matches[1])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生成最终插件优先级表
|
||||||
|
m := make(map[string]uint64, 4*(len(highprios)+len(midprios)+len(lowprios)+len(custprios)))
|
||||||
|
i := 0
|
||||||
|
for _, name := range highprios {
|
||||||
|
m[name] = (uint64(i) + 1) * 10
|
||||||
|
logrus.Debugln("[ab] set high plugin", name, "prio to", m[name])
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
for _, name := range custprios {
|
||||||
|
m[name] = (uint64(i) + 1) * 10
|
||||||
|
logrus.Debugln("[ab] set cust plugin", name, "prio to", m[name])
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
for _, name := range midprios {
|
||||||
|
m[name] = (uint64(i) + 1) * 10
|
||||||
|
logrus.Debugln("[ab] set mid plugin", name, "prio to", m[name])
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
for _, name := range lowprios {
|
||||||
|
m[name] = (uint64(i) + 1) * 10
|
||||||
|
logrus.Debugln("[ab] set low plugin", name, "prio to", m[name])
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
|
||||||
|
control.LoadCustomPriority(m)
|
||||||
|
}
|
||||||
2
abineundo/ref/custom/.gitignore
vendored
Normal file
2
abineundo/ref/custom/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
!.gitignore
|
||||||
|
*
|
||||||
2
abineundo/ref/main/.gitignore
vendored
Normal file
2
abineundo/ref/main/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
!.gitignore
|
||||||
|
*
|
||||||
@ -1,2 +1,4 @@
|
|||||||
// Package custom 注册用户自定义插件于此
|
// Package custom 注册用户自定义插件于此
|
||||||
package custom
|
package custom
|
||||||
|
|
||||||
|
//go:generate cp register.go ../abineundo/ref/custom
|
||||||
|
|||||||
2
data
2
data
@ -1 +1 @@
|
|||||||
Subproject commit c1878300e9c20a6f5649372d565d8f4868020595
|
Subproject commit 1b0abcd3fe4943fa3298885cf0311e8d94a02c0b
|
||||||
33
go.mod
33
go.mod
@ -1,6 +1,6 @@
|
|||||||
module github.com/FloatTech/ZeroBot-Plugin
|
module github.com/FloatTech/ZeroBot-Plugin
|
||||||
|
|
||||||
go 1.20
|
go 1.24.2
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/Baidu-AIP/golang-sdk v1.1.1
|
github.com/Baidu-AIP/golang-sdk v1.1.1
|
||||||
@ -10,9 +10,9 @@ require (
|
|||||||
github.com/FloatTech/imgfactory v0.2.2-0.20230413152719-e101cc3606ef
|
github.com/FloatTech/imgfactory v0.2.2-0.20230413152719-e101cc3606ef
|
||||||
github.com/FloatTech/rendercard v0.2.0
|
github.com/FloatTech/rendercard v0.2.0
|
||||||
github.com/FloatTech/sqlite v1.7.2
|
github.com/FloatTech/sqlite v1.7.2
|
||||||
github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562
|
github.com/FloatTech/ttl v0.0.0-20250224045156-012b1463287d
|
||||||
github.com/FloatTech/zbpctrl v1.7.0
|
github.com/FloatTech/zbpctrl v1.7.0
|
||||||
github.com/FloatTech/zbputils v1.7.2-0.20250926153026-d616e2b87477
|
github.com/FloatTech/zbputils v1.7.2-0.20250930154951-b9dba62964b2
|
||||||
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7
|
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7
|
||||||
github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5
|
github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5
|
||||||
github.com/Tnze/go-mc v1.20.2
|
github.com/Tnze/go-mc v1.20.2
|
||||||
@ -20,7 +20,7 @@ require (
|
|||||||
github.com/corona10/goimagehash v1.1.0
|
github.com/corona10/goimagehash v1.1.0
|
||||||
github.com/davidscholberg/go-durationfmt v0.0.0-20170122144659-64843a2083d3
|
github.com/davidscholberg/go-durationfmt v0.0.0-20170122144659-64843a2083d3
|
||||||
github.com/disintegration/imaging v1.6.2
|
github.com/disintegration/imaging v1.6.2
|
||||||
github.com/fumiama/ahsai v0.1.0
|
github.com/fumiama/ahsai v0.1.1
|
||||||
github.com/fumiama/cron v1.3.0
|
github.com/fumiama/cron v1.3.0
|
||||||
github.com/fumiama/deepinfra v0.0.0-20250924162107-cf156d49a0fa
|
github.com/fumiama/deepinfra v0.0.0-20250924162107-cf156d49a0fa
|
||||||
github.com/fumiama/go-base16384 v1.7.0
|
github.com/fumiama/go-base16384 v1.7.0
|
||||||
@ -29,7 +29,7 @@ require (
|
|||||||
github.com/fumiama/gotracemoe v0.0.3
|
github.com/fumiama/gotracemoe v0.0.3
|
||||||
github.com/fumiama/jieba v0.0.0-20221203025406-36c17a10b565
|
github.com/fumiama/jieba v0.0.0-20221203025406-36c17a10b565
|
||||||
github.com/fumiama/slowdo v0.0.0-20241001074058-27c4fe5259a4
|
github.com/fumiama/slowdo v0.0.0-20241001074058-27c4fe5259a4
|
||||||
github.com/fumiama/terasu v0.0.0-20250409134005-3ac40e382e6c
|
github.com/fumiama/terasu v0.0.0-20250930151601-1d9b679c36c2
|
||||||
github.com/fumiama/unibase2n v0.0.0-20240530074540-ec743fd5a6d6
|
github.com/fumiama/unibase2n v0.0.0-20240530074540-ec743fd5a6d6
|
||||||
github.com/go-ego/gse v0.80.3
|
github.com/go-ego/gse v0.80.3
|
||||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0
|
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0
|
||||||
@ -40,17 +40,17 @@ require (
|
|||||||
github.com/lithammer/fuzzysearch v1.1.8
|
github.com/lithammer/fuzzysearch v1.1.8
|
||||||
github.com/liuzl/gocc v0.0.0-20231231122217-0372e1059ca5
|
github.com/liuzl/gocc v0.0.0-20231231122217-0372e1059ca5
|
||||||
github.com/mroth/weightedrand v1.0.0
|
github.com/mroth/weightedrand v1.0.0
|
||||||
github.com/notnil/chess v1.9.0
|
github.com/notnil/chess v1.10.0
|
||||||
github.com/pkg/errors v0.9.1
|
github.com/pkg/errors v0.9.1
|
||||||
github.com/shirou/gopsutil/v3 v3.24.5
|
github.com/shirou/gopsutil/v3 v3.24.5
|
||||||
github.com/sirupsen/logrus v1.9.3
|
github.com/sirupsen/logrus v1.9.3
|
||||||
github.com/tidwall/gjson v1.18.0
|
github.com/tidwall/gjson v1.18.0
|
||||||
github.com/wcharczuk/go-chart/v2 v2.1.2
|
github.com/wcharczuk/go-chart/v2 v2.1.2
|
||||||
github.com/wdvxdr1123/ZeroBot v1.8.2-0.20250921063512-13752a73d444
|
github.com/wdvxdr1123/ZeroBot v1.8.2-0.20250921063512-13752a73d444
|
||||||
gitlab.com/gomidi/midi/v2 v2.1.7
|
gitlab.com/gomidi/midi/v2 v2.3.16
|
||||||
golang.org/x/image v0.24.0
|
golang.org/x/image v0.31.0
|
||||||
golang.org/x/sys v0.30.0
|
golang.org/x/sys v0.36.0
|
||||||
golang.org/x/text v0.22.0
|
golang.org/x/text v0.29.0
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
gopkg.in/yaml.v3 v3.0.1
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -59,17 +59,18 @@ require (
|
|||||||
github.com/ajstarks/svgo v0.0.0-20200320125537-f189e35d30ca // indirect
|
github.com/ajstarks/svgo v0.0.0-20200320125537-f189e35d30ca // indirect
|
||||||
github.com/antchfx/xpath v1.3.3 // indirect
|
github.com/antchfx/xpath v1.3.3 // indirect
|
||||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||||
|
github.com/ebitengine/oto/v3 v3.3.2 // indirect
|
||||||
|
github.com/ebitengine/purego v0.8.0 // indirect
|
||||||
github.com/ericpauley/go-quantize v0.0.0-20200331213906-ae555eb2afa4 // indirect
|
github.com/ericpauley/go-quantize v0.0.0-20200331213906-ae555eb2afa4 // indirect
|
||||||
github.com/faiface/beep v1.1.0 // indirect
|
|
||||||
github.com/fumiama/go-simple-protobuf v0.2.0 // indirect
|
github.com/fumiama/go-simple-protobuf v0.2.0 // indirect
|
||||||
github.com/fumiama/gofastTEA v0.0.10 // indirect
|
github.com/fumiama/gofastTEA v0.0.10 // indirect
|
||||||
github.com/fumiama/imgsz v0.0.4 // indirect
|
github.com/fumiama/imgsz v0.0.4 // indirect
|
||||||
github.com/gabriel-vasile/mimetype v1.0.4 // indirect
|
github.com/gabriel-vasile/mimetype v1.4.8 // indirect
|
||||||
github.com/go-ole/go-ole v1.2.6 // indirect
|
github.com/go-ole/go-ole v1.2.6 // indirect
|
||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||||
github.com/hajimehoshi/oto v0.7.1 // indirect
|
github.com/gopxl/beep/v2 v2.1.1 // indirect
|
||||||
github.com/jfreymuth/oggvorbis v1.0.1 // indirect
|
github.com/jfreymuth/oggvorbis v1.0.5 // indirect
|
||||||
github.com/jfreymuth/vorbis v1.0.0 // indirect
|
github.com/jfreymuth/vorbis v1.0.2 // indirect
|
||||||
github.com/jinzhu/inflection v1.0.0 // indirect
|
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||||
github.com/liuzl/cedar-go v0.0.0-20170805034717-80a9c64b256d // indirect
|
github.com/liuzl/cedar-go v0.0.0-20170805034717-80a9c64b256d // indirect
|
||||||
github.com/liuzl/da v0.0.0-20180704015230-14771aad5b1d // indirect
|
github.com/liuzl/da v0.0.0-20180704015230-14771aad5b1d // indirect
|
||||||
@ -89,7 +90,7 @@ require (
|
|||||||
github.com/tklauser/numcpus v0.6.1 // indirect
|
github.com/tklauser/numcpus v0.6.1 // indirect
|
||||||
github.com/vcaesar/cedar v0.20.2 // indirect
|
github.com/vcaesar/cedar v0.20.2 // indirect
|
||||||
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
||||||
golang.org/x/net v0.33.0 // indirect
|
golang.org/x/net v0.42.0 // indirect
|
||||||
modernc.org/libc v1.61.0 // indirect
|
modernc.org/libc v1.61.0 // indirect
|
||||||
modernc.org/mathutil v1.6.0 // indirect
|
modernc.org/mathutil v1.6.0 // indirect
|
||||||
modernc.org/memory v1.8.0 // indirect
|
modernc.org/memory v1.8.0 // indirect
|
||||||
|
|||||||
106
go.sum
106
go.sum
@ -1,6 +1,5 @@
|
|||||||
github.com/Baidu-AIP/golang-sdk v1.1.1 h1:RQsAmgDSAkiq22I6n7XJ2t3afgzFeqjY46FGhvrx4cw=
|
github.com/Baidu-AIP/golang-sdk v1.1.1 h1:RQsAmgDSAkiq22I6n7XJ2t3afgzFeqjY46FGhvrx4cw=
|
||||||
github.com/Baidu-AIP/golang-sdk v1.1.1/go.mod h1:bXnGw7xPeKt8aF7UCELKrV6UZ/46spItONK1RQBQj1Y=
|
github.com/Baidu-AIP/golang-sdk v1.1.1/go.mod h1:bXnGw7xPeKt8aF7UCELKrV6UZ/46spItONK1RQBQj1Y=
|
||||||
github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
|
|
||||||
github.com/FloatTech/AnimeAPI v1.7.1-0.20250926171956-ba37dfebfc4a h1:D/+ni0hzmfC+5TVQyGuq/AReGrSNKWTSMqU+lNG60rc=
|
github.com/FloatTech/AnimeAPI v1.7.1-0.20250926171956-ba37dfebfc4a h1:D/+ni0hzmfC+5TVQyGuq/AReGrSNKWTSMqU+lNG60rc=
|
||||||
github.com/FloatTech/AnimeAPI v1.7.1-0.20250926171956-ba37dfebfc4a/go.mod h1:cuDd67B23xmICSmFBhWzXN51blod2BlM1liN9Ux0pSc=
|
github.com/FloatTech/AnimeAPI v1.7.1-0.20250926171956-ba37dfebfc4a/go.mod h1:cuDd67B23xmICSmFBhWzXN51blod2BlM1liN9Ux0pSc=
|
||||||
github.com/FloatTech/floatbox v0.0.0-20250513111443-adba80e84e80 h1:lFD1pd8NkYCrw0QpTX/T5pJ67I7AL5eGxQ4v0r9f81Q=
|
github.com/FloatTech/floatbox v0.0.0-20250513111443-adba80e84e80 h1:lFD1pd8NkYCrw0QpTX/T5pJ67I7AL5eGxQ4v0r9f81Q=
|
||||||
@ -13,12 +12,12 @@ github.com/FloatTech/rendercard v0.2.0 h1:PBTZ2gCEy/dAEGSfWecrGTrWDYpiBJD1dVzNDD
|
|||||||
github.com/FloatTech/rendercard v0.2.0/go.mod h1:Sbojcy1t3NfFz7/WicZRmR/uKFxNMYkKF8qHx69dxY0=
|
github.com/FloatTech/rendercard v0.2.0/go.mod h1:Sbojcy1t3NfFz7/WicZRmR/uKFxNMYkKF8qHx69dxY0=
|
||||||
github.com/FloatTech/sqlite v1.7.2 h1:b8COegNLSzofzOyARsVwSbz9OOzWEa8IElsTlx1TBLw=
|
github.com/FloatTech/sqlite v1.7.2 h1:b8COegNLSzofzOyARsVwSbz9OOzWEa8IElsTlx1TBLw=
|
||||||
github.com/FloatTech/sqlite v1.7.2/go.mod h1:/4tzfCGhrZnnjC1U8vcfwGQeF6eR649fhOsS3+Le0+s=
|
github.com/FloatTech/sqlite v1.7.2/go.mod h1:/4tzfCGhrZnnjC1U8vcfwGQeF6eR649fhOsS3+Le0+s=
|
||||||
github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562 h1:snfw7FNFym1eNnLrQ/VCf80LiQo9C7jHgrunZDwiRcY=
|
github.com/FloatTech/ttl v0.0.0-20250224045156-012b1463287d h1:mUQ/c3wXKsUGa4Sg9DBy01APXKB68PmobhxOyaJI7lY=
|
||||||
github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs=
|
github.com/FloatTech/ttl v0.0.0-20250224045156-012b1463287d/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs=
|
||||||
github.com/FloatTech/zbpctrl v1.7.0 h1:Hxo6EIhJo+pHjcQP9QgIJgluaT1pHH99zkk3njqTNMo=
|
github.com/FloatTech/zbpctrl v1.7.0 h1:Hxo6EIhJo+pHjcQP9QgIJgluaT1pHH99zkk3njqTNMo=
|
||||||
github.com/FloatTech/zbpctrl v1.7.0/go.mod h1:xmM4dSwHA02Gei3ogCRiG+RTrw/7Z69PfrN5NYf8BPE=
|
github.com/FloatTech/zbpctrl v1.7.0/go.mod h1:xmM4dSwHA02Gei3ogCRiG+RTrw/7Z69PfrN5NYf8BPE=
|
||||||
github.com/FloatTech/zbputils v1.7.2-0.20250926153026-d616e2b87477 h1:T1ugPphuYnLUWvJOw0S200p2tjM2rzVdwIz76rtGt8E=
|
github.com/FloatTech/zbputils v1.7.2-0.20250930154951-b9dba62964b2 h1:3XgC953tTNOt4sbvST4LqddsH2yV355qaxFUskvzW1A=
|
||||||
github.com/FloatTech/zbputils v1.7.2-0.20250926153026-d616e2b87477/go.mod h1:hIXcVZ3CFiL3dnM1QcZUMCjKhVryYY0EnJVN0kicB9A=
|
github.com/FloatTech/zbputils v1.7.2-0.20250930154951-b9dba62964b2/go.mod h1:klguZgIkWv7+1U/eh/5MFR9enyPqUuthSdXp/KrBE2g=
|
||||||
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
||||||
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7 h1:S/ferNiehVjNaBMNNBxUjLtVmP/YWD6Yh79RfPv4ehU=
|
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7 h1:S/ferNiehVjNaBMNNBxUjLtVmP/YWD6Yh79RfPv4ehU=
|
||||||
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7/go.mod h1:vD7Ra3Q9onRtojoY5sMCLQ7JBgjUsrXDnDKyFxqpf9w=
|
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7/go.mod h1:vD7Ra3Q9onRtojoY5sMCLQ7JBgjUsrXDnDKyFxqpf9w=
|
||||||
@ -37,7 +36,6 @@ github.com/antchfx/xpath v1.3.3 h1:tmuPQa1Uye0Ym1Zn65vxPgfltWb/Lxu2jeqIGteJSRs=
|
|||||||
github.com/antchfx/xpath v1.3.3/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs=
|
github.com/antchfx/xpath v1.3.3/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs=
|
||||||
github.com/corona10/goimagehash v1.1.0 h1:teNMX/1e+Wn/AYSbLHX8mj+mF9r60R1kBeqE9MkoYwI=
|
github.com/corona10/goimagehash v1.1.0 h1:teNMX/1e+Wn/AYSbLHX8mj+mF9r60R1kBeqE9MkoYwI=
|
||||||
github.com/corona10/goimagehash v1.1.0/go.mod h1:VkvE0mLn84L4aF8vCb6mafVajEb6QYMHl2ZJLn0mOGI=
|
github.com/corona10/goimagehash v1.1.0/go.mod h1:VkvE0mLn84L4aF8vCb6mafVajEb6QYMHl2ZJLn0mOGI=
|
||||||
github.com/d4l3k/messagediff v1.2.2-0.20190829033028-7e0a312ae40b/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo=
|
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
@ -49,14 +47,16 @@ github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1
|
|||||||
github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4=
|
github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4=
|
||||||
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
||||||
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
||||||
|
github.com/ebitengine/oto/v3 v3.3.2 h1:VTWBsKX9eb+dXzaF4jEwQbs4yWIdXukJ0K40KgkpYlg=
|
||||||
|
github.com/ebitengine/oto/v3 v3.3.2/go.mod h1:MZeb/lwoC4DCOdiTIxYezrURTw7EvK/yF863+tmBI+U=
|
||||||
|
github.com/ebitengine/purego v0.8.0 h1:JbqvnEzRvPpxhCJzJJ2y0RbiZ8nyjccVUrSM3q+GvvE=
|
||||||
|
github.com/ebitengine/purego v0.8.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
|
||||||
github.com/ericpauley/go-quantize v0.0.0-20200331213906-ae555eb2afa4 h1:BBade+JlV/f7JstZ4pitd4tHhpN+w+6I+LyOS7B4fyU=
|
github.com/ericpauley/go-quantize v0.0.0-20200331213906-ae555eb2afa4 h1:BBade+JlV/f7JstZ4pitd4tHhpN+w+6I+LyOS7B4fyU=
|
||||||
github.com/ericpauley/go-quantize v0.0.0-20200331213906-ae555eb2afa4/go.mod h1:H7chHJglrhPPzetLdzBleF8d22WYOv7UM/lEKYiwlKM=
|
github.com/ericpauley/go-quantize v0.0.0-20200331213906-ae555eb2afa4/go.mod h1:H7chHJglrhPPzetLdzBleF8d22WYOv7UM/lEKYiwlKM=
|
||||||
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y=
|
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y=
|
||||||
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0=
|
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0=
|
||||||
github.com/faiface/beep v1.1.0 h1:A2gWP6xf5Rh7RG/p9/VAW2jRSDEGQm5sbOb38sf5d4c=
|
github.com/fumiama/ahsai v0.1.1 h1:/t5tdKRim0TK6YwgNFQfqtDOW7Y2tFBsmdUWt3JK+C0=
|
||||||
github.com/faiface/beep v1.1.0/go.mod h1:6I8p6kK2q4opL/eWb+kAkk38ehnTunWeToJB+s51sT4=
|
github.com/fumiama/ahsai v0.1.1/go.mod h1:rBhHLgN2bygcqLpBi+XQa8B8Afn4UkPHQ5vvQibdbDQ=
|
||||||
github.com/fumiama/ahsai v0.1.0 h1:LXD61Kaj6kJHa3AEGsLIfKNzcgaVxg7JB72OR4yNNZ4=
|
|
||||||
github.com/fumiama/ahsai v0.1.0/go.mod h1:fFeNnqgo44i8FIaguK659aQryuZeFy+4klYLQu/rfdk=
|
|
||||||
github.com/fumiama/cron v1.3.0 h1:ZWlwuexF+HQHl3cYytEE5HNwD99q+3vNZF1GrEiXCFo=
|
github.com/fumiama/cron v1.3.0 h1:ZWlwuexF+HQHl3cYytEE5HNwD99q+3vNZF1GrEiXCFo=
|
||||||
github.com/fumiama/cron v1.3.0/go.mod h1:bz5Izvgi/xEUI8tlBN8BI2jr9Moo8N4or0KV8xXuPDY=
|
github.com/fumiama/cron v1.3.0/go.mod h1:bz5Izvgi/xEUI8tlBN8BI2jr9Moo8N4or0KV8xXuPDY=
|
||||||
github.com/fumiama/deepinfra v0.0.0-20250924162107-cf156d49a0fa h1:UMMNejpPp8dn92GPaVSZ2XKNSgp7+CVneOkZfExUilk=
|
github.com/fumiama/deepinfra v0.0.0-20250924162107-cf156d49a0fa h1:UMMNejpPp8dn92GPaVSZ2XKNSgp7+CVneOkZfExUilk=
|
||||||
@ -83,22 +83,19 @@ github.com/fumiama/slowdo v0.0.0-20241001074058-27c4fe5259a4 h1:zN9e09TYKXI1mNku
|
|||||||
github.com/fumiama/slowdo v0.0.0-20241001074058-27c4fe5259a4/go.mod h1:iZf1H/Jcw5gjOOFb4C5nlweJtViWc7uwUxRCe14pbYk=
|
github.com/fumiama/slowdo v0.0.0-20241001074058-27c4fe5259a4/go.mod h1:iZf1H/Jcw5gjOOFb4C5nlweJtViWc7uwUxRCe14pbYk=
|
||||||
github.com/fumiama/sqlite3 v1.29.10-simp h1:c5y3uKyU0q9t0/SyfynzYyuslQ5zP+5CD8e0yYY554A=
|
github.com/fumiama/sqlite3 v1.29.10-simp h1:c5y3uKyU0q9t0/SyfynzYyuslQ5zP+5CD8e0yYY554A=
|
||||||
github.com/fumiama/sqlite3 v1.29.10-simp/go.mod h1:ItX2a1OVGgNsFh6Dv60JQvGfJfTPHPVpV6DF59akYOA=
|
github.com/fumiama/sqlite3 v1.29.10-simp/go.mod h1:ItX2a1OVGgNsFh6Dv60JQvGfJfTPHPVpV6DF59akYOA=
|
||||||
github.com/fumiama/terasu v0.0.0-20250409134005-3ac40e382e6c h1:GXEfVjTQ2xLHmrHYwGY3W9orcbDPUarfQCC3SjKHeEw=
|
github.com/fumiama/terasu v0.0.0-20250930151601-1d9b679c36c2 h1:NAmsblfyAfQIZLPxkJil/kh6EV7Vrs/c7LGOavnUONM=
|
||||||
github.com/fumiama/terasu v0.0.0-20250409134005-3ac40e382e6c/go.mod h1:UVx8YP1jKKL1Cj+uy+OnQRM2Ih6U36Mqy9GSf7jabsI=
|
github.com/fumiama/terasu v0.0.0-20250930151601-1d9b679c36c2/go.mod h1:UVx8YP1jKKL1Cj+uy+OnQRM2Ih6U36Mqy9GSf7jabsI=
|
||||||
github.com/fumiama/unibase2n v0.0.0-20240530074540-ec743fd5a6d6 h1:LtDgr628eji8jRpjPCxsk7ibjcfi97QieZVCTjxLCBw=
|
github.com/fumiama/unibase2n v0.0.0-20240530074540-ec743fd5a6d6 h1:LtDgr628eji8jRpjPCxsk7ibjcfi97QieZVCTjxLCBw=
|
||||||
github.com/fumiama/unibase2n v0.0.0-20240530074540-ec743fd5a6d6/go.mod h1:lEaZsT4FRSqcjnQ5q8y+mkenkzR/r1D3BJmfdp0vqDg=
|
github.com/fumiama/unibase2n v0.0.0-20240530074540-ec743fd5a6d6/go.mod h1:lEaZsT4FRSqcjnQ5q8y+mkenkzR/r1D3BJmfdp0vqDg=
|
||||||
github.com/gabriel-vasile/mimetype v1.0.4 h1:uBejfH8l3/2f+5vjl1e4xIaSyNEhRBZ5N/ij7ohpNd8=
|
|
||||||
github.com/gabriel-vasile/mimetype v1.0.4/go.mod h1:6CDPel/o/3/s4+bp6kIbsWATq8pmgOisOPG40CJa6To=
|
github.com/gabriel-vasile/mimetype v1.0.4/go.mod h1:6CDPel/o/3/s4+bp6kIbsWATq8pmgOisOPG40CJa6To=
|
||||||
github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg=
|
github.com/gabriel-vasile/mimetype v1.4.8 h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3GqacKw1NM=
|
||||||
github.com/gdamore/tcell v1.3.0/go.mod h1:Hjvr+Ofd+gLglo7RYKxxnzCBmev3BzsS67MebKS4zMM=
|
github.com/gabriel-vasile/mimetype v1.4.8/go.mod h1:ByKUIKGjh1ODkGM1asKUbQZOLGrPjydw3hYPU2YU9t8=
|
||||||
github.com/go-audio/audio v1.0.0/go.mod h1:6uAu0+H2lHkwdGsAY+j2wHPNPpPoeg5AaEFh9FlA+Zs=
|
|
||||||
github.com/go-audio/riff v1.0.0/go.mod h1:l3cQwc85y79NQFCRB7TiPoNiaijp6q8Z0Uv38rVG498=
|
|
||||||
github.com/go-audio/wav v1.0.0/go.mod h1:3yoReyQOsiARkvPl3ERCi8JFjihzG6WhjYpZCf5zAWE=
|
|
||||||
github.com/go-ego/gse v0.80.3 h1:YNFkjMhlhQnUeuoFcUEd1ivh6SOB764rT8GDsEbDiEg=
|
github.com/go-ego/gse v0.80.3 h1:YNFkjMhlhQnUeuoFcUEd1ivh6SOB764rT8GDsEbDiEg=
|
||||||
github.com/go-ego/gse v0.80.3/go.mod h1:Gt3A9Ry1Eso2Kza4MRaiZ7f2DTAvActmETY46Lxg0gU=
|
github.com/go-ego/gse v0.80.3/go.mod h1:Gt3A9Ry1Eso2Kza4MRaiZ7f2DTAvActmETY46Lxg0gU=
|
||||||
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
||||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||||
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
|
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
|
||||||
|
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
|
||||||
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
|
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
|
||||||
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||||
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY=
|
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY=
|
||||||
@ -112,16 +109,12 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
|||||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/hajimehoshi/go-mp3 v0.3.0/go.mod h1:qMJj/CSDxx6CGHiZeCgbiq2DSUkbK0UbtXShQcnfyMM=
|
github.com/gopxl/beep/v2 v2.1.1 h1:6FYIYMm2qPAdWkjX+7xwKrViS1x0Po5kDMdRkq8NVbU=
|
||||||
github.com/hajimehoshi/oto v0.6.1/go.mod h1:0QXGEkbuJRohbJaxr7ZQSxnju7hEhseiPx2hrh6raOI=
|
github.com/gopxl/beep/v2 v2.1.1/go.mod h1:ZAm9TGQ9lvpoiFLd4zf5B1IuyxZhgRACMId1XJbaW0E=
|
||||||
github.com/hajimehoshi/oto v0.7.1 h1:I7maFPz5MBCwiutOrz++DLdbr4rTzBsbBuV2VpgU9kk=
|
github.com/jfreymuth/oggvorbis v1.0.5 h1:u+Ck+R0eLSRhgq8WTmffYnrVtSztJcYrl588DM4e3kQ=
|
||||||
github.com/hajimehoshi/oto v0.7.1/go.mod h1:wovJ8WWMfFKvP587mhHgot/MBr4DnNy9m6EepeVGnos=
|
github.com/jfreymuth/oggvorbis v1.0.5/go.mod h1:1U4pqWmghcoVsCJJ4fRBKv9peUJMBHixthRlBeD6uII=
|
||||||
github.com/icza/bitio v1.0.0/go.mod h1:0jGnlLAx8MKMr9VGnn/4YrvZiprkvBelsVIbA9Jjr9A=
|
github.com/jfreymuth/vorbis v1.0.2 h1:m1xH6+ZI4thH927pgKD8JOH4eaGRm18rEE9/0WKjvNE=
|
||||||
github.com/icza/mighty v0.0.0-20180919140131-cfd07d671de6/go.mod h1:xQig96I1VNBDIWGCdTt54nHt6EeI639SmHycLYL7FkA=
|
github.com/jfreymuth/vorbis v1.0.2/go.mod h1:DoftRo4AznKnShRl1GxiTFCseHr4zR9BN3TWXyuzrqQ=
|
||||||
github.com/jfreymuth/oggvorbis v1.0.1 h1:NT0eXBgE2WHzu6RT/6zcb2H10Kxj6Fm3PccT0LE6bqw=
|
|
||||||
github.com/jfreymuth/oggvorbis v1.0.1/go.mod h1:NqS+K+UXKje0FUYUPosyQ+XTVvjmVjps1aEZH1sumIk=
|
|
||||||
github.com/jfreymuth/vorbis v1.0.0 h1:SmDf783s82lIjGZi8EGUUaS7YxPHgRj4ZXW/h7rUi7U=
|
|
||||||
github.com/jfreymuth/vorbis v1.0.0/go.mod h1:8zy3lUAm9K/rJJk223RKy6vjCZTWC61NA2QD06bfOE0=
|
|
||||||
github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o=
|
github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o=
|
||||||
github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs=
|
github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs=
|
||||||
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
||||||
@ -142,27 +135,24 @@ github.com/liuzl/da v0.0.0-20180704015230-14771aad5b1d h1:hTRDIpJ1FjS9ULJuEzu69n
|
|||||||
github.com/liuzl/da v0.0.0-20180704015230-14771aad5b1d/go.mod h1:7xD3p0XnHvJFQ3t/stEJd877CSIMkH/fACVWen5pYnc=
|
github.com/liuzl/da v0.0.0-20180704015230-14771aad5b1d/go.mod h1:7xD3p0XnHvJFQ3t/stEJd877CSIMkH/fACVWen5pYnc=
|
||||||
github.com/liuzl/gocc v0.0.0-20231231122217-0372e1059ca5 h1:wnbHIeP1UX8ClYEWKGnw66PfYvReCHu9G5lXSte3Sqc=
|
github.com/liuzl/gocc v0.0.0-20231231122217-0372e1059ca5 h1:wnbHIeP1UX8ClYEWKGnw66PfYvReCHu9G5lXSte3Sqc=
|
||||||
github.com/liuzl/gocc v0.0.0-20231231122217-0372e1059ca5/go.mod h1:7KaV9YIR92M1FpbczAcfYQ3UZ5ayT27pNtunDmXvLBo=
|
github.com/liuzl/gocc v0.0.0-20231231122217-0372e1059ca5/go.mod h1:7KaV9YIR92M1FpbczAcfYQ3UZ5ayT27pNtunDmXvLBo=
|
||||||
github.com/lucasb-eyer/go-colorful v1.0.2/go.mod h1:0MS4r+7BZKSJ5mw4/S5MPN+qHFF1fYclkSPilDOKW0s=
|
|
||||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
|
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
|
||||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
|
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
|
||||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
|
||||||
github.com/mattn/go-sqlite3 v1.14.0 h1:mLyGNKR8+Vv9CAU7PphKa2hkEqxxhn8i32J6FPj1/QA=
|
github.com/mattn/go-sqlite3 v1.14.0 h1:mLyGNKR8+Vv9CAU7PphKa2hkEqxxhn8i32J6FPj1/QA=
|
||||||
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
|
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
|
||||||
github.com/mewkiz/flac v1.0.7/go.mod h1:yU74UH277dBUpqxPouHSQIar3G1X/QIclVbFahSd1pU=
|
|
||||||
github.com/mewkiz/pkg v0.0.0-20190919212034-518ade7978e2/go.mod h1:3E2FUC/qYUfM8+r9zAwpeHJzqRVVMIYnpzD/clwWxyA=
|
|
||||||
github.com/mroth/weightedrand v1.0.0 h1:V8JeHChvl2MP1sAoXq4brElOcza+jxLkRuwvtQu8L3E=
|
github.com/mroth/weightedrand v1.0.0 h1:V8JeHChvl2MP1sAoXq4brElOcza+jxLkRuwvtQu8L3E=
|
||||||
github.com/mroth/weightedrand v1.0.0/go.mod h1:3p2SIcC8al1YMzGhAIoXD+r9olo/g/cdJgAD905gyNE=
|
github.com/mroth/weightedrand v1.0.0/go.mod h1:3p2SIcC8al1YMzGhAIoXD+r9olo/g/cdJgAD905gyNE=
|
||||||
github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
|
github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
|
||||||
github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
|
github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
|
||||||
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
|
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
|
||||||
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
|
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
|
||||||
github.com/notnil/chess v1.9.0 h1:YMxR5kUVjtwcuFptGU0/3q7eG3MSHQNbg0VUekvRKV0=
|
github.com/notnil/chess v1.10.0 h1:RR3MgS9G6zZmJ+VPTJolyxdaIgxoUPyUUY+2iaw35G0=
|
||||||
github.com/notnil/chess v1.9.0/go.mod h1:cRuJUIBFq9Xki05TWHJxHYkC+fFpq45IWwk94DdlCrA=
|
github.com/notnil/chess v1.10.0/go.mod h1:cRuJUIBFq9Xki05TWHJxHYkC+fFpq45IWwk94DdlCrA=
|
||||||
|
github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e h1:s2RNOM/IGdY0Y6qfTeUKhDawdHDpK9RGBdx80qN4Ttw=
|
||||||
|
github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e/go.mod h1:nBdnFKj15wFbf94Rwfq4m30eAcyY9V/IyKAGQFtqkW0=
|
||||||
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0=
|
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0=
|
||||||
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y=
|
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
|
||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pkumza/numcn v1.0.0 h1:ZT5cf9IJkUZgRgEtCiNNykk0RwsrKXSTsvDHOwUTzgE=
|
github.com/pkumza/numcn v1.0.0 h1:ZT5cf9IJkUZgRgEtCiNNykk0RwsrKXSTsvDHOwUTzgE=
|
||||||
@ -178,12 +168,14 @@ github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U3
|
|||||||
github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
|
github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
|
||||||
github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
|
github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
|
||||||
github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=
|
github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=
|
||||||
|
github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
|
||||||
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||||
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
||||||
|
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
github.com/tetratelabs/wazero v1.5.0 h1:Yz3fZHivfDiZFUXnWMPUoiW7s8tC1sjdBtlJn08qYa0=
|
github.com/tetratelabs/wazero v1.5.0 h1:Yz3fZHivfDiZFUXnWMPUoiW7s8tC1sjdBtlJn08qYa0=
|
||||||
github.com/tetratelabs/wazero v1.5.0/go.mod h1:0U0G41+ochRKoPKCJlh0jMg1CHkyfK8kDqiirMmKY8A=
|
github.com/tetratelabs/wazero v1.5.0/go.mod h1:0U0G41+ochRKoPKCJlh0jMg1CHkyfK8kDqiirMmKY8A=
|
||||||
github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
|
github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
|
||||||
@ -199,6 +191,7 @@ github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9f
|
|||||||
github.com/vcaesar/cedar v0.20.2 h1:TDx7AdZhilKcfE1WvdToTJf5VrC/FXcUOW+KY1upLZ4=
|
github.com/vcaesar/cedar v0.20.2 h1:TDx7AdZhilKcfE1WvdToTJf5VrC/FXcUOW+KY1upLZ4=
|
||||||
github.com/vcaesar/cedar v0.20.2/go.mod h1:lyuGvALuZZDPNXwpzv/9LyxW+8Y6faN7zauFezNsnik=
|
github.com/vcaesar/cedar v0.20.2/go.mod h1:lyuGvALuZZDPNXwpzv/9LyxW+8Y6faN7zauFezNsnik=
|
||||||
github.com/vcaesar/tt v0.20.1 h1:D/jUeeVCNbq3ad8M7hhtB3J9x5RZ6I1n1eZ0BJp7M+4=
|
github.com/vcaesar/tt v0.20.1 h1:D/jUeeVCNbq3ad8M7hhtB3J9x5RZ6I1n1eZ0BJp7M+4=
|
||||||
|
github.com/vcaesar/tt v0.20.1/go.mod h1:cH2+AwGAJm19Wa6xvEa+0r+sXDJBT0QgNQey6mwqLeU=
|
||||||
github.com/wcharczuk/go-chart/v2 v2.1.2 h1:Y17/oYNuXwZg6TFag06qe8sBajwwsuvPiJJXcUcLL6E=
|
github.com/wcharczuk/go-chart/v2 v2.1.2 h1:Y17/oYNuXwZg6TFag06qe8sBajwwsuvPiJJXcUcLL6E=
|
||||||
github.com/wcharczuk/go-chart/v2 v2.1.2/go.mod h1:Zi4hbaqlWpYajnXB2K22IUYVXRXaLfSGNNR7P4ukyyQ=
|
github.com/wcharczuk/go-chart/v2 v2.1.2/go.mod h1:Zi4hbaqlWpYajnXB2K22IUYVXRXaLfSGNNR7P4ukyyQ=
|
||||||
github.com/wdvxdr1123/ZeroBot v1.8.2-0.20250921063512-13752a73d444 h1:7aYFXzvVr2zuxBvqrGaJb24Z4W12aXBdW8DuE1mteE4=
|
github.com/wdvxdr1123/ZeroBot v1.8.2-0.20250921063512-13752a73d444 h1:7aYFXzvVr2zuxBvqrGaJb24Z4W12aXBdW8DuE1mteE4=
|
||||||
@ -206,8 +199,8 @@ github.com/wdvxdr1123/ZeroBot v1.8.2-0.20250921063512-13752a73d444/go.mod h1:C86
|
|||||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
|
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
|
||||||
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
||||||
gitlab.com/gomidi/midi/v2 v2.1.7 h1:lIjVXH+bnGG04j/kUVOFILt0BQvBeGz8Kyz0l6aM830=
|
gitlab.com/gomidi/midi/v2 v2.3.16 h1:yufWSENyjnJ4LFQa9BerzUm4E4aLfTyzw5nmnCteO0c=
|
||||||
gitlab.com/gomidi/midi/v2 v2.1.7/go.mod h1:Cj6K9VH5GhYvPgL2JddxHBmZiP3nxKxB5XyTxiXvL9U=
|
gitlab.com/gomidi/midi/v2 v2.3.16/go.mod h1:jDpP4O4skYi+7iVwt6Zyp18bd2M4hkjtMuw2cmgKgfw=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
@ -215,30 +208,21 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
|
|||||||
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
|
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
|
||||||
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
||||||
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
|
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
|
||||||
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
|
|
||||||
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
||||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
|
||||||
golang.org/x/exp/shiny v0.0.0-20250911091902-df9299821621 h1:mNBlTy+K7iiLiyE5Dmn6E/VUdpmHrojPwdKU1v81UJ8=
|
golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
|
||||||
golang.org/x/exp/shiny v0.0.0-20250911091902-df9299821621/go.mod h1:tEo/L/YxpzKrqv+r35dZPMsKHUm5BliNihYkgdxAUX4=
|
|
||||||
golang.org/x/image v0.0.0-20190220214146-31aff87c08e9/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
|
||||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
|
||||||
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||||
golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E=
|
golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E=
|
||||||
golang.org/x/image v0.24.0 h1:AN7zRgVsbvmTfNyqIbbOraYL8mSwcKncEj8ofjgzcMQ=
|
|
||||||
golang.org/x/image v0.24.0/go.mod h1:4b/ITuLfqYq1hqZcjofwctIhi7sZh2WaCjvsBNjjya8=
|
|
||||||
golang.org/x/image v0.31.0 h1:mLChjE2MV6g1S7oqbXC0/UcKijjm5fnJLUYKIYrLESA=
|
golang.org/x/image v0.31.0 h1:mLChjE2MV6g1S7oqbXC0/UcKijjm5fnJLUYKIYrLESA=
|
||||||
golang.org/x/image v0.31.0/go.mod h1:R9ec5Lcp96v9FTF+ajwaH3uGxPH4fKfHHAVbUILxghA=
|
golang.org/x/image v0.31.0/go.mod h1:R9ec5Lcp96v9FTF+ajwaH3uGxPH4fKfHHAVbUILxghA=
|
||||||
golang.org/x/mobile v0.0.0-20190415191353-3e0bab5405d6/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
|
|
||||||
golang.org/x/mobile v0.0.0-20250813145510-f12310a0cfd9 h1:tf0OY/FXi1sPkoNVKP4w+GStqIfqbFUqDoDDm4B+iCg=
|
|
||||||
golang.org/x/mobile v0.0.0-20250813145510-f12310a0cfd9/go.mod h1:wNiuiJfmmgv45sw8EHpNeVWqpxLeEwQ8bkUIhuOYUh8=
|
|
||||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||||
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||||
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||||
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||||
golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=
|
golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=
|
||||||
|
golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
|
||||||
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
|
||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
@ -250,8 +234,9 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
|||||||
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
|
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
|
||||||
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
|
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
|
||||||
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
|
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
|
||||||
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
|
|
||||||
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
|
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
|
||||||
|
golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs=
|
||||||
|
golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8=
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
@ -260,11 +245,9 @@ golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
|||||||
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug=
|
golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug=
|
||||||
|
golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190429190828-d89cdac9e872/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20190626150813-e07cf5db2756/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
@ -281,8 +264,8 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|||||||
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
|
golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k=
|
||||||
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
||||||
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
|
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
@ -302,8 +285,6 @@ golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
|||||||
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||||
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
|
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
|
||||||
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
||||||
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
|
|
||||||
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
|
|
||||||
golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk=
|
golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk=
|
||||||
golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4=
|
golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
@ -313,6 +294,7 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
|||||||
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
|
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
|
||||||
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
|
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
|
||||||
golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg=
|
golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg=
|
||||||
|
golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
@ -321,14 +303,22 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C
|
|||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
modernc.org/cc/v4 v4.21.2 h1:dycHFB/jDc3IyacKipCNSDrjIC0Lm1hyoWOZTRR20Lk=
|
modernc.org/cc/v4 v4.21.2 h1:dycHFB/jDc3IyacKipCNSDrjIC0Lm1hyoWOZTRR20Lk=
|
||||||
|
modernc.org/cc/v4 v4.21.2/go.mod h1:HM7VJTZbUCR3rV8EYBi9wxnJ0ZBRiGE5OeGXNA0IsLQ=
|
||||||
modernc.org/ccgo/v4 v4.17.8 h1:yyWBf2ipA0Y9GGz/MmCmi3EFpKgeS7ICrAFes+suEbs=
|
modernc.org/ccgo/v4 v4.17.8 h1:yyWBf2ipA0Y9GGz/MmCmi3EFpKgeS7ICrAFes+suEbs=
|
||||||
|
modernc.org/ccgo/v4 v4.17.8/go.mod h1:buJnJ6Fn0tyAdP/dqePbrrvLyr6qslFfTbFrCuaYvtA=
|
||||||
modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE=
|
modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE=
|
||||||
|
modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ=
|
||||||
modernc.org/gc/v2 v2.4.1 h1:9cNzOqPyMJBvrUipmynX0ZohMhcxPtMccYgGOJdOiBw=
|
modernc.org/gc/v2 v2.4.1 h1:9cNzOqPyMJBvrUipmynX0ZohMhcxPtMccYgGOJdOiBw=
|
||||||
|
modernc.org/gc/v2 v2.4.1/go.mod h1:wzN5dK1AzVGoH6XOzc3YZ+ey/jPgYHLuVckd62P0GYU=
|
||||||
modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4=
|
modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4=
|
||||||
modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo=
|
modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo=
|
||||||
modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E=
|
modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E=
|
||||||
modernc.org/memory v1.8.0/go.mod h1:XPZ936zp5OMKGWPqbD3JShgd/ZoQ7899TUuQqxY+peU=
|
modernc.org/memory v1.8.0/go.mod h1:XPZ936zp5OMKGWPqbD3JShgd/ZoQ7899TUuQqxY+peU=
|
||||||
modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4=
|
modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4=
|
||||||
|
modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
|
||||||
modernc.org/sortutil v1.2.0 h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc=
|
modernc.org/sortutil v1.2.0 h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc=
|
||||||
|
modernc.org/sortutil v1.2.0/go.mod h1:TKU2s7kJMf1AE84OoiGppNHJwvB753OYfNl2WRb++Ss=
|
||||||
modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA=
|
modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA=
|
||||||
|
modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0=
|
||||||
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
|
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
|
||||||
|
modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
|
||||||
|
|||||||
@ -3,13 +3,13 @@
|
|||||||
package banner
|
package banner
|
||||||
|
|
||||||
// Version ...
|
// Version ...
|
||||||
var Version = "v1.9.9"
|
var Version = "v1.10.0"
|
||||||
|
|
||||||
// Copyright ...
|
// Copyright ...
|
||||||
var Copyright = "© 2020 - 2025 FloatTech"
|
var Copyright = "© 2020 - 2025 FloatTech"
|
||||||
|
|
||||||
// Banner ...
|
// Banner ...
|
||||||
var Banner = "* OneBot + ZeroBot + Golang\n" +
|
var Banner = "* OneBot + ZeroBot + Golang\n" +
|
||||||
"* Version " + Version + " - 2025-09-10 10:40:39 +0800 CST\n" +
|
"* Version " + Version + " - 2025-09-30 23:45:28 +0800 CST\n" +
|
||||||
"* Copyright " + Copyright + ". All Rights Reserved.\n" +
|
"* Copyright " + Copyright + ". All Rights Reserved.\n" +
|
||||||
"* Project: https://github.com/FloatTech/ZeroBot-Plugin"
|
"* Project: https://github.com/FloatTech/ZeroBot-Plugin"
|
||||||
|
|||||||
@ -1,5 +0,0 @@
|
|||||||
//go:build go1.21
|
|
||||||
|
|
||||||
package kanban
|
|
||||||
|
|
||||||
const Error int = "请使用小于1.21版本的Go"
|
|
||||||
12
main.go
12
main.go
@ -1,6 +1,8 @@
|
|||||||
// Package main ZeroBot-Plugin main file
|
// Package main ZeroBot-Plugin main file
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
//go:generate cp main.go abineundo/ref/main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"flag"
|
"flag"
|
||||||
@ -12,9 +14,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/console" // 更改控制台属性
|
_ "github.com/FloatTech/ZeroBot-Plugin/abineundo" // 设置插件优先级
|
||||||
|
_ "github.com/FloatTech/ZeroBot-Plugin/console" // 更改控制台属性
|
||||||
"github.com/FloatTech/ZeroBot-Plugin/kanban" // 打印 banner
|
"github.com/FloatTech/ZeroBot-Plugin/kanban" // 打印 banner
|
||||||
|
|
||||||
// ---------以下插件均可通过前面加 // 注释,注释后停用并不加载插件--------- //
|
// ---------以下插件均可通过前面加 // 注释,注释后停用并不加载插件--------- //
|
||||||
// ----------------------插件优先级按顺序从高到低---------------------- //
|
// ----------------------插件优先级按顺序从高到低---------------------- //
|
||||||
@ -148,11 +150,11 @@ import (
|
|||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wallet" // 钱包
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wallet" // 钱包
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wantquotes" // 据意查句
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wantquotes" // 据意查句
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/warframeapi" // warframeAPI插件
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/warframeapi" // warframeAPI插件
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wenxinvilg" // 百度文心AI画图
|
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wife" // 抽老婆
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wife" // 抽老婆
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wordcount" // 聊天热词
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wordcount" // 聊天热词
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wordle" // 猜单词
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/wordle" // 猜单词
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/ygo" // 游戏王相关插件
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/ygocdb" // 游戏王白鸽API卡查
|
||||||
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/ygotrade" // 游戏王集换社卡价查询
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/ymgal" // 月幕galgame
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/ymgal" // 月幕galgame
|
||||||
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/yujn" // 遇见API
|
_ "github.com/FloatTech/ZeroBot-Plugin/plugin/yujn" // 遇见API
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,6 @@ package nsfw
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/FloatTech/AnimeAPI/nsfw"
|
"github.com/FloatTech/AnimeAPI/nsfw"
|
||||||
"github.com/FloatTech/floatbox/process"
|
|
||||||
ctrl "github.com/FloatTech/zbpctrl"
|
ctrl "github.com/FloatTech/zbpctrl"
|
||||||
"github.com/FloatTech/zbputils/control"
|
"github.com/FloatTech/zbputils/control"
|
||||||
"github.com/FloatTech/zbputils/ctxext"
|
"github.com/FloatTech/zbputils/ctxext"
|
||||||
@ -11,8 +10,6 @@ import (
|
|||||||
"github.com/wdvxdr1123/ZeroBot/message"
|
"github.com/wdvxdr1123/ZeroBot/message"
|
||||||
)
|
)
|
||||||
|
|
||||||
const hso = "https://gchat.qpic.cn/gchatpic_new//--4234EDEC5F147A4C319A41149D7E0EA9/0"
|
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
engine := control.AutoRegister(&ctrl.Options[*zero.Ctx]{
|
engine := control.AutoRegister(&ctrl.Options[*zero.Ctx]{
|
||||||
DisableOnDefault: false,
|
DisableOnDefault: false,
|
||||||
@ -33,23 +30,6 @@ func init() {
|
|||||||
ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID, message.Text(judge(p))))
|
ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID, message.Text(judge(p))))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
control.Register("nsfwauto", &ctrl.Options[*zero.Ctx]{
|
|
||||||
DisableOnDefault: true,
|
|
||||||
Brief: "nsfw图片自动识别",
|
|
||||||
Help: "- 当图片属于非 neutral 类别时自动发送评价",
|
|
||||||
}).OnMessage(zero.HasPicture).SetBlock(false).
|
|
||||||
Handle(func(ctx *zero.Ctx) {
|
|
||||||
url := ctx.State["image_url"].([]string)
|
|
||||||
if len(url) > 0 {
|
|
||||||
process.SleepAbout1sTo2s()
|
|
||||||
p, err := nsfw.Classify(url[0])
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
process.SleepAbout1sTo2s()
|
|
||||||
autojudge(ctx, p)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func judge(p *nsfw.Picture) string {
|
func judge(p *nsfw.Picture) string {
|
||||||
@ -73,31 +53,3 @@ func judge(p *nsfw.Picture) string {
|
|||||||
}
|
}
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
func autojudge(ctx *zero.Ctx, p *nsfw.Picture) {
|
|
||||||
if p.Neutral > 0.3 {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
c := ""
|
|
||||||
if p.Drawings > 0.3 {
|
|
||||||
c = "二次元"
|
|
||||||
} else {
|
|
||||||
c = "三次元"
|
|
||||||
}
|
|
||||||
i := 0
|
|
||||||
if p.Hentai > 0.3 {
|
|
||||||
c += " hentai"
|
|
||||||
i++
|
|
||||||
}
|
|
||||||
if p.Porn > 0.3 {
|
|
||||||
c += " porn"
|
|
||||||
i++
|
|
||||||
}
|
|
||||||
if p.Sexy > 0.3 {
|
|
||||||
c += " hso"
|
|
||||||
i++
|
|
||||||
}
|
|
||||||
if i > 0 {
|
|
||||||
ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID, message.Text(c, "\n"), message.Image(hso)))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
61
plugin/nsfwauto/main.go
Normal file
61
plugin/nsfwauto/main.go
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
// Package nsfwauto 图片合规性审查的自动版本
|
||||||
|
package nsfwauto
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/FloatTech/AnimeAPI/nsfw"
|
||||||
|
"github.com/FloatTech/floatbox/process"
|
||||||
|
ctrl "github.com/FloatTech/zbpctrl"
|
||||||
|
"github.com/FloatTech/zbputils/control"
|
||||||
|
zero "github.com/wdvxdr1123/ZeroBot"
|
||||||
|
"github.com/wdvxdr1123/ZeroBot/message"
|
||||||
|
)
|
||||||
|
|
||||||
|
const hso = "https://gchat.qpic.cn/gchatpic_new//--4234EDEC5F147A4C319A41149D7E0EA9/0"
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
control.AutoRegister(&ctrl.Options[*zero.Ctx]{
|
||||||
|
DisableOnDefault: true,
|
||||||
|
Brief: "nsfw图片自动识别",
|
||||||
|
Help: "- 当图片属于非 neutral 类别时自动发送评价",
|
||||||
|
}).OnMessage(zero.HasPicture).SetBlock(false).
|
||||||
|
Handle(func(ctx *zero.Ctx) {
|
||||||
|
url := ctx.State["image_url"].([]string)
|
||||||
|
if len(url) > 0 {
|
||||||
|
process.SleepAbout1sTo2s()
|
||||||
|
p, err := nsfw.Classify(url[0])
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
process.SleepAbout1sTo2s()
|
||||||
|
autojudge(ctx, p)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func autojudge(ctx *zero.Ctx, p *nsfw.Picture) {
|
||||||
|
if p.Neutral > 0.3 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c := ""
|
||||||
|
if p.Drawings > 0.3 {
|
||||||
|
c = "二次元"
|
||||||
|
} else {
|
||||||
|
c = "三次元"
|
||||||
|
}
|
||||||
|
i := 0
|
||||||
|
if p.Hentai > 0.3 {
|
||||||
|
c += " hentai"
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
if p.Porn > 0.3 {
|
||||||
|
c += " porn"
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
if p.Sexy > 0.3 {
|
||||||
|
c += " hso"
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
if i > 0 {
|
||||||
|
ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID, message.Text(c, "\n"), message.Image(hso)))
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,649 +0,0 @@
|
|||||||
// Package wenxin 百度文心AI
|
|
||||||
package wenxin
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
"sync"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
fcext "github.com/FloatTech/floatbox/ctxext"
|
|
||||||
"github.com/FloatTech/floatbox/process"
|
|
||||||
ctrl "github.com/FloatTech/zbpctrl"
|
|
||||||
"github.com/FloatTech/zbputils/control"
|
|
||||||
"github.com/FloatTech/zbputils/ctxext"
|
|
||||||
zero "github.com/wdvxdr1123/ZeroBot"
|
|
||||||
"github.com/wdvxdr1123/ZeroBot/message"
|
|
||||||
|
|
||||||
// 数据库
|
|
||||||
sql "github.com/FloatTech/sqlite"
|
|
||||||
// 百度文心大模型
|
|
||||||
model "github.com/FloatTech/AnimeAPI/wenxinAI/erniemodle"
|
|
||||||
// 百度文心AI画图API
|
|
||||||
wenxin "github.com/FloatTech/AnimeAPI/wenxinAI/ernievilg"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
serviceErr = "[wenxinvilg]ERROR:\n"
|
|
||||||
modelErr = "[wenxinmodel]ERROR:\n"
|
|
||||||
)
|
|
||||||
|
|
||||||
type keydb struct {
|
|
||||||
sync.RWMutex
|
|
||||||
db sql.Sqlite
|
|
||||||
}
|
|
||||||
|
|
||||||
// db内容
|
|
||||||
type apikey struct {
|
|
||||||
ID int64 // 群号
|
|
||||||
APIKey string // API Key
|
|
||||||
SecretKey string // Secret Key
|
|
||||||
Token string // AccessToken
|
|
||||||
Updatetime int64 // token的有效时间
|
|
||||||
MaxLimit int // 总使用次数
|
|
||||||
DayLimit int // 当天的使用次数
|
|
||||||
Lasttime string // 记录使用的时间,用于刷新使用次数
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
name = "椛椛"
|
|
||||||
limit int
|
|
||||||
vilginfo keydb
|
|
||||||
modelinfo keydb
|
|
||||||
dtype = [...]string{
|
|
||||||
"古风", "油画", "水彩画", "卡通画", "二次元", "浮世绘", "蒸汽波艺术", "low poly", "像素风格", "概念艺术", "未来主义", "赛博朋克", "写实风格", "洛丽塔风格", "巴洛克风格", "超现实主义",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() { // 插件主体
|
|
||||||
go func() {
|
|
||||||
process.GlobalInitMutex.Lock()
|
|
||||||
defer process.GlobalInitMutex.Unlock()
|
|
||||||
name = zero.BotConfig.NickName[0]
|
|
||||||
}()
|
|
||||||
engine := control.AutoRegister(&ctrl.Options[*zero.Ctx]{
|
|
||||||
DisableOnDefault: false,
|
|
||||||
Brief: "文心AI画图",
|
|
||||||
Help: "基于百度文心的免费AI画图插件,\n因为是免费的,图片质量你懂的。\n" +
|
|
||||||
"key申请链接:https://wenxin.baidu.com/moduleApi/key\n" +
|
|
||||||
"key和erniemodel插件的key相同。\n" +
|
|
||||||
"注意:每个apikey每日上限50次,总上限500次请求。次数超过了请自行更新apikey\n" +
|
|
||||||
"- 为[自己/本群/QQ号/群+群号]设置画图key [API Key] [Secret Key]\n" +
|
|
||||||
"例:\n为自己设置画图key 123 456\n为10086设置画图key 123 456\n为群10010设置画图key 789 101\n" +
|
|
||||||
"- [bot名称]画几张[图片描述]的[图片类型][图片尺寸]\n" +
|
|
||||||
"————————————————————\n" +
|
|
||||||
"图片描述指南:\n图片主体,细节词(请用逗号连接)\n官方prompt指南:https://wenxin.baidu.com/wenxin/docs#Ol7ece95m\n" +
|
|
||||||
"————————————————————\n" +
|
|
||||||
"图片类型当前支持:" + strings.Join(dtype[:], "、") +
|
|
||||||
"\n————————————————————\n" +
|
|
||||||
"图片尺寸当前只支持:方图/长图/横图\n" +
|
|
||||||
"————————————————————\n" +
|
|
||||||
"指令示例:\n" +
|
|
||||||
name + "帮我画几张金凤凰,背景绚烂,高饱和,古风,仙境,高清,4K,古风的油画方图",
|
|
||||||
PrivateDataFolder: "wenxinAI",
|
|
||||||
}).ApplySingle(ctxext.NewGroupSingle("正在给别人画图,请不要打扰哦"))
|
|
||||||
getdb := fcext.DoOnceOnSuccess(func(ctx *zero.Ctx) bool {
|
|
||||||
vilginfo.db = sql.New(engine.DataFolder() + "ernieVilg.db")
|
|
||||||
err := vilginfo.db.Open(time.Hour)
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text(serviceErr, err))
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
// 画图
|
|
||||||
engine.OnRegex(`画几张(.*[^的$])的(.*[^\s$])(方图|长图|横图)$`, zero.OnlyToMe, getdb).SetBlock(true).
|
|
||||||
Handle(func(ctx *zero.Ctx) {
|
|
||||||
uid := -ctx.Event.UserID
|
|
||||||
gid := ctx.Event.GroupID
|
|
||||||
// 获取个人和群的key
|
|
||||||
userinfo, err1 := vilginfo.checkGroup(uid, "vilg")
|
|
||||||
info, err2 := vilginfo.checkGroup(gid, "vilg")
|
|
||||||
switch {
|
|
||||||
// 如果是个人请求且报错
|
|
||||||
case gid == 0 && err1 != nil:
|
|
||||||
ctx.SendChain(message.Text(serviceErr, err1))
|
|
||||||
return
|
|
||||||
// 如果群报错而个人没有,就切换成个人的
|
|
||||||
case err2 != nil && err1 == nil:
|
|
||||||
gid = uid
|
|
||||||
info = userinfo
|
|
||||||
// 如果都报错就以群为优先级
|
|
||||||
case err1 != nil && err2 != nil:
|
|
||||||
ctx.SendChain(message.Text(serviceErr, err2))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// 判断使用次数
|
|
||||||
check := false
|
|
||||||
switch {
|
|
||||||
// 群和个人都没有次数了
|
|
||||||
case info.DayLimit == 0 && userinfo.DayLimit == 0:
|
|
||||||
ctx.SendChain(message.Text("我已经画了", limit, "张了!我累了!不画不画,就不画!"))
|
|
||||||
return
|
|
||||||
// 个人还有次数的话
|
|
||||||
case info.DayLimit == 0 && userinfo.DayLimit != 0:
|
|
||||||
check = true
|
|
||||||
}
|
|
||||||
switch {
|
|
||||||
// 群和个人都没有总次数了
|
|
||||||
case info.MaxLimit == 0 && userinfo.MaxLimit == 0:
|
|
||||||
ctx.SendChain(message.Text("设置的key使用次数超过了限额,请更换key。"))
|
|
||||||
return
|
|
||||||
// 个人还有总次数的话
|
|
||||||
case info.MaxLimit == 0 && userinfo.MaxLimit != 0:
|
|
||||||
check = true
|
|
||||||
}
|
|
||||||
if check { // 如果只有个人有次数就切换回个人key
|
|
||||||
gid = uid
|
|
||||||
info = userinfo
|
|
||||||
}
|
|
||||||
// 创建任务
|
|
||||||
keyword := ctx.State["regex_matched"].([]string)[1]
|
|
||||||
if len([]rune(keyword)) >= 64 { // 描述不能超过64个字
|
|
||||||
ctx.SendChain(message.Text("要求太多了啦!减少点!"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
picType := ctx.State["regex_matched"].([]string)[2]
|
|
||||||
chooseSize := ctx.State["regex_matched"].([]string)[3]
|
|
||||||
wtime := 3
|
|
||||||
picSize := "1024*1024"
|
|
||||||
switch chooseSize {
|
|
||||||
case "长图":
|
|
||||||
wtime = 5
|
|
||||||
picSize = "1024*1536"
|
|
||||||
case "横图":
|
|
||||||
wtime = 5
|
|
||||||
picSize = "1536*1024"
|
|
||||||
}
|
|
||||||
taskID, err := wenxin.BuildWork(info.Token, keyword, picType, picSize)
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text(serviceErr, err))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if taskID < 1 {
|
|
||||||
ctx.SendChain(message.Text("要求太复杂力!想不出来..."))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// 开始画图
|
|
||||||
ctx.SendChain(message.Text(zero.BotConfig.NickName[0], "知道了,我可能需要", time.Duration(wtime*10)*time.Second, "左右才能画好哦,请等待..."))
|
|
||||||
i := 0
|
|
||||||
for range time.NewTicker(10 * time.Second).C {
|
|
||||||
// 等待 wtime * 10秒
|
|
||||||
i++
|
|
||||||
if i <= wtime {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
if i > 60{// 十分钟还不出图就放弃
|
|
||||||
ctx.SendChain(message.Text("呜呜呜,要求太复杂力!画不出来..."))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// 获取结果*/
|
|
||||||
picURL, status, err := wenxin.GetPic(info.Token, taskID)
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text(serviceErr, err))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if status == "0" {
|
|
||||||
lastTime := time.Duration(i * 10 * int(time.Second))
|
|
||||||
msg := message.Message{ctxext.FakeSenderForwardNode(ctx, message.Text("我画好了!\n本次绘画用了", lastTime))}
|
|
||||||
for _, imginfo := range picURL {
|
|
||||||
msg = append(msg,
|
|
||||||
ctxext.FakeSenderForwardNode(ctx,
|
|
||||||
message.Image(imginfo.Image)))
|
|
||||||
}
|
|
||||||
if id := ctx.Send(msg).ID(); id == 0 {
|
|
||||||
ctx.SendChain(message.Text("ERROR: 可能被风控了"))
|
|
||||||
}
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
err = vilginfo.update(gid, 1)
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text(serviceErr, err))
|
|
||||||
}
|
|
||||||
process.SleepAbout1sTo2s()
|
|
||||||
ctx.SendChain(message.Text("累死了,今天我最多只能画", info.DayLimit-1, "张图哦"))
|
|
||||||
})
|
|
||||||
engine.OnRegex(`^为(群)?(自己|本群|\d+)设置画图key\s(.*[^\s$])\s(.+)$`, getdb).SetBlock(true).
|
|
||||||
Handle(func(ctx *zero.Ctx) {
|
|
||||||
mode := ctx.State["regex_matched"].([]string)[1]
|
|
||||||
user := ctx.State["regex_matched"].([]string)[2]
|
|
||||||
aKey := ctx.State["regex_matched"].([]string)[3]
|
|
||||||
sKey := ctx.State["regex_matched"].([]string)[4]
|
|
||||||
dbID := -ctx.Event.UserID // 默认给自己
|
|
||||||
switch {
|
|
||||||
case mode != "": // 指定群的话
|
|
||||||
gid, err := strconv.ParseInt(user, 10, 64)
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text(serviceErr, err))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
dbID = gid
|
|
||||||
case user == "本群": // 用于本群
|
|
||||||
gid := ctx.Event.GroupID
|
|
||||||
if gid == 0 {
|
|
||||||
ctx.SendChain(message.Text(serviceErr, "请指定群聊,或者使用指令;\n为群xxx设置AI画图key xxx xxx"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
dbID = gid
|
|
||||||
case user != "自己": // 给别人开key
|
|
||||||
uid, err := strconv.ParseInt(user, 10, 64)
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text(serviceErr, err))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
dbID = -uid
|
|
||||||
}
|
|
||||||
err := vilginfo.insert(dbID, "vilg", aKey, sKey)
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text(serviceErr, err))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ctx.SendChain(message.Text("成功!"))
|
|
||||||
})
|
|
||||||
/*********************************************************/
|
|
||||||
en := control.Register("wenxinmodel", &ctrl.Options[*zero.Ctx]{
|
|
||||||
DisableOnDefault: false,
|
|
||||||
Brief: "文心AI文本处理",
|
|
||||||
Help: "基于百度文心AI的API文本处理\n" +
|
|
||||||
"key申请链接:https://wenxin.baidu.com/moduleApi/key\n" +
|
|
||||||
"key和ernievilg插件的key相同。\n" +
|
|
||||||
"注意:每个apikey每日上限200条,总上限2000条。次数超过了请自行更新apikey\n" +
|
|
||||||
"- 为[自己/本群/QQ号/群+群号]设置文心key [API Key] [Secret Key]\n" +
|
|
||||||
"例:\n为自己设置文心key 123 456\n为10086设置文心key 123 456\n为群10010设置文心key 789 101\n" +
|
|
||||||
"————————————————————\n" +
|
|
||||||
"- 文心作文 (x字的)[作文题目]\n" +
|
|
||||||
"————————————————————\n" +
|
|
||||||
"- 文心提案 (x字的)[文案标题]\n" +
|
|
||||||
"————————————————————\n" +
|
|
||||||
"- 文心摘要 (x字的)[文章内容]\n" +
|
|
||||||
"————————————————————\n" +
|
|
||||||
"- 文心小说 (x字的)[小说上文]\n" +
|
|
||||||
"————————————————————\n" +
|
|
||||||
"- 文心对联 [上联]\n" +
|
|
||||||
"————————————————————\n" +
|
|
||||||
"- 文心问答 [问题]\n" +
|
|
||||||
"————————————————————\n" +
|
|
||||||
"- 文心补全 [带“_”的填空题]\n" +
|
|
||||||
"————————————————————\n" +
|
|
||||||
"- 文心自定义 [prompt]\n\n" +
|
|
||||||
"prompt: [问题描述] [问题类型]:[题目] [解答类型]:[解题必带内容]\n" +
|
|
||||||
"指令示例:\n" +
|
|
||||||
"文心自定义 请写出下面这道题的解题过程。\\n题目:养殖场养鸭376只,养鸡的只数比鸭多258只,这个养殖场一共养鸭和鸡多少只?\\n解:\n\n" +
|
|
||||||
"文心自定义 1+1=?\n" +
|
|
||||||
"文心自定义 歌曲名:大风车转啊转\\n歌词:",
|
|
||||||
}).ApplySingle(ctxext.NewGroupSingle("正在给别人编辑,请不要打扰哦"))
|
|
||||||
getmodeldb := fcext.DoOnceOnSuccess(func(ctx *zero.Ctx) bool {
|
|
||||||
modelinfo.db = sql.New(engine.DataFolder() + "ernieModel.db")
|
|
||||||
err := modelinfo.db.Open(time.Hour)
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text(modelErr, err))
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
en.OnRegex(`^为(群)?(自己|本群|\d+)设置文心key\s(.*[^\s$])\s(.+)$`, getmodeldb).SetBlock(true).
|
|
||||||
Handle(func(ctx *zero.Ctx) {
|
|
||||||
mode := ctx.State["regex_matched"].([]string)[1]
|
|
||||||
user := ctx.State["regex_matched"].([]string)[2]
|
|
||||||
aKey := ctx.State["regex_matched"].([]string)[3]
|
|
||||||
sKey := ctx.State["regex_matched"].([]string)[4]
|
|
||||||
dbID := -ctx.Event.UserID // 默认给自己
|
|
||||||
switch {
|
|
||||||
case mode != "": // 指定群的话
|
|
||||||
gid, err := strconv.ParseInt(user, 10, 64)
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text(modelErr, err))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
dbID = gid
|
|
||||||
case user == "本群": // 用于本群
|
|
||||||
gid := ctx.Event.GroupID
|
|
||||||
if gid == 0 {
|
|
||||||
ctx.SendChain(message.Text(modelErr, "请指定群聊,或者使用指令;\n为群xxx设置AI画图key xxx xxx"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
dbID = gid
|
|
||||||
case user != "自己": // 给别人开key
|
|
||||||
uid, err := strconv.ParseInt(user, 10, 64)
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text(modelErr, err))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
dbID = -uid
|
|
||||||
}
|
|
||||||
err := modelinfo.insert(dbID, "model", aKey, sKey)
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text(modelErr, err))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ctx.SendChain(message.Text("成功!"))
|
|
||||||
})
|
|
||||||
|
|
||||||
var erniemodel = map[string]int{
|
|
||||||
"作文": 1,
|
|
||||||
"提案": 2,
|
|
||||||
"摘要": 3,
|
|
||||||
"对联": 4,
|
|
||||||
"问答": 5,
|
|
||||||
"小说": 6,
|
|
||||||
"补全": 7,
|
|
||||||
"自定义": 8}
|
|
||||||
var erniePrompt = map[string]string{
|
|
||||||
"作文": "zuowen",
|
|
||||||
"提案": "adtext",
|
|
||||||
"摘要": "Summarization",
|
|
||||||
"对联": "couplet",
|
|
||||||
"问答": "Dialogue",
|
|
||||||
"小说": "novel",
|
|
||||||
"补全": "cloze"}
|
|
||||||
en.OnRegex(`^文心(作文|提案|摘要|小说)\s?((\d+)字的)?(.*)$`, getmodeldb).SetBlock(true).
|
|
||||||
Handle(func(ctx *zero.Ctx) {
|
|
||||||
uid := -ctx.Event.UserID
|
|
||||||
gid := ctx.Event.GroupID
|
|
||||||
// 获取个人和群的key
|
|
||||||
userinfo, err1 := modelinfo.checkGroup(uid, "model")
|
|
||||||
info, err2 := modelinfo.checkGroup(gid, "model")
|
|
||||||
switch {
|
|
||||||
// 如果是个人请求且报错
|
|
||||||
case gid == 0 && err1 != nil:
|
|
||||||
ctx.SendChain(message.Text(modelErr, err1))
|
|
||||||
return
|
|
||||||
// 如果群报错而个人没有,就切换成个人的
|
|
||||||
case err2 != nil && err1 == nil:
|
|
||||||
gid = uid
|
|
||||||
info = userinfo
|
|
||||||
// 如果都报错就以群为优先级
|
|
||||||
case err1 != nil && err2 != nil:
|
|
||||||
ctx.SendChain(message.Text(modelErr, err2))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// 判断使用次数
|
|
||||||
check := false
|
|
||||||
switch {
|
|
||||||
// 群和个人都没有次数了
|
|
||||||
case info.DayLimit == 0 && userinfo.DayLimit == 0:
|
|
||||||
ctx.SendChain(message.Text("今日请求次数已到200次了,明天在玩吧"))
|
|
||||||
return
|
|
||||||
// 个人还有次数的话
|
|
||||||
case info.DayLimit == 0 && userinfo.DayLimit != 0:
|
|
||||||
check = true
|
|
||||||
}
|
|
||||||
switch {
|
|
||||||
// 群和个人都没有总次数了
|
|
||||||
case info.MaxLimit == 0 && userinfo.MaxLimit == 0:
|
|
||||||
ctx.SendChain(message.Text("设置的key使用次数超过了限额,请更换key。"))
|
|
||||||
return
|
|
||||||
// 个人还有总次数的话
|
|
||||||
case info.MaxLimit == 0 && userinfo.MaxLimit != 0:
|
|
||||||
check = true
|
|
||||||
}
|
|
||||||
if check { // 如果只有个人有次数就切换回个人key
|
|
||||||
gid = uid
|
|
||||||
info = userinfo
|
|
||||||
}
|
|
||||||
// 调用API
|
|
||||||
modelStr := ctx.State["regex_matched"].([]string)[1]
|
|
||||||
mun := ctx.State["regex_matched"].([]string)[3]
|
|
||||||
minlen := 1
|
|
||||||
maxlen := 128
|
|
||||||
if mun != "" {
|
|
||||||
maxNum, err := strconv.Atoi(mun)
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text(modelErr, err))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
minlen = maxNum
|
|
||||||
if maxNum > 128 {
|
|
||||||
maxlen = maxNum
|
|
||||||
}
|
|
||||||
}
|
|
||||||
keyword := ctx.State["regex_matched"].([]string)[4]
|
|
||||||
if len([]rune(keyword)) >= 1000 { // 描述不能超过1000
|
|
||||||
ctx.SendChain(message.Text("是你写作文还是我写?减少点!"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
result, err := model.GetResult(info.Token, erniemodel[modelStr], keyword, minlen, maxlen, erniePrompt[modelStr])
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text(modelErr, err))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if id := ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID, message.Text(keyword, ",", result))); id.ID() == 0 {
|
|
||||||
ctx.SendChain(message.Text("ERROR: 请求超时!"))
|
|
||||||
}
|
|
||||||
err = modelinfo.update(gid, 1)
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text(modelErr, err))
|
|
||||||
}
|
|
||||||
})
|
|
||||||
en.OnRegex(`^文心(对联|问答|补全|自定义)\s?(.*)$`, getmodeldb).SetBlock(true).
|
|
||||||
Handle(func(ctx *zero.Ctx) {
|
|
||||||
uid := -ctx.Event.UserID
|
|
||||||
gid := ctx.Event.GroupID
|
|
||||||
// 获取个人和群的key
|
|
||||||
userinfo, err1 := modelinfo.checkGroup(uid, "model")
|
|
||||||
info, err2 := modelinfo.checkGroup(gid, "model")
|
|
||||||
switch {
|
|
||||||
// 如果是个人请求且报错
|
|
||||||
case gid == 0 && err1 != nil:
|
|
||||||
ctx.SendChain(message.Text(modelErr, err1))
|
|
||||||
return
|
|
||||||
// 如果群报错而个人没有,就切换成个人的
|
|
||||||
case err2 != nil && err1 == nil:
|
|
||||||
gid = uid
|
|
||||||
info = userinfo
|
|
||||||
// 如果都报错就以群为优先级
|
|
||||||
case err1 != nil && err2 != nil:
|
|
||||||
ctx.SendChain(message.Text(modelErr, err2))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// 判断使用次数
|
|
||||||
check := false
|
|
||||||
switch {
|
|
||||||
// 群和个人都没有次数了
|
|
||||||
case info.DayLimit == 0 && userinfo.DayLimit == 0:
|
|
||||||
ctx.SendChain(message.Text("今日请求次数已到200次了,明天在玩吧"))
|
|
||||||
return
|
|
||||||
// 个人还有次数的话
|
|
||||||
case info.DayLimit == 0 && userinfo.DayLimit != 0:
|
|
||||||
check = true
|
|
||||||
}
|
|
||||||
switch {
|
|
||||||
// 群和个人都没有总次数了
|
|
||||||
case info.MaxLimit == 0 && userinfo.MaxLimit == 0:
|
|
||||||
ctx.SendChain(message.Text("设置的key使用次数超过了限额,请更换key。"))
|
|
||||||
return
|
|
||||||
// 个人还有总次数的话
|
|
||||||
case info.MaxLimit == 0 && userinfo.MaxLimit != 0:
|
|
||||||
check = true
|
|
||||||
}
|
|
||||||
if check { // 如果只有个人有次数就切换回个人key
|
|
||||||
gid = uid
|
|
||||||
info = userinfo
|
|
||||||
}
|
|
||||||
// 创建任务
|
|
||||||
modelStr := ctx.State["regex_matched"].([]string)[1]
|
|
||||||
keyword := ctx.State["regex_matched"].([]string)[2]
|
|
||||||
if len([]rune(keyword)) >= 1000 { // 描述不能超过1000
|
|
||||||
ctx.SendChain(message.Text("你在写作文吗?减少点!"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
result, err := model.GetResult(info.Token, erniemodel[modelStr], keyword, 1, 128, erniePrompt[modelStr])
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text(modelErr, err))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if id := ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID, message.Text(result))); id.ID() == 0 {
|
|
||||||
ctx.SendChain(message.Text("ERROR: 请求超时!"))
|
|
||||||
}
|
|
||||||
err = modelinfo.update(gid, 1)
|
|
||||||
if err != nil {
|
|
||||||
ctx.SendChain(message.Text(modelErr, err))
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 登记group的key
|
|
||||||
func (sql *keydb) insert(gid int64, model, akey, skey string) error {
|
|
||||||
sql.Lock()
|
|
||||||
defer sql.Unlock()
|
|
||||||
// 给db文件创建表格(没有才创建),表格名称groupinfo,表格结构apikey
|
|
||||||
err := sql.db.Create("groupinfo", &apikey{})
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
// 获取group信息
|
|
||||||
groupinfo := apikey{} // 用于暂存数据
|
|
||||||
err = sql.db.Find("groupinfo", &groupinfo, "WHERE ID = ?", gid)
|
|
||||||
if err != nil {
|
|
||||||
// 如果该group没有注册过
|
|
||||||
err = sql.db.Find("groupinfo", &groupinfo, "WHERE APIKey = ? and SecretKey = ?", akey, skey)
|
|
||||||
if err == nil {
|
|
||||||
// 如果key存在过将当前的数据迁移过去
|
|
||||||
groupinfo.ID = gid
|
|
||||||
} else {
|
|
||||||
groupinfo = apikey{
|
|
||||||
ID: gid,
|
|
||||||
APIKey: akey,
|
|
||||||
SecretKey: skey,
|
|
||||||
}
|
|
||||||
switch model {
|
|
||||||
case "vilg":
|
|
||||||
groupinfo.MaxLimit = 500
|
|
||||||
case "model":
|
|
||||||
groupinfo.MaxLimit = 2000
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return sql.db.Insert("groupinfo", &groupinfo)
|
|
||||||
}
|
|
||||||
// 进行更新
|
|
||||||
groupinfo.APIKey = akey
|
|
||||||
groupinfo.SecretKey = skey
|
|
||||||
groupinfo.Token = ""
|
|
||||||
groupinfo.Updatetime = 0
|
|
||||||
switch model {
|
|
||||||
case "vilg":
|
|
||||||
groupinfo.MaxLimit = 500
|
|
||||||
case "model":
|
|
||||||
groupinfo.MaxLimit = 2000
|
|
||||||
}
|
|
||||||
return sql.db.Insert("groupinfo", &groupinfo)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取group信息
|
|
||||||
func (sql *keydb) checkGroup(gid int64, model string) (groupinfo apikey, err error) {
|
|
||||||
sql.Lock()
|
|
||||||
defer sql.Unlock()
|
|
||||||
// 给db文件创建表格(没有才创建),表格名称groupinfo,表格结构apikey
|
|
||||||
err = sql.db.Create("groupinfo", &apikey{})
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
switch model {
|
|
||||||
case "vilg":
|
|
||||||
limit = 50
|
|
||||||
model = "画图"
|
|
||||||
case "model":
|
|
||||||
limit = 200
|
|
||||||
model = "文心"
|
|
||||||
}
|
|
||||||
// 先判断该群是否已经设置过key了
|
|
||||||
if ok := sql.db.CanFind("groupinfo", "WHERE ID = ?", gid); !ok {
|
|
||||||
if gid > 0 {
|
|
||||||
err = errors.New("该群没有设置过apikey,请前往https://wenxin.baidu.com/moduleApi/key获取key值后,发送指令:\n为本群设置" + model + "key [API Key] [Secret Key]\n或\n为自己设置" + model + "key [API Key] [Secret Key]")
|
|
||||||
} else {
|
|
||||||
err = errors.New("你没有设置过apikey,请前往https://wenxin.baidu.com/moduleApi/key获取key值后,发送指令:\n为自己设置" + model + "key [API Key] [Secret Key]")
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// 获取group信息
|
|
||||||
err = sql.db.Find("groupinfo", &groupinfo, "WHERE ID = ?", gid)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// 如果隔天使用刷新次数
|
|
||||||
if time.Now().Format("2006/01/02") != groupinfo.Lasttime {
|
|
||||||
groupinfo.DayLimit = limit
|
|
||||||
groupinfo.Lasttime = time.Now().Format("2006/01/02")
|
|
||||||
}
|
|
||||||
if err = sql.db.Insert("groupinfo", &groupinfo); err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// 如果token有效期过期
|
|
||||||
if time.Since(time.Unix(groupinfo.Updatetime, 0)).Hours() > 24 || groupinfo.Token == "" {
|
|
||||||
token, err1 := wenxin.GetToken(groupinfo.APIKey, groupinfo.SecretKey)
|
|
||||||
if err1 != nil {
|
|
||||||
err = err1
|
|
||||||
return
|
|
||||||
}
|
|
||||||
groupinfo.Token = token
|
|
||||||
groupinfo.Updatetime = time.Now().Unix()
|
|
||||||
err = sql.db.Insert("groupinfo", &groupinfo)
|
|
||||||
if err == nil {
|
|
||||||
// 更新相同key的他人次数
|
|
||||||
otherinfo := apikey{}
|
|
||||||
var groups []int64 // 将相同的key的ID暂存
|
|
||||||
// 无视没有找到相同的key的err
|
|
||||||
_ = sql.db.FindFor("groupinfo", &otherinfo, "WHERE ID <> ? AND APIKey = ? AND SecretKey = ?", func() error {
|
|
||||||
groups = append(groups, otherinfo.ID)
|
|
||||||
return nil
|
|
||||||
}, gid, groupinfo.APIKey, groupinfo.SecretKey)
|
|
||||||
if len(groups) != 0 { // 如果有相同的key就更新
|
|
||||||
for _, group := range groups {
|
|
||||||
err = sql.db.Find("groupinfo", &otherinfo, "WHERE ID = ?", group)
|
|
||||||
if err == nil {
|
|
||||||
otherinfo.Token = groupinfo.Token
|
|
||||||
otherinfo.Updatetime = groupinfo.Updatetime
|
|
||||||
err = sql.db.Insert("groupinfo", &otherinfo)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 记录次数(-sub)
|
|
||||||
func (sql *keydb) update(gid int64, sub int) error {
|
|
||||||
sql.Lock()
|
|
||||||
defer sql.Unlock()
|
|
||||||
// 给db文件创建表格(没有才创建),表格名称groupinfo,表格结构apikey
|
|
||||||
err := sql.db.Create("groupinfo", &apikey{})
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
groupinfo := apikey{} // 用于暂存数据
|
|
||||||
// 获取group信息
|
|
||||||
err = sql.db.Find("groupinfo", &groupinfo, "WHERE ID = ?", gid)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
groupinfo.MaxLimit -= sub
|
|
||||||
groupinfo.DayLimit -= sub
|
|
||||||
err = sql.db.Insert("groupinfo", &groupinfo)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
// 更新相同key的他人次数
|
|
||||||
otherinfo := apikey{}
|
|
||||||
var groups []int64 // 将相同的key的ID暂存
|
|
||||||
// 无视没有找到相同的key的err
|
|
||||||
_ = sql.db.FindFor("groupinfo", &otherinfo, "WHERE ID <> ? AND APIKey = ? AND SecretKey = ?", func() error {
|
|
||||||
groups = append(groups, otherinfo.ID)
|
|
||||||
return nil
|
|
||||||
}, gid, groupinfo.APIKey, groupinfo.SecretKey)
|
|
||||||
if len(groups) != 0 { // 如果有相同的key就更新
|
|
||||||
for _, group := range groups {
|
|
||||||
err = sql.db.Find("groupinfo", &otherinfo, "WHERE ID = ?", group)
|
|
||||||
if err == nil {
|
|
||||||
otherinfo.MaxLimit = groupinfo.MaxLimit
|
|
||||||
otherinfo.DayLimit = groupinfo.DayLimit
|
|
||||||
otherinfo.Lasttime = groupinfo.Lasttime
|
|
||||||
err = sql.db.Insert("groupinfo", &otherinfo)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
@ -21,7 +21,7 @@ import (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
sizeList = []int{0, 3, 5, 8}
|
sizeList = []int{0, 3, 5, 8}
|
||||||
enguess = control.Register("wifegame", &ctrl.Options[*zero.Ctx]{
|
enguess = control.AutoRegister(&ctrl.Options[*zero.Ctx]{
|
||||||
DisableOnDefault: false,
|
DisableOnDefault: false,
|
||||||
Help: "- 猜老婆",
|
Help: "- 猜老婆",
|
||||||
Brief: "从老婆库猜老婆",
|
Brief: "从老婆库猜老婆",
|
||||||
|
|||||||
@ -1,14 +1,13 @@
|
|||||||
// Package ygo 一些关于ygo的插件
|
// Package ygocdb 游戏王卡查插件
|
||||||
package ygo
|
package ygocdb
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"encoding/json"
|
|
||||||
|
|
||||||
"github.com/FloatTech/floatbox/web"
|
"github.com/FloatTech/floatbox/web"
|
||||||
ctrl "github.com/FloatTech/zbpctrl"
|
ctrl "github.com/FloatTech/zbpctrl"
|
||||||
control "github.com/FloatTech/zbputils/control"
|
control "github.com/FloatTech/zbputils/control"
|
||||||
@ -39,7 +38,7 @@ type searchResult struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
en := control.Register("ygocdb", &ctrl.Options[*zero.Ctx]{
|
en := control.AutoRegister(&ctrl.Options[*zero.Ctx]{
|
||||||
DisableOnDefault: false,
|
DisableOnDefault: false,
|
||||||
Brief: "游戏王百鸽API", // 本插件基于游戏王百鸽API"https://www.ygo-sem.cn/"
|
Brief: "游戏王百鸽API", // 本插件基于游戏王百鸽API"https://www.ygo-sem.cn/"
|
||||||
Help: "- /ydp [xxx]\n" +
|
Help: "- /ydp [xxx]\n" +
|
||||||
@ -1,5 +1,5 @@
|
|||||||
// Package ygo 一些关于ygo的插件
|
// Package ygotrade 游戏王卡价查询插件
|
||||||
package ygo
|
package ygotrade
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
@ -46,7 +46,7 @@ type tradeInfo struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
engine := control.Register("ygotrade", &ctrl.Options[*zero.Ctx]{
|
engine := control.AutoRegister(&ctrl.Options[*zero.Ctx]{
|
||||||
DisableOnDefault: false,
|
DisableOnDefault: false,
|
||||||
Brief: "游戏王卡价查询", // 本插件基于集换社API
|
Brief: "游戏王卡价查询", // 本插件基于集换社API
|
||||||
Help: "- 查卡价 [卡名]\n- 查卡价 [卡名] -r [稀有度 稀有度 ...]\n- 查卡店 [卡名]\n- 查卡店 [卡名] -r [稀有度]",
|
Help: "- 查卡价 [卡名]\n- 查卡价 [卡名] -r [稀有度 稀有度 ...]\n- 查卡店 [卡名]\n- 查卡店 [卡名] -r [稀有度]",
|
||||||
@ -12,7 +12,7 @@
|
|||||||
"0409": {
|
"0409": {
|
||||||
"identity": {
|
"identity": {
|
||||||
"name": "ZeroBot-Plugin",
|
"name": "ZeroBot-Plugin",
|
||||||
"version": "1.9.9.2250"
|
"version": "1.10.0.2279"
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"minimum-os": "vista",
|
"minimum-os": "vista",
|
||||||
@ -36,23 +36,23 @@
|
|||||||
"#1": {
|
"#1": {
|
||||||
"0000": {
|
"0000": {
|
||||||
"fixed": {
|
"fixed": {
|
||||||
"file_version": "1.9.9.2250",
|
"file_version": "1.10.0.2279",
|
||||||
"product_version": "v1.9.9",
|
"product_version": "v1.10.0",
|
||||||
"timestamp": "2025-09-10T10:40:54+08:00"
|
"timestamp": "2025-09-30T23:54:09+08:00"
|
||||||
},
|
},
|
||||||
"info": {
|
"info": {
|
||||||
"0409": {
|
"0409": {
|
||||||
"Comments": "OneBot plugins based on ZeroBot",
|
"Comments": "OneBot plugins based on ZeroBot",
|
||||||
"CompanyName": "FloatTech",
|
"CompanyName": "FloatTech",
|
||||||
"FileDescription": "https://github.com/FloatTech/ZeroBot-Plugin",
|
"FileDescription": "https://github.com/FloatTech/ZeroBot-Plugin",
|
||||||
"FileVersion": "1.9.9.2250",
|
"FileVersion": "1.10.0.2279",
|
||||||
"InternalName": "",
|
"InternalName": "",
|
||||||
"LegalCopyright": "© 2020 - 2025 FloatTech. All Rights Reserved.",
|
"LegalCopyright": "© 2020 - 2025 FloatTech. All Rights Reserved.",
|
||||||
"LegalTrademarks": "",
|
"LegalTrademarks": "",
|
||||||
"OriginalFilename": "ZBP.EXE",
|
"OriginalFilename": "ZBP.EXE",
|
||||||
"PrivateBuild": "",
|
"PrivateBuild": "",
|
||||||
"ProductName": "ZeroBot-Plugin",
|
"ProductName": "ZeroBot-Plugin",
|
||||||
"ProductVersion": "v1.9.9",
|
"ProductVersion": "v1.10.0",
|
||||||
"SpecialBuild": ""
|
"SpecialBuild": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user