mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-19 05:30:07 +08:00
gif系列,新增,更新旧的素材 (#373)
This commit is contained in:
parent
03fc569f87
commit
962c48ca36
@ -1154,3 +1154,297 @@ func dun(cc *context, value ...string) (string, error) {
|
||||
}
|
||||
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, dun))
|
||||
}
|
||||
|
||||
// push 滚高清重置版 过渡
|
||||
func push(cc *context, value ...string) (string, error) {
|
||||
_ = value
|
||||
var wg sync.WaitGroup
|
||||
var err error
|
||||
var m sync.Mutex
|
||||
piclen := 16
|
||||
name := cc.usrdir + "push.gif"
|
||||
c := dlrange("push", piclen, &wg, func(e error) {
|
||||
m.Lock()
|
||||
err = e
|
||||
m.Unlock()
|
||||
})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
wg.Wait()
|
||||
tou, err := cc.getLogo(0, 0)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
imgs, err := loadFirstFrames(c, piclen)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
push := make([]*image.NRGBA, piclen)
|
||||
for i := 0; i < piclen; i++ {
|
||||
push[i] = imgs[i].InsertUpC(img.Rotate(tou, float64(-22*i), 280, 280).Im, 0, 0, 523, 291).Im
|
||||
}
|
||||
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, push))
|
||||
}
|
||||
|
||||
// peng 砰
|
||||
func peng(cc *context, value ...string) (string, error) {
|
||||
_ = value
|
||||
var wg sync.WaitGroup
|
||||
var err error
|
||||
var m sync.Mutex
|
||||
name := cc.usrdir + "peng.gif"
|
||||
c := dlrange("peng", 25, &wg, func(e error) {
|
||||
m.Lock()
|
||||
err = e
|
||||
m.Unlock()
|
||||
})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
tou, err := cc.getLogo(100, 100)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
m1 := img.Rotate(tou, 1, 80, 80)
|
||||
m2 := img.Rotate(tou, 30, 80, 80)
|
||||
m3 := img.Rotate(tou, 45, 85, 85)
|
||||
m4 := img.Rotate(tou, 90, 80, 80)
|
||||
|
||||
wg.Wait()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
imgs, err := loadFirstFrames(c, 25)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
peng := []*image.NRGBA{
|
||||
imgs[0].Im,
|
||||
imgs[1].Im,
|
||||
imgs[2].Im,
|
||||
imgs[3].Im,
|
||||
imgs[4].Im,
|
||||
imgs[5].Im,
|
||||
imgs[6].Im,
|
||||
imgs[7].InsertUp(m1.Im, 0, 0, 205, 80).Im,
|
||||
imgs[8].InsertUp(m1.Im, 0, 0, 205, 80).Im,
|
||||
imgs[9].InsertUp(m1.Im, 0, 0, 205, 80).Im,
|
||||
imgs[10].InsertUp(m1.Im, 0, 0, 205, 80).Im,
|
||||
imgs[11].InsertUp(m1.Im, 0, 0, 205, 80).Im,
|
||||
imgs[12].InsertUp(m1.Im, 0, 0, 205, 80).Im,
|
||||
imgs[13].InsertUp(m1.Im, 0, 0, 205, 80).Im,
|
||||
imgs[14].InsertUp(m1.Im, 0, 0, 205, 80).Im,
|
||||
imgs[15].InsertUp(m1.Im, 0, 0, 205, 80).Im,
|
||||
imgs[16].InsertUp(m1.Im, 0, 0, 200, 80).Im,
|
||||
imgs[17].InsertUp(m2.Im, 0, 0, 169, 65).Im,
|
||||
imgs[18].InsertUp(m2.Im, 0, 0, 160, 69).Im,
|
||||
imgs[19].InsertUp(m3.Im, 0, 0, 113, 90).Im,
|
||||
imgs[20].InsertUp(m4.Im, 0, 0, 89, 159).Im,
|
||||
imgs[21].InsertUp(m4.Im, 0, 0, 89, 159).Im,
|
||||
imgs[22].InsertUp(m4.Im, 0, 0, 86, 160).Im,
|
||||
imgs[23].InsertUp(m4.Im, 0, 0, 89, 159).Im,
|
||||
imgs[24].InsertUp(m4.Im, 0, 0, 86, 160).Im,
|
||||
}
|
||||
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(8, peng))
|
||||
}
|
||||
|
||||
// klee 可莉吃
|
||||
func klee(cc *context, value ...string) (string, error) {
|
||||
_ = value
|
||||
var wg sync.WaitGroup
|
||||
var err error
|
||||
var m sync.Mutex
|
||||
piclen := 31
|
||||
name := cc.usrdir + "klee.gif"
|
||||
c := dlrange("klee", piclen, &wg, func(e error) {
|
||||
m.Lock()
|
||||
err = e
|
||||
m.Unlock()
|
||||
})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
wg.Wait()
|
||||
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 82, 83)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
locs := [][]int{{0, 174}, {0, 174}, {0, 174}, {0, 174}, {0, 174}, {12, 160}, {19, 152}, {23, 148}, {26, 145}, {32, 140}, {37, 136}, {42, 131}, {49, 127}, {70, 126}, {88, 128}, {-30, 210}, {-19, 207}, {-14, 200}, {-10, 188}, {-7, 179}, {-3, 170}, {-3, 175}, {-1, 174}, {0, 174}, {0, 174}, {0, 174}, {0, 174}, {0, 174}, {0, 174}, {0, 174}, {0, 174}}
|
||||
imgs, err := loadFirstFrames(c, piclen)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
klee := make([]*image.NRGBA, piclen)
|
||||
for i := 0; i < piclen; i++ {
|
||||
klee[i] = imgs[i].InsertBottom(im.Im, 0, 0, locs[i][0], locs[i][1]).Im
|
||||
}
|
||||
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, klee))
|
||||
}
|
||||
|
||||
// hutaoken 胡桃啃
|
||||
func hutaoken(cc *context, value ...string) (string, error) {
|
||||
_ = value
|
||||
var wg sync.WaitGroup
|
||||
var err error
|
||||
var m sync.Mutex
|
||||
name := cc.usrdir + "hutaoken.gif"
|
||||
c := dlrange("hutaoken", 2, &wg, func(e error) {
|
||||
m.Lock()
|
||||
err = e
|
||||
m.Unlock()
|
||||
})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
tou, err := cc.getLogo(55, 55)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
wg.Wait()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
imgs, err := loadFirstFrames(c, 2)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
hutaoken := []*image.NRGBA{
|
||||
imgs[0].InsertBottom(tou, 98, 101, 108, 234).Im,
|
||||
imgs[1].InsertBottom(tou, 96, 100, 108, 237).Im,
|
||||
}
|
||||
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(8, hutaoken))
|
||||
}
|
||||
|
||||
// lick 2舔
|
||||
func lick(cc *context, value ...string) (string, error) {
|
||||
_ = value
|
||||
var wg sync.WaitGroup
|
||||
var err error
|
||||
var m sync.Mutex
|
||||
name := cc.usrdir + "lick.gif"
|
||||
c := dlrange("lick", 2, &wg, func(e error) {
|
||||
m.Lock()
|
||||
err = e
|
||||
m.Unlock()
|
||||
})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
tou, err := cc.getLogo(100, 100)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
imgs, err := loadFirstFrames(c, 2)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
lick := []*image.NRGBA{
|
||||
imgs[0].InsertUp(tou, 44, 44, 10, 138).Im,
|
||||
imgs[1].InsertUp(tou, 44, 44, 10, 138).Im,
|
||||
}
|
||||
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(8, lick))
|
||||
}
|
||||
|
||||
// tiqiu 踢球
|
||||
func tiqiu(cc *context, value ...string) (string, error) {
|
||||
_ = value
|
||||
var wg sync.WaitGroup
|
||||
var err error
|
||||
var m sync.Mutex
|
||||
piclen := 15
|
||||
name := cc.usrdir + "tiqiu.gif"
|
||||
c := dlrange("tiqiu", piclen, &wg, func(e error) {
|
||||
m.Lock()
|
||||
err = e
|
||||
m.Unlock()
|
||||
})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
wg.Wait()
|
||||
tou, err := cc.getLogo(78, 78)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
locs := [][]int{{58, 137}, {57, 118}, {56, 100}, {53, 114}, {51, 127}, {49, 140}, {48, 113}, {48, 86}, {48, 58}, {49, 98}, {51, 137}, {52, 177}, {53, 170}, {56, 182}, {59, 154}}
|
||||
imgs, err := loadFirstFrames(c, piclen)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
tiqiu := make([]*image.NRGBA, piclen)
|
||||
for i := 0; i < piclen; i++ {
|
||||
tiqiu[i] = imgs[i].InsertUpC(img.Rotate(tou, float64(-24*i), 0, 0).Im, 0, 0, locs[i][0]+38, locs[i][1]+38).Im
|
||||
}
|
||||
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, tiqiu))
|
||||
}
|
||||
|
||||
// cai 踩
|
||||
func cai(cc *context, value ...string) (string, error) {
|
||||
_ = value
|
||||
var wg sync.WaitGroup
|
||||
var err error
|
||||
var m sync.Mutex
|
||||
name := cc.usrdir + "cai.gif"
|
||||
c := dlrange("cai", 5, &wg, func(e error) {
|
||||
m.Lock()
|
||||
err = e
|
||||
m.Unlock()
|
||||
})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
tou, err := cc.getLogo(0, 0)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
wg.Wait()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
imgs, err := loadFirstFrames(c, 5)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
m1 := img.Rotate(tou, -20, 130, 80)
|
||||
cai := []*image.NRGBA{
|
||||
imgs[0].InsertBottom(m1.Im, 123, 105, 39, 188).Im,
|
||||
imgs[1].InsertBottom(m1.Im, 123, 105, 39, 188).Im,
|
||||
imgs[2].InsertBottom(tou, 90, 71, 50, 209).Im,
|
||||
imgs[3].InsertBottom(tou, 85, 76, 52, 203).Im,
|
||||
imgs[4].InsertBottom(tou, 88, 82, 49, 198).Im,
|
||||
}
|
||||
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, cai))
|
||||
}
|
||||
|
||||
// whir 2转
|
||||
func whirl(cc *context, value ...string) (string, error) {
|
||||
_ = value
|
||||
var wg sync.WaitGroup
|
||||
var err error
|
||||
var m sync.Mutex
|
||||
piclen := 15
|
||||
name := cc.usrdir + "whirl.gif"
|
||||
c := dlrange("whirl", piclen, &wg, func(e error) {
|
||||
m.Lock()
|
||||
err = e
|
||||
m.Unlock()
|
||||
})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
wg.Wait()
|
||||
tou, err := cc.getLogo(0, 0)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
imgs, err := loadFirstFrames(c, piclen)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
whirl := make([]*image.NRGBA, piclen)
|
||||
for i := 0; i < piclen; i++ {
|
||||
whirl[i] = imgs[i].InsertUpC(img.Rotate(tou, float64(-24*i), 145, 145).Im, 0, 0, 115, 89).Im
|
||||
}
|
||||
return "file:///" + name, writer.SaveGIF2Path(name, img.MergeGif(7, whirl))
|
||||
}
|
||||
|
||||
@ -24,7 +24,7 @@ func pa(cc *context, args ...string) (string, error) {
|
||||
return "", err
|
||||
}
|
||||
// 随机爬图序号
|
||||
rand := rand.Intn(60) + 1
|
||||
rand := rand.Intn(92) + 1
|
||||
if file.IsNotExist(datapath + "materials/pa") {
|
||||
err = os.MkdirAll(datapath+"materials/pa", 0755)
|
||||
if err != nil {
|
||||
@ -39,7 +39,7 @@ func pa(cc *context, args ...string) (string, error) {
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return "file:///" + name, writer.SavePNG2Path(name, imgf.InsertBottom(tou, 100, 100, 0, 400).Im)
|
||||
return "file:///" + name, writer.SavePNG2Path(name, imgf.InsertUp(tou, 100, 100, 0, 400).Im)
|
||||
}
|
||||
|
||||
// si 撕
|
||||
@ -1385,3 +1385,139 @@ func eihei(cc *context, args ...string) (string, error) {
|
||||
imgnrgba := imgs[0].InsertBottom(im.Im, 450, 450, 121, 162).Im
|
||||
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba)
|
||||
}
|
||||
|
||||
// fanfa 犯法
|
||||
func fanfa(cc *context, args ...string) (string, error) {
|
||||
_ = args
|
||||
var wg sync.WaitGroup
|
||||
var m sync.Mutex
|
||||
var err error
|
||||
c := dlrange("fanfa", 1, &wg, func(e error) {
|
||||
m.Lock()
|
||||
err = e
|
||||
m.Unlock()
|
||||
})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
wg.Wait()
|
||||
imgs, err := loadFirstFrames(c, 1)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
name := cc.usrdir + "fanfa.png"
|
||||
face, err := cc.getLogo(0, 0)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
m1 := img.Rotate(face, 45, 110, 110)
|
||||
imgnrgba := imgs[0].InsertUp(m1.Im, 0, 0, 125, 360).Im
|
||||
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba)
|
||||
}
|
||||
|
||||
// huai 怀
|
||||
func huai(cc *context, args ...string) (string, error) {
|
||||
_ = args
|
||||
var wg sync.WaitGroup
|
||||
var m sync.Mutex
|
||||
var err error
|
||||
c := dlrange("huai", 1, &wg, func(e error) {
|
||||
m.Lock()
|
||||
err = e
|
||||
m.Unlock()
|
||||
})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
wg.Wait()
|
||||
imgs, err := loadFirstFrames(c, 1)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
name := cc.usrdir + "huai.png"
|
||||
im, err := img.LoadFirstFrame(cc.headimgsdir[0], 640, 640)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
imgnrgba := imgs[0].InsertBottom(im.Im, 640, 640, 0, 0).Im
|
||||
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba)
|
||||
}
|
||||
|
||||
// haowan 好玩
|
||||
func haowan(cc *context, args ...string) (string, error) {
|
||||
_ = args
|
||||
var wg sync.WaitGroup
|
||||
var m sync.Mutex
|
||||
var err error
|
||||
c := dlrange("haowan", 1, &wg, func(e error) {
|
||||
m.Lock()
|
||||
err = e
|
||||
m.Unlock()
|
||||
})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
wg.Wait()
|
||||
imgs, err := loadFirstFrames(c, 1)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
name := cc.usrdir + "haowan.png"
|
||||
face, err := cc.getLogo(0, 0)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
imgnrgba := imgs[0].InsertBottom(face, 90, 90, 321, 172).Im
|
||||
return "file:///" + name, writer.SavePNG2Path(name, imgnrgba)
|
||||
}
|
||||
|
||||
// mengbi 蒙蔽
|
||||
func mengbi(cc *context, args ...string) (string, error) {
|
||||
_ = args
|
||||
var wg sync.WaitGroup
|
||||
var m sync.Mutex
|
||||
var err error
|
||||
c := dlrange("mengbi", 1, &wg, func(e error) {
|
||||
m.Lock()
|
||||
err = e
|
||||
m.Unlock()
|
||||
})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
wg.Wait()
|
||||
name := cc.usrdir + "mengbi.png"
|
||||
back, err := gg.LoadImage(c[0])
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
face, err := cc.getLogo(0, 0)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
wg.Wait()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
canvas := gg.NewContext(1080, 1080)
|
||||
canvas.DrawImage(back, 0, 0)
|
||||
canvas.DrawImage(img.Size(face, 100, 100).Im, 392, 460)
|
||||
canvas.DrawImage(img.Size(face, 100, 100).Im, 606, 443)
|
||||
canvas.SetColor(color.Black)
|
||||
_, err = file.GetLazyData(text.BoldFontFile, true)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if err = canvas.LoadFontFace(text.BoldFontFile, 80); err != nil {
|
||||
return "", err
|
||||
}
|
||||
if args[0] == "" {
|
||||
args[0] = ""
|
||||
}
|
||||
l, _ := canvas.MeasureString(args[0])
|
||||
if l > 1080 {
|
||||
return "", errors.New("文字消息太长了")
|
||||
}
|
||||
canvas.DrawString(args[0], (1080-l)/2, 1000)
|
||||
return "file:///" + name, canvas.SavePNG(name)
|
||||
}
|
||||
|
||||
@ -92,6 +92,18 @@ var (
|
||||
"紧贴": tightly,
|
||||
"紧紧贴着": tightly,
|
||||
"转": turn,
|
||||
"蒙蔽": mengbi,
|
||||
"踩": cai,
|
||||
"好玩": haowan,
|
||||
"2转": whirl,
|
||||
"2滚": push,
|
||||
"踢球": tiqiu,
|
||||
"2舔": lick,
|
||||
"可莉吃": klee,
|
||||
"胡桃啃": hutaoken,
|
||||
"怀": huai,
|
||||
"砰": peng,
|
||||
"你犯法了": fanfa,
|
||||
"炖": dun,
|
||||
"2蹭": ceng2,
|
||||
"诶嘿": eihei,
|
||||
@ -115,12 +127,20 @@ func init() { // 插件主体
|
||||
}
|
||||
en := control.Register("gif", &ctrl.Options[*zero.Ctx]{
|
||||
DisableOnDefault: false,
|
||||
Help: "制图\n- 搓\n- 冲\n- 摸\n- 拍\n- 丢\n- 吃\n- 敲\n- 啃\n- 蹭\n- 爬\n- 撕\n- 灰度\n- 上翻|下翻\n" +
|
||||
"- 左翻|右翻\n- 反色\n- 浮雕\n- 打码\n- 负片\n- 旋转 45\n- 变形 100 100\n- 亲\n- 结婚申请|结婚登记\n- 阿尼亚喜欢\n- 像只\n" +
|
||||
"- 我永远喜欢|永远喜欢\n- 像样的亲亲\n- 国旗\n- 不要靠近\n- 万能表情|空白表情\n- 采访\n- 需要|你可能需要\n- 这像画吗\n- 小画家\n" +
|
||||
"- 完美\n- 玩游戏\n- 出警\n- 警察\n- 舔|舔屏|prpr\n- 安全感\n- 精神支柱\n- 想什么\n- 墙纸\n- 为什么at我\n- 交个朋友\n- 打工人|继续干活\n" +
|
||||
"- 兑换券\n- 注意力涣散\n- 垃圾桶|垃圾\n- 捶\n- 啾啾\n- 2敲\n- 听音乐\n- 永远爱你\n- 2拍\n- 顶\n- 捣\n- 打拳\n- 滚\n- 吸|嗦\n- 扔\n" +
|
||||
"- 锤\n- 紧贴|紧紧贴着\n- 转\n- 炖\n- 2蹭\n- 诶嘿\n- 膜拜\n- 吞\n- 揍\n- 给我变\n- 玩一下\n- 不要看\n- 小天使\n- 你的\n- 我老婆\n- 远离\n- 抬棺\n",
|
||||
Help: "GIF制图,命令后艾特群友/QQ号/一张图方可触发命令\n其中XXX可以为任何文字,可以不写\n对机器人操作请先艾特机器人再执行命令\n" +
|
||||
"- 搓|-冲|-摸|-拍|-丢|-吃|-敲|-啃|-蹭|-爬|-撕|-灰度|-上翻|-下翻\n" +
|
||||
"- 左翻|-右翻|-反色|-浮雕|- 打码|- 负片|- 旋转|- 变形|- 亲\n" +
|
||||
"- 结婚申请|结婚登记|- 阿尼亚喜欢XXX|- 像只|- 我永远喜欢XXX\n" +
|
||||
"- 像样的亲亲|- 国旗|- 不要靠近|- 万能表情|-空白表情|- 采访\n" +
|
||||
"- 需要|-你可能需要|- 这像画吗|- 小画家|- 完美|- 玩游戏|- 出警\n" +
|
||||
"- 警察|- 舔|舔屏|prpr|- 安全感|- 精神支柱|- 想什么|- 墙纸\n" +
|
||||
"- 为什么at我|- 交个朋友|- 打工人|-继续干活|- 兑换券|- 炖\n" +
|
||||
"- 垃圾桶|- 垃圾|- 捶|- 啾啾|- 2敲|- 听音乐|- 永远爱你|- 2拍\n" +
|
||||
"- 顶|- 捣|- 打拳|- 滚|- 吸|- 嗦|- 扔|- 锤|- 紧贴|紧紧贴着|- 转\n" +
|
||||
"- 抬棺|- 远离|- 我老婆|- 小天使XXX|- 你的XXX|- 不要看\n" +
|
||||
"- 玩一下XXX|- 给我变|- 揍|- 吞|- 膜拜|- 诶嘿|- 2蹭|- 你犯法了\n" +
|
||||
"- 砰|- 注意力涣散|- 蒙蔽|- 踩|- 好玩|- 2转|- 踢球|- 2舔|\n" +
|
||||
"- 可莉吃|- 胡桃啃|- 怀",
|
||||
PrivateDataFolder: "gif",
|
||||
}).ApplySingle(ctxext.DefaultSingle)
|
||||
datapath = file.BOTPATH + "/" + en.DataFolder()
|
||||
|
||||
@ -21,7 +21,7 @@ import (
|
||||
|
||||
const bed = "https://gitcode.net/u011570312/OguraHyakuninIsshu/-/raw/master/"
|
||||
|
||||
//nolint: asciicheck
|
||||
// nolint: asciicheck
|
||||
type line struct {
|
||||
番号, 歌人, 上の句, 下の句, 上の句ひらがな, 下の句ひらがな string
|
||||
}
|
||||
|
||||
@ -29,7 +29,7 @@ import (
|
||||
"github.com/FloatTech/zbputils/img/writer"
|
||||
)
|
||||
|
||||
//nolint: asciicheck
|
||||
// nolint: asciicheck
|
||||
type 婚姻登记 struct {
|
||||
db *sql.Sqlite
|
||||
dbmu sync.RWMutex
|
||||
|
||||
Loading…
Reference in New Issue
Block a user