feat: 添加野怪查询指令及支持服务
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
This commit is contained in:
41
modules/config/controller/robot/mappit.go
Normal file
41
modules/config/controller/robot/mappit.go
Normal 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"))
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -37,3 +37,12 @@ func (s *MapPitService) GetDataALL(mapid uint32) []model.MapPit {
|
|||||||
return pet
|
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
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -91,6 +91,38 @@ func (s *DictInfoService) GetData(types string) (data map[uint32]model.DictInfo)
|
|||||||
})
|
})
|
||||||
return fusions
|
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
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取物品的最大数限制
|
// 获取物品的最大数限制
|
||||||
|
|||||||
Reference in New Issue
Block a user