diff --git a/main.go b/main.go index 9e9f041..e082339 100644 --- a/main.go +++ b/main.go @@ -5,6 +5,7 @@ import ( "github.com/realSunyz/lucky-tgbot/plugin/slash" "github.com/realSunyz/lucky-tgbot/plugin/torf" "log" + "math/rand" "os" "strings" "time" @@ -18,20 +19,24 @@ func main() { Poller: &tele.LongPoller{Timeout: 10 * time.Second}, } - rebornData, err := reborn.InitRebornList("plugin/reborn/countries.json") - if err != nil { - log.Fatal(err) - } - b, err := tele.NewBot(pref) if err != nil { log.Fatal("Error creating bot: ", err) return } + rebornData, err := reborn.InitRebornList("plugin/reborn/countries.json") + if err != nil { + log.Fatal("Error initializing rebornData: ", err) + } + + source := rand.NewSource(time.Now().UnixNano()) + r := rand.New(source) + b.Handle("/reborn", func(c tele.Context) error { - return reborn.Execute(c, rebornData) + return reborn.Execute(c, r, rebornData) }) + // b.Handle("/info", info.Execute) b.Handle(tele.OnText, func(c tele.Context) error { @@ -40,7 +45,7 @@ func main() { if strings.HasPrefix(inputText, "/") { return slash.Execute(c) } else { - return torf.Execute(c) + return torf.Execute(c, r) } }) diff --git a/plugin/reborn/main.go b/plugin/reborn/main.go index 41cd78e..be14563 100644 --- a/plugin/reborn/main.go +++ b/plugin/reborn/main.go @@ -5,7 +5,6 @@ import ( "fmt" "math/rand" "os" - "time" tele "gopkg.in/telebot.v3" ) @@ -60,10 +59,7 @@ func randGender(r *rand.Rand) string { return genders[r.Intn(len(genders))] } -func Execute(c tele.Context, data *RebornData) error { - source := rand.NewSource(time.Now().UnixNano()) - r := rand.New(source) - +func Execute(c tele.Context, r *rand.Rand, data *RebornData) error { country, err := data.randCountry(r) if err != nil { return nil diff --git a/plugin/torf/main.go b/plugin/torf/main.go index aacae97..ea7500b 100644 --- a/plugin/torf/main.go +++ b/plugin/torf/main.go @@ -7,7 +7,7 @@ import ( tele "gopkg.in/telebot.v3" ) -func randResponse(saidType int) string { +func randResponse(saidType int, r *rand.Rand) string { responsesMap := map[int][]string{ 1: {"有", "没有"}, 2: {"好", "不好"}, @@ -16,24 +16,24 @@ func randResponse(saidType int) string { } if responses, exists := responsesMap[saidType]; exists { - return responses[rand.Intn(len(responses))] + return responses[r.Intn(len(responses))] } return "" } -func Execute(c tele.Context) error { +func Execute(c tele.Context, r *rand.Rand) error { inputText := c.Text() var outputText string if strings.Contains(inputText, "有没有") { - outputText = randResponse(1) + outputText = randResponse(1, r) } else if strings.Contains(inputText, "好不好") { - outputText = randResponse(2) + outputText = randResponse(2, r) } else if strings.Contains(inputText, "是不是") { - outputText = randResponse(3) + outputText = randResponse(3, r) } else if strings.Contains(inputText, "尊嘟假嘟") { - outputText = randResponse(4) + outputText = randResponse(4, r) } else { return nil }