MCPcopy Index your code
hub / github.com/FloatTech/ZeroBot-Plugin / initUserHabits

Function initUserHabits

plugin/handou/habits.go:33–89  ·  view source on GitHub ↗

初始化用户习惯

()

Source from the content-addressed store, hash-verified

31
32// 初始化用户习惯
33func initUserHabits() error {
34 userHabits = &UserHabits{
35 habits: make(map[string]int),
36 bigrams: make(map[string]int),
37 idioms: make(map[string]int),
38 }
39
40 if file.IsNotExist(userHabitsFile) {
41 f, err := os.Create(userHabitsFile)
42 if err != nil {
43 return errors.New("创建用户习惯库时发生错误: " + err.Error())
44 }
45 _ = f.Close()
46 return saveHabits()
47 }
48
49 // 读取现有习惯数据
50 habitsFile, err := os.ReadFile(userHabitsFile)
51 if err != nil {
52 return errors.New("读取用户习惯库时发生错误: " + err.Error())
53 }
54
55 var savedData struct {
56 Habits map[string]int `json:"habits"`
57 Bigrams map[string]int `json:"bigrams"`
58 Idioms map[string]int `json:"idioms"`
59 TotalWords int `json:"total_words"`
60 TotalIdioms int `json:"total_idioms"`
61 LastUpdate time.Time `json:"last_update"`
62 }
63
64 if err := json.Unmarshal(habitsFile, &savedData); err != nil {
65 // 如果是旧格式,尝试兼容
66 var oldHabits map[string]int
67 if err := json.Unmarshal(habitsFile, &oldHabits); err == nil {
68 savedData.Habits = oldHabits
69 // 从旧数据重新计算统计信息
70 for _, count := range oldHabits {
71 savedData.TotalWords += count
72 }
73 } else {
74 return errors.New("解析用户习惯库时发生错误: " + err.Error())
75 }
76 }
77
78 userHabits.mu.Lock()
79 defer userHabits.mu.Unlock()
80
81 userHabits.habits = savedData.Habits
82 userHabits.bigrams = savedData.Bigrams
83 userHabits.idioms = savedData.Idioms
84 userHabits.totalWords = savedData.TotalWords
85 userHabits.totalIdioms = savedData.TotalIdioms
86 userHabits.lastUpdate = savedData.LastUpdate
87
88 return nil
89}
90

Callers 2

game.goFile · 0.85
updateHabitsFunction · 0.85

Calls 2

saveHabitsFunction · 0.85
CloseMethod · 0.45

Tested by

no test coverage detected