Skip to content
Open
Show file tree
Hide file tree
Changes from 2 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