|
5 | 5 | "math/rand" |
6 | 6 | "sort" |
7 | 7 | "strconv" |
8 | | - "strings" |
9 | 8 | "sync" |
10 | 9 | "time" |
11 | 10 |
|
@@ -181,30 +180,23 @@ func (sql *婚姻登记) 花名册(gid int64) (list [][4]string, number int, err |
181 | 180 | return |
182 | 181 | } |
183 | 182 |
|
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 |
193 | 187 | 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 |
205 | 192 | } |
| 193 | + numberlen = i |
| 194 | + } |
| 195 | + if widthlen > 350 { |
| 196 | + resultname = string(usermane[:numberlen-1]) + "......" // 名字切片 |
| 197 | + } else { |
| 198 | + resultname = name |
206 | 199 | } |
207 | | - resultname = string(usermane[:numberlen-2]) + "......" // 名字切片 |
208 | 200 | return |
209 | 201 | } |
210 | 202 |
|
@@ -567,10 +559,10 @@ func init() { |
567 | 559 | } |
568 | 560 | _, h = canvas.MeasureString("焯") |
569 | 561 | 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) |
571 | 563 | canvas.DrawString("("+info[1]+")", 350, float64(260+50*i)-h) |
572 | 564 | 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) |
574 | 566 | canvas.DrawString("("+info[3]+")", 1150, float64(260+50*i)-h) |
575 | 567 | } |
576 | 568 | data, cl := writer.ToBytes(canvas.Image()) |
@@ -667,13 +659,13 @@ func iscding(ctx *zero.Ctx) { |
667 | 659 |
|
668 | 660 | // 注入判断 是否为单身 |
669 | 661 | func checkdog(ctx *zero.Ctx) bool { |
670 | | - // 得先判断用户是否存在才行在,再重置 |
| 662 | + //得先判断用户是否存在才行在,再重置 |
671 | 663 | fiancee, err := strconv.ParseInt(ctx.State["regex_matched"].([]string)[2], 10, 64) |
672 | 664 | if err != nil { |
673 | 665 | ctx.SendChain(message.Text("额,你的target好像不存在?")) |
674 | 666 | return false |
675 | 667 | } |
676 | | - // 判断是否需要重置 |
| 668 | + //判断是否需要重置 |
677 | 669 | gid := ctx.Event.GroupID |
678 | 670 | updatetime, err := 民政局.checkupdate(gid) |
679 | 671 | switch { |
|
0 commit comments