feat: 添加野怪查询指令及支持服务
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful

This commit is contained in:
xinian
2026-03-24 02:21:50 +08:00
committed by cnb
parent b3cc06cd38
commit 52db89b390
3 changed files with 82 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
package robot
import (
"blazing/modules/config/service"
dict "blazing/modules/dict/service"
"strings"
"github.com/gogf/gf/v2/util/gconv"
zero "github.com/wdvxdr1123/ZeroBot"
)
func init() {
zero.OnCommand("野怪").
Handle(func(ctx *zero.Ctx) {
msgs := strings.Fields(ctx.Event.Message.String())
maps := dict.NewDictInfoService().GetData("mapid")
pets := dict.NewDictInfoService().GetNameData("pet")
if len(msgs) > 1 {
var count uint32 = 0
t, ok := pets[msgs[1]]
if ok {
count = uint32(t.Value)
} else {
count = gconv.Uint32(msgs[1])
}
if count != 0 {
var cdks []string
for _, v := range service.NewMapPitService().GetPet(count) {
cdks = append(cdks, gconv.String(maps[uint32(v.MapID)].Name))
}
ctx.Send(strings.Join(cdks, "\n"))
}
}
})
}

View File

@@ -37,3 +37,12 @@ func (s *MapPitService) GetDataALL(mapid uint32) []model.MapPit {
return pet
}
func (s *MapPitService) GetPet(petid uint32) []model.MapPit {
var pet []model.MapPit //一个特性应该是唯一的,但是我们要获取默认随机特性
dbm_enable(s.Model).Wheref(`refresh_id @> ARRAY[?]::integer[]`, petid).Scan(&pet)
return pet
}

View File

@@ -91,6 +91,38 @@ func (s *DictInfoService) GetData(types string) (data map[uint32]model.DictInfo)
})
return fusions
}
func (s *DictInfoService) GetNameData(types string) (data map[string]model.DictInfo) {
var (
dictInfoModel = model.NewDictInfo()
dictTypeModel = model.NewDictType()
)
// 如果typeData为空, 则返回空
var ty *model.DictType
mType := cool.DBM(dictTypeModel)
mType.Where("key in (?)", types).Cache(gdb.CacheOption{
// Duration: time.Hour,
Force: false,
}).Scan(&ty)
// 如果typeData为空, 则返回空
if ty == nil {
return nil
}
m := cool.DBM(dictInfoModel)
var ress []model.DictInfo
m.Where("typeId", ty.ID).Cache(gdb.CacheOption{
// Duration: time.Hour,
Force: false,
}).Scan(&ress)
fusions := utils.ToMap(ress, func(t model.DictInfo) string {
return t.Name //物品id转id
})
return fusions
}
// 获取物品的最大数限制