From a9a061a4bb54816944ad53eac6414a7284390547 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Mon, 28 Mar 2022 23:01:36 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20=E4=BC=98=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/hyaku/main.go | 49 +++++++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/plugin/hyaku/main.go b/plugin/hyaku/main.go index e8fed209..24c99176 100644 --- a/plugin/hyaku/main.go +++ b/plugin/hyaku/main.go @@ -5,9 +5,11 @@ import ( "fmt" "math/rand" "os" + "reflect" "strconv" "unsafe" + "github.com/FloatTech/zbputils/binary" "github.com/FloatTech/zbputils/control" "github.com/FloatTech/zbputils/control/order" "github.com/FloatTech/zbputils/ctxext" @@ -18,8 +20,32 @@ import ( const bed = "https://gitcode.net/u011570312/OguraHyakuninIsshu/-/raw/master/" +//nolint: asciicheck type line struct { - no, 歌人, 上の句, 下の句, 上の句ひらがな, 下の句ひらがな string + 番号, 歌人, 上の句, 下の句, 上の句ひらがな, 下の句ひらがな string +} + +func (l *line) String() string { + b := binary.NewWriterF(func(w *binary.Writer) { + r := reflect.ValueOf(l).Elem() + for i := 0; i < r.NumField(); i++ { + switch i { + case 0: + w.WriteString("●") + case 1: + w.WriteString("◉") + case 2, 3: + w.WriteString("○") + case 4, 5: + w.WriteString("◎") + } + w.WriteString(r.Type().Field(i).Name) + w.WriteString(":") + w.WriteString(r.Field(i).String()) + w.WriteString("\n") + } + }) + return binary.BytesToString(b) } var lines [100]*line @@ -54,6 +80,9 @@ func init() { panic("invalid csvfile") } for j, r := range records { + if len(r) != 6 { + panic("invalid csvfile") + } i, err := strconv.Atoi(r[0]) if err != nil { panic(err) @@ -69,14 +98,7 @@ func init() { i := rand.Intn(100) ctx.SendChain( message.Image(fmt.Sprintf(bed+"img/%03d.jpg", i+1)), - message.Text("\n", - "●番 号: ", lines[i].no, "\n", - "●歌 人: ", lines[i].歌人, "\n", - "●上の句: ", lines[i].上の句, "\n", - "●下の句: ", lines[i].下の句, "\n", - "●上の句ひらがな: ", lines[i].上の句ひらがな, "\n", - "●下の句ひらがな: ", lines[i].下の句ひらがな, "\n", - ), + message.Text("\n", lines[i]), message.Image(fmt.Sprintf(bed+"img/%03d.png", i+1)), ) }) @@ -93,14 +115,7 @@ func init() { i-- ctx.SendChain( message.Image(fmt.Sprintf(bed+"img/%03d.jpg", i+1)), - message.Text("\n", - "●番 号: ", lines[i].no, "\n", - "●歌 人: ", lines[i].歌人, "\n", - "●上の句: ", lines[i].上の句, "\n", - "●下の句: ", lines[i].下の句, "\n", - "●上の句ひらがな: ", lines[i].上の句ひらがな, "\n", - "●下の句ひらがな: ", lines[i].下の句ひらがな, "\n", - ), + message.Text("\n", lines[i]), message.Image(fmt.Sprintf(bed+"img/%03d.png", i+1)), ) })