diff --git a/data/Omikuji/kuji.db b/data/Omikuji/kuji.db new file mode 100644 index 00000000..b8bf9103 Binary files /dev/null and b/data/Omikuji/kuji.db differ diff --git a/plugin_omikuji/data.go b/plugin_omikuji/data.go index e54a79ce..c03b6b56 100644 --- a/plugin_omikuji/data.go +++ b/plugin_omikuji/data.go @@ -1,21 +1,21 @@ package omikuji import ( - "github.com/FloatTech/ZeroBot-Plugin/utils/file" - "github.com/FloatTech/ZeroBot-Plugin/utils/sql" "io" "net/http" "os" log "github.com/sirupsen/logrus" + "github.com/FloatTech/ZeroBot-Plugin/utils/file" "github.com/FloatTech/ZeroBot-Plugin/utils/process" + "github.com/FloatTech/ZeroBot-Plugin/utils/sql" ) const ( - dbpath = "data/omikuji/" - dbfile = dbpath + "signature.db" - dburl = "https://codechina.csdn.net/anto_july/bookreview/-/raw/master/signature.db?inline=false" + dbpath = "data/Omikuji/" + dbfile = dbpath + "kuji.db" + dburl = "https://codechina.csdn.net/u011570312/ZeroBot-Plugin/-/raw/master/" + dbfile ) var db = &sql.Sqlite{DBPath: dbfile} @@ -51,15 +51,15 @@ func init() { } } } - err := db.Create("signature", &signature{}) + err := db.Create("kuji", &kuji{}) if err != nil { panic(err) } - n, err := db.Count("signature") + n, err := db.Count("kuji") if err != nil { panic(err) } - log.Printf("[signature]读取%d条签文", n) + log.Printf("[kuji]读取%d条签文", n) }() } diff --git a/plugin_omikuji/migrate/main.go b/plugin_omikuji/migrate/main.go new file mode 100644 index 00000000..5d149d83 --- /dev/null +++ b/plugin_omikuji/migrate/main.go @@ -0,0 +1,46 @@ +package main + +import ( + "fmt" + "os" + "strconv" + + "github.com/FloatTech/ZeroBot-Plugin/utils/sql" +) + +type signature struct { + Id uint64 `db:"id"` + Text string `db:"text"` +} + +type kuji struct { + Id uint8 `db:"id"` + Text string `db:"text"` +} + +func main() { + db := &sql.Sqlite{DBPath: os.Args[1]} + newdb := &sql.Sqlite{DBPath: os.Args[2]} + err := newdb.Create("kuji", &kuji{}) + if err != nil { + panic(err) + } + err = db.Create("signature", &signature{}) + if err != nil { + panic(err) + } + + fmt.Println(db.Count("signature")) + s := &signature{} + k := &kuji{} + for i := 1; i <= 100; i++ { + db.Find("signature", s, "where id = "+strconv.Itoa(i)) + fmt.Println("insert: ", s.Text[:57]) + k.Id = uint8(i) + k.Text = s.Text + newdb.Insert("kuji", k) + } + + db.Close() + newdb.Close() +} diff --git a/plugin_omikuji/model.go b/plugin_omikuji/model.go index 1c1b85f9..17f5cc78 100644 --- a/plugin_omikuji/model.go +++ b/plugin_omikuji/model.go @@ -2,13 +2,17 @@ package omikuji import "strconv" -type signature struct { - Id uint64 `db:"id"` +type kuji struct { + Id uint8 `db:"id"` Text string `db:"text"` } // 返回一个解签 -func getSignatureById(id int) (s signature) { - db.Find("signature", &s, "where id = "+strconv.Itoa(id)) - return +func getKujiByBango(id uint8) string { + var s kuji + err := db.Find("kuji", &s, "where id = "+strconv.Itoa(int(id))) + if err != nil { + return err.Error() + } + return s.Text } diff --git a/plugin_omikuji/sensou.go b/plugin_omikuji/sensou.go index 6b7b71f6..77926908 100644 --- a/plugin_omikuji/sensou.go +++ b/plugin_omikuji/sensou.go @@ -27,37 +27,30 @@ var ( ) func init() { // 插件主体 - engine.OnFullMatchGroup([]string{"求签", "占卜"}).SetPriority(10).SetBlock(true). Handle(func(ctx *zero.Ctx) { - userId := ctx.Event.UserID - today, err := strconv.ParseInt(time.Now().Format("20060102"), 10, 64) - if err != nil { - log.Errorln("string转化为int64格式有问题:", err) - } - seed := userId + today - rand.Seed(seed) - miku := rand.Intn(100) + 1 + miku := bangoToday(ctx.Event.UserID) ctx.SendChain( - message.At(userId), + message.At(ctx.Event.UserID), message.Image(fmt.Sprintf(bed, miku, 0)), message.Image(fmt.Sprintf(bed, miku, 1)), ) }) engine.OnFullMatchGroup([]string{"解签"}).SetPriority(10).SetBlock(true). Handle(func(ctx *zero.Ctx) { - userId := ctx.Event.UserID - today, err := strconv.ParseInt(time.Now().Format("20060102"), 10, 64) - if err != nil { - log.Errorln("string转化为int64格式有问题:", err) - } - seed := userId + today - rand.Seed(seed) - miku := rand.Intn(100) + 1 - s := getSignatureById(miku) ctx.SendChain( - message.At(userId), - message.Text(s.Text), + message.At(ctx.Event.UserID), + message.Text(getKujiByBango(bangoToday(ctx.Event.UserID))), ) }) } + +func bangoToday(uid int64) uint8 { + today, err := strconv.ParseInt(time.Now().Format("20060102"), 10, 64) + if err != nil { + log.Errorln("string转化为int64格式有问题:", err) + } + seed := uid + today + r := rand.New(rand.NewSource(seed)) + return uint8(r.Intn(100) + 1) +}