telegram/main.go

72 lines
1.5 KiB
Go

package main
import (
"encoding/json"
"fmt"
"io"
"log"
"math/rand"
"os"
"penahub.gitlab.yandexcloud.net/backend/quiz/telegram/client"
"penahub.gitlab.yandexcloud.net/backend/quiz/telegram/models"
"penahub.gitlab.yandexcloud.net/backend/quiz/telegram/respondent"
stateManager "penahub.gitlab.yandexcloud.net/backend/quiz/telegram/state_manager"
"time"
)
var dataSetMap map[string]models.Question
func init() {
f, err := os.Open("treedata.json")
if err != nil {
log.Fatalf("err open json file: %v", err)
}
defer f.Close()
values, err := io.ReadAll(f)
if err != nil {
log.Fatalf("err read json file: %v", err)
}
var dataSet []models.Question
err = json.Unmarshal(values, &dataSet)
if err != nil {
log.Fatalf("err unmarshall json: %v", err)
}
dataSetMap = make(map[string]models.Question)
for _, data := range dataSet {
dataSetMap[data.Title] = data
}
}
func main() {
rand.Seed(time.Now().UnixNano())
mockClient := client.NewClient()
mockStateManager := stateManager.NewStateManager(stateManager.Deps{
Questions: dataSetMap,
State: "q00",
Client: mockClient,
})
mockRespondent := respondent.NewRespondent(mockStateManager)
mockStateManager.SendQuestion()
for {
if _, ok := dataSetMap[mockStateManager.State]; !ok {
fmt.Println("state not found")
break
}
mockRespondent.Respond("q00")
fmt.Println("respond")
}
for number, msg := range mockClient.Messages {
fmt.Println(fmt.Sprintf("message %d: %s", number, msg))
}
//}
fmt.Println("Complete")
}