Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

更新ZeroBot至git版本,升级go到1.20 #33

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion basic/help/single.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"github.com/wdvxdr1123/ZeroBot/message"
)

func formSingleHelpMsg(cmd string, isSuper, isPrimary bool, priority int, blackKeys map[string]struct{}) message.MessageSegment {
func formSingleHelpMsg(cmd string, isSuper, isPrimary bool, priority int, blackKeys map[string]struct{}) message.Segment {
plugins := manager.GetAllPluginConditions()
// 寻找插件
var selected *manager.PluginCondition
Expand Down
2 changes: 1 addition & 1 deletion basic/help/summary.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import (
const defaultClassify = "一般功能"
const passiveClassify = "被动"

func formSummaryHelpMsg(isSuper, isPrimary bool, priority int, blackKeys map[string]struct{}) message.MessageSegment {
func formSummaryHelpMsg(isSuper, isPrimary bool, priority int, blackKeys map[string]struct{}) message.Segment {
plugins := manager.GetAllPluginConditions()
// 获取所有插件信息
var helps helpSummaryMap = make(map[string]*blockInfo)
Expand Down
2 changes: 1 addition & 1 deletion basic/invite/super_deal.go
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ func formAllGroupRequest(has map[int64]string, ctx *zero.Ctx) (map[int64]string,
return data, least
}

func formResponse(info string) message.MessageSegment {
func formResponse(info string) message.Segment {
w, h := images.MeasureStringDefault(info, 16, 1.3)
img := images.NewImageCtxWithBGRGBA255(int(w)+20, int(h), 255, 255, 255, 255)
err := img.PasteStringDefault(info, 16, 1.3, 10, 0, w)
Expand Down
2 changes: 1 addition & 1 deletion basic/sc/msg.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ func (s signInfo) String() string {
RealCoin(s.orgCoin+s.addCoin), RealCoin(s.addCoin), Unit())
}

func genRankMessage(ctx *zero.Ctx, users []dao.UserOwn, key string) (msg message.MessageSegment, err error) {
func genRankMessage(ctx *zero.Ctx, users []dao.UserOwn, key string) (msg message.Segment, err error) {
var values []images.UserValue
if key == "favor" { // 好感度
for _, user := range users {
Expand Down
16 changes: 13 additions & 3 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"github.com/spf13/viper"
zero "github.com/wdvxdr1123/ZeroBot"
"github.com/wdvxdr1123/ZeroBot/driver"
"strconv"

// 可选插件,若要启用,去除注释即可
// _ "github.com/RicheyJang/PaimengBot/plugins/HiOSU"
Expand Down Expand Up @@ -64,12 +65,21 @@ func main() {
}
// 启动服务
log.Infof("读取超级管理员列表:%v", viper.GetStringSlice("superuser"))
zero.RunAndBlock(zero.Config{
config := zero.Config{
NickName: []string{viper.GetString("nickname")},
CommandPrefix: "",
SuperUsers: viper.GetStringSlice("superuser"),
CommandPrefix: viper.GetString("command_prefix"),
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里添加了一个新的配置项command_prefix

Driver: []zero.Driver{
driver.NewWebSocketClient(viper.GetString("server.address"), viper.GetString("server.token")),
},
}
for _, sid := range viper.GetStringSlice("superuser") {
id, err := strconv.ParseInt(sid, 10, 64)
if err != nil {
panic(err)
}
config.SuperUsers = append(config.SuperUsers, id)
}
zero.RunAndBlock(&config, func() {
log.Infoln(zero.BotConfig.NickName[0], "启动成功~")
})
}
20 changes: 11 additions & 9 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/RicheyJang/PaimengBot

go 1.17
go 1.20

require (
github.com/PuerkitoBio/goquery v1.8.0
Expand All @@ -13,20 +13,23 @@ require (
github.com/robfig/cron/v3 v3.0.1
github.com/satori/go.uuid v1.2.0
github.com/shirou/gopsutil/v3 v3.21.10
github.com/sirupsen/logrus v1.8.1
github.com/sirupsen/logrus v1.9.3
github.com/spf13/cast v1.4.1
github.com/spf13/pflag v1.0.5
github.com/spf13/viper v1.10.1
github.com/syndtr/goleveldb v1.0.0
github.com/tidwall/gjson v1.11.0
github.com/tidwall/gjson v1.17.3
github.com/wcharczuk/go-chart/v2 v2.1.0
github.com/wdvxdr1123/ZeroBot v1.4.1
github.com/wdvxdr1123/ZeroBot v1.8.1-0.20250128033423-46f06a25cb99
golang.org/x/net v0.21.0
gorm.io/driver/mysql v1.3.2
gorm.io/driver/postgres v1.3.1
gorm.io/gorm v1.23.1
)

require (
github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562 // indirect
github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5 // indirect
github.com/StackExchange/wmi v1.2.1 // indirect
github.com/andybalholm/cascadia v1.3.1 // indirect
github.com/chromedp/cdproto v0.0.0-20211126220118-81fa0469ad77 // indirect
Expand All @@ -38,8 +41,8 @@ require (
github.com/gobwas/pool v0.2.1 // indirect
github.com/gobwas/ws v1.1.0 // indirect
github.com/golang/snappy v0.0.3 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/gorilla/websocket v1.4.2 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
github.com/jackc/chunkreader/v2 v2.0.1 // indirect
github.com/jackc/pgconn v1.10.1 // indirect
Expand Down Expand Up @@ -70,11 +73,10 @@ require (
github.com/tidwall/pretty v1.2.0 // indirect
github.com/tklauser/go-sysconf v0.3.9 // indirect
github.com/tklauser/numcpus v0.3.0 // indirect
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect
golang.org/x/crypto v0.32.0 // indirect
golang.org/x/image v0.0.0-20200927104501-e162460cd6b5 // indirect
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8 // indirect
golang.org/x/sys v0.0.0-20211210111614-af8b64212486 // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/sys v0.29.0 // indirect
golang.org/x/text v0.21.0 // indirect
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
gopkg.in/ini.v1 v1.66.2 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
Expand Down
2 changes: 1 addition & 1 deletion manager/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ func NewPluginManager() *PluginManager {
}
// 添加前置Pre Hook
m.engine.UsePreHandler(rules.SkipGuildMessage) // TODO 暂时忽略所有频道消息,原因:ZeroBot无法正常发送频道消息
m.engine.UsePreHandler(m.preHandlerWithHook)
m.engine.UseMidHandler(m.preHandlerWithHook)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里ZeroBot更改了PreHandler的定义,PreHandler会在Rule匹配之前被调用
而MidHandler会在Rule之后被调用,符合原本的效果

// 添加后置Post Hook
m.engine.UsePostHandler(m.postHandlerWithHook)
return m
Expand Down
12 changes: 6 additions & 6 deletions plugins/HiOSU/MyInfo.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,17 +97,17 @@ func GetMyInfo(API string) (User, error) {
return users[0], nil
}

func ToImageUser(user User, Model string) (message.MessageSegment, error) { //生成图片
func ToImageUser(user User, Model string) (message.Segment, error) { //生成图片
// 读取Logo
LogoImage, err := manager.DecodeStaticImage("HiOSU/Logo/Logo_96x97.png")
if err != nil {
return message.MessageSegment{}, err
return message.Segment{}, err
}

//读取各种模式的图标
ModelImage, err := getModelImage(Model)
if err != nil {
return message.MessageSegment{}, err
return message.Segment{}, err
}

width := float64(465)
Expand All @@ -117,20 +117,20 @@ func ToImageUser(user User, Model string) (message.MessageSegment, error) { //
// 标题栏
err = dc.UseDefaultFont(20)
if err != nil {
return message.MessageSegment{}, err
return message.Segment{}, err
}
dc.SetRGB(1, 1, 1) // 设置画笔颜色为白
dc.DrawImage(LogoImage, 10, 10) //贴OSU图标

dc.DrawString("Country :"+user.Country, 130, 40)
err = dc.UseDefaultFont(40) //字体设置大一些
if err != nil {
return message.MessageSegment{}, err
return message.Segment{}, err
}
dc.DrawString(user.UserName, 130, 80) //显示UserName
err = dc.UseDefaultFont(20)
if err != nil {
return message.MessageSegment{}, err
return message.Segment{}, err
}
dc.DrawString("Join Date: "+user.JoinDate, 130, 100)
dc.DrawString("-----------------------------------------------", 0, 123)
Expand Down
4 changes: 2 additions & 2 deletions plugins/HiOSU/RecentPlay.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,11 @@ func GetRecentPlay(API string) (Recent, error) {
return recents[0], nil
}

func ToImageRecent(recent Recent, Model string, OsuId string) (message.MessageSegment, error) { //生成图片
func ToImageRecent(recent Recent, Model string, OsuId string) (message.Segment, error) { //生成图片

ModelImage, err := getModelImage(Model)
if err != nil {
return message.MessageSegment{}, err
return message.Segment{}, err
}

width := float64(800)
Expand Down
8 changes: 4 additions & 4 deletions plugins/bilibili/public.go
Original file line number Diff line number Diff line change
Expand Up @@ -450,7 +450,7 @@ func (l *LiveRoom) Info() (LiveRoomInfo, error) {
}, nil
}

func DynamicTypeShareMessage(d DynamicInfo) (m []message.MessageSegment) {
func DynamicTypeShareMessage(d DynamicInfo) (m []message.Segment) {
//简单的分享处理
r := gjson.Parse(d.Card)
shareUrl := "https://t.bilibili.com/" + r.Get("item.orig_dy_id").String()
Expand All @@ -460,7 +460,7 @@ func DynamicTypeShareMessage(d DynamicInfo) (m []message.MessageSegment) {
return m
}

func DynamicTypePicMessage(d DynamicInfo) (m []message.MessageSegment) {
func DynamicTypePicMessage(d DynamicInfo) (m []message.Segment) {
r := gjson.Parse(d.Card)
m = append(m, message.Text(utils.StringLimit(r.Get("item.description").String(), getContentLimit())))
if proxy.GetConfigInt64("picture") == 0 {
Expand All @@ -479,12 +479,12 @@ func DynamicTypePicMessage(d DynamicInfo) (m []message.MessageSegment) {
return m
}

func DynamicTypeTextMessage(d DynamicInfo) (m []message.MessageSegment) {
func DynamicTypeTextMessage(d DynamicInfo) (m []message.Segment) {
r := gjson.Parse(d.Card)
return append(m, message.Text(utils.StringLimit(r.Get("item.content").String(), getContentLimit())))
}

func DynamicTypeReadMessage(d DynamicInfo) (m []message.MessageSegment) {
func DynamicTypeReadMessage(d DynamicInfo) (m []message.Segment) {
r := gjson.Parse(d.Card)
return append(m, message.Text("标题:"+r.Get("title").String()+
"\n概要:"+utils.StringLimit(r.Get("summary").String(), getContentLimit())+
Expand Down
4 changes: 2 additions & 2 deletions plugins/bilibili/send.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ func checkUpStatus(sub Subscription) (msg []message.Message) {
link := fmt.Sprintf("\n主页:https://space.bilibili.com/%v/dynamic", sub.BID)

// 按动态类型附加内容
var appendMsg []message.MessageSegment
var appendMsg []message.Segment
switch d.Type {
case DynamicTypeShare: // 分享动态
appendMsg = DynamicTypeShareMessage(d)
Expand Down Expand Up @@ -167,7 +167,7 @@ func checkUpStatus(sub Subscription) (msg []message.Message) {
if proxy.GetConfigBool("link") {
appendMsg = append(appendMsg, message.Text(link))
}
msg = []message.Message{append([]message.MessageSegment{message.Text(str)}, appendMsg...)}
msg = []message.Message{append([]message.Segment{message.Text(str)}, appendMsg...)}

// 更新状态
sub.DynamicLastTime = d.Time
Expand Down
2 changes: 1 addition & 1 deletion plugins/bottle/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ func deleteAllHandler(ctx *zero.Ctx) {
return
}

func genBottleMsg(bottle DriftingBottleModel) (msg message.MessageSegment) {
func genBottleMsg(bottle DriftingBottleModel) (msg message.Segment) {
var err error
defer func() {
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion plugins/emoji_mix/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ func match(ctx *zero.Ctx) bool {
}

// 获取qq表情 或 emoji对应的索引
func face2emoji(face message.MessageSegment) rune {
func face2emoji(face message.Segment) rune {
if face.Type == "face" {
id, err := strconv.Atoi(face.Data["id"])
if err != nil {
Expand Down
6 changes: 3 additions & 3 deletions plugins/genshin/genshin_query/genshin_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func Query(uid string, cookie string, showLeft bool) (message.Message, *mihoyo.G
}

// 生成图片便签消息
func genNotePicMessage(role *mihoyo.GameRole, note *mihoyo.GenshinDailyNote, showLeft bool) (message.MessageSegment, error) {
func genNotePicMessage(role *mihoyo.GameRole, note *mihoyo.GenshinDailyNote, showLeft bool) (message.Segment, error) {
now := time.Now()
maxExpedition := "0"
for _, r := range note.Expeditions {
Expand All @@ -55,11 +55,11 @@ func genNotePicMessage(role *mihoyo.GameRole, note *mihoyo.GenshinDailyNote, sho
// 角色
err := img.PasteStringDefault(role.NickName, 28, 1, 50, 15, 680)
if err != nil {
return message.MessageSegment{}, err
return message.Segment{}, err
}
// 设置参数
if err = img.UseDefaultFont(24); err != nil {
return message.MessageSegment{}, err
return message.Segment{}, err
}
height := 60.0
// 计算文字
Expand Down
10 changes: 5 additions & 5 deletions plugins/genshin/genshin_record/record.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ func getRecord(ctx *zero.Ctx) {

}

func getRecordImage(GenShin GenShinInfo, UID string) (message.MessageSegment, error) {
func getRecordImage(GenShin GenShinInfo, UID string) (message.Segment, error) {

RecordImage := images.NewImageCtxWithBGColor(1000, 5000, "#363839")

Expand All @@ -201,7 +201,7 @@ func getRecordImage(GenShin GenShinInfo, UID string) (message.MessageSegment, er
UserLevel := strconv.Itoa(GenShin.Data.Role.Level) //玩家等级

if err := RecordImage.UseDefaultFont(25); err != nil {
return message.MessageSegment{}, err
return message.Segment{}, err
}
RecordImage.SetHexColor("#e5e5e5")

Expand Down Expand Up @@ -356,13 +356,13 @@ func getRecordImage(GenShin GenShinInfo, UID string) (message.MessageSegment, er

//这里计划写一个Goroutine
if err = updateWorldICONPicture(GenShin); err != nil {
return message.MessageSegment{}, err
return message.Segment{}, err
}
if err = updateWorldBackgroundPicture(GenShin); err != nil {
return message.MessageSegment{}, err
return message.Segment{}, err
}
if err = updateWorldOfferingsPicture(GenShin); err != nil {
return message.MessageSegment{}, err
return message.Segment{}, err
}

RecordImage.UseDefaultFont(50) //这里应该改为usedefeafont
Expand Down
18 changes: 9 additions & 9 deletions plugins/idioms/guess.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,13 +84,13 @@ func guessIdioms(ctx *zero.Ctx) {
if e == nil {
return
}
guess := strings.TrimSpace(e.Message.ExtractPlainText())
guess := strings.TrimSpace(e.ExtractPlainText())
if guess == key { // 猜对,结束游戏
ctx.SendChain(message.At(e.UserID), message.Text("猜对啦"))
addSuccess(e.GroupID, e.UserID)
ctx.SendChain(message.At(e.Event.UserID), message.Text("猜对啦"))
addSuccess(e.Event.GroupID, e.Event.UserID)
return
} else if utils.StringSliceContain(cancelMessage, guess) { // 取消,结束游戏
ctx.SendChain(message.At(e.UserID), message.Text(fmt.Sprintf("那算啦,其实正确答案是%v哦", key)))
ctx.SendChain(message.At(e.Event.UserID), message.Text(fmt.Sprintf("那算啦,其实正确答案是%v哦", key)))
return
} else { // 猜错,继续游戏
if ctx.Event.GroupID == 0 { // 只有私聊提示
Expand All @@ -106,7 +106,7 @@ func guessIdioms(ctx *zero.Ctx) {

// 获取猜成语图片:

func getIdiomsPicture() (msg message.MessageSegment, key string, err error) {
func getIdiomsPicture() (msg message.Segment, key string, err error) {
return getIdiomsPictureLocal()
//if proxy.GetConfigBool("localFirst") {
// msg, key, err = getIdiomsPictureLocal()
Expand All @@ -122,7 +122,7 @@ func getIdiomsPicture() (msg message.MessageSegment, key string, err error) {
//return
}

func getIdiomsPictureLocal() (msg message.MessageSegment, key string, err error) {
func getIdiomsPictureLocal() (msg message.Segment, key string, err error) {
// 计数
count := 0
_ = filepath.WalkDir(consts.IdiomsImageDir, func(path string, d fs.DirEntry, err error) error {
Expand All @@ -137,7 +137,7 @@ func getIdiomsPictureLocal() (msg message.MessageSegment, key string, err error)
return nil
})
if count == 0 {
return message.MessageSegment{}, "", fmt.Errorf("%v目录为空,请及时放置成语图片文件", consts.IdiomsImageDir)
return message.Segment{}, "", fmt.Errorf("%v目录为空,请及时放置成语图片文件", consts.IdiomsImageDir)
}
// 随机选取
num := rand.Intn(count)
Expand All @@ -161,10 +161,10 @@ func getIdiomsPictureLocal() (msg message.MessageSegment, key string, err error)
return nil
})
if err != nil {
return message.MessageSegment{}, "", fmt.Errorf("filepath walk err: %v", err)
return message.Segment{}, "", fmt.Errorf("filepath walk err: %v", err)
}
if len(key) == 0 {
return message.MessageSegment{}, "", fmt.Errorf("存在无答案图片文件")
return message.Segment{}, "", fmt.Errorf("存在无答案图片文件")
}
return
}
6 changes: 3 additions & 3 deletions plugins/idioms/iyk0.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ import (

const idiomsPictureAPI = "https://api.iyk0.com/ktc/"

func getIdiomsPictureByIYK0() (msg message.MessageSegment, key string, err error) {
func getIdiomsPictureByIYK0() (msg message.Segment, key string, err error) {
c := client.NewHttpClient(&client.HttpOptions{TryTime: 2})
rsp, err := c.GetGJson(idiomsPictureAPI)
if err != nil {
return message.MessageSegment{}, "", err
return message.Segment{}, "", err
}
if rsp.Get("code").Int() != 200 {
return message.MessageSegment{}, "", fmt.Errorf("rsp code != 200, msg: %v", rsp.Get("msg"))
return message.Segment{}, "", fmt.Errorf("rsp code != 200, msg: %v", rsp.Get("msg"))
}
key = rsp.Get("key").String()
url := rsp.Get("img").String()
Expand Down
Loading