[+] improve random function
Some checks failed
Build and Push Docker Images / docker (push) Failing after 31s

Signed-off-by: sunyz <i@sunyz.net>
This commit is contained in:
sunyz 2025-01-24 16:17:44 +08:00
parent 6e650588c1
commit b04e1fc72d
Signed by: realSunyz
SSH Key Fingerprint: SHA256:5dk3slVnWtJYlwrnURrUYXoimuSx8Vi9pbs4n3XoGH0
3 changed files with 20 additions and 19 deletions

19
main.go
View File

@ -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)
}
})

View File

@ -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

View File

@ -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
}