Skip to content

Commit f768081

Browse files
authored
优化花名册名字切片报错问题 (#263)
1 parent 668418c commit f768081

File tree

1 file changed

+18
-26
lines changed

1 file changed

+18
-26
lines changed

plugin/qqwife/qqmapwife.go

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"math/rand"
66
"sort"
77
"strconv"
8-
"strings"
98
"sync"
109
"time"
1110

@@ -181,30 +180,23 @@ func (sql *婚姻登记) 花名册(gid int64) (list [][4]string, number int, err
181180
return
182181
}
183182

184-
func slicename(name string) (resultname string) {
185-
if len(name) <= 21 { // 如果长度在宽度之内直接输出
186-
resultname = name
187-
return
188-
}
189-
usermane := []rune(name) // 转utf8形式
190-
usermanelen := 0 // 总长度
191-
numberlen := 0 // 字个数
192-
var singlestr = " ,.;:'|!()[]" // 单宽度长度的字符集
183+
func slicename(name string, canvas *gg.Context) (resultname string) {
184+
usermane := []rune(name) //将每个字符单独放置
185+
widthlen := 0
186+
numberlen := 0
193187
for i, v := range usermane {
194-
if usermanelen > 18 { // 6个汉字或者9个字符
195-
numberlen = i
196-
break
197-
}
198-
switch {
199-
case v/10000 >= 1:
200-
usermanelen += 3
201-
case strings.Contains(singlestr, string(v)):
202-
usermanelen++
203-
default:
204-
usermanelen += 2
188+
width, _ := canvas.MeasureString(string(v)) //获取单个字符的宽度
189+
widthlen += int(width)
190+
if widthlen > 350 {
191+
break //总宽度不能超过350
205192
}
193+
numberlen = i
194+
}
195+
if widthlen > 350 {
196+
resultname = string(usermane[:numberlen-1]) + "......" // 名字切片
197+
} else {
198+
resultname = name
206199
}
207-
resultname = string(usermane[:numberlen-2]) + "......" // 名字切片
208200
return
209201
}
210202

@@ -567,10 +559,10 @@ func init() {
567559
}
568560
_, h = canvas.MeasureString("焯")
569561
for i, info := range list {
570-
canvas.DrawString(slicename(info[0]), 0, float64(260+50*i)-h)
562+
canvas.DrawString(slicename(info[0], canvas), 0, float64(260+50*i)-h)
571563
canvas.DrawString("("+info[1]+")", 350, float64(260+50*i)-h)
572564
canvas.DrawString("←→", 700, float64(260+50*i)-h)
573-
canvas.DrawString(slicename(info[2]), 800, float64(260+50*i)-h)
565+
canvas.DrawString(slicename(info[2], canvas), 800, float64(260+50*i)-h)
574566
canvas.DrawString("("+info[3]+")", 1150, float64(260+50*i)-h)
575567
}
576568
data, cl := writer.ToBytes(canvas.Image())
@@ -667,13 +659,13 @@ func iscding(ctx *zero.Ctx) {
667659

668660
// 注入判断 是否为单身
669661
func checkdog(ctx *zero.Ctx) bool {
670-
// 得先判断用户是否存在才行在,再重置
662+
//得先判断用户是否存在才行在,再重置
671663
fiancee, err := strconv.ParseInt(ctx.State["regex_matched"].([]string)[2], 10, 64)
672664
if err != nil {
673665
ctx.SendChain(message.Text("额,你的target好像不存在?"))
674666
return false
675667
}
676-
// 判断是否需要重置
668+
//判断是否需要重置
677669
gid := ctx.Event.GroupID
678670
updatetime, err := 民政局.checkupdate(gid)
679671
switch {

0 commit comments

Comments
 (0)