fix: muffin response

This commit is contained in:
Siwoo Jeon 2025-06-21 16:21:20 +09:00
parent 11241231c9
commit 4e98143c61
Signed by: migan
GPG key ID: 036E9A8C5E8E48DA

View file

@ -5,7 +5,6 @@ import (
"fmt" "fmt"
"log" "log"
"math/rand" "math/rand"
"sync"
"git.wh64.net/muffin/goMuffin/configs" "git.wh64.net/muffin/goMuffin/configs"
"git.wh64.net/muffin/goMuffin/databases" "git.wh64.net/muffin/goMuffin/databases"
@ -88,53 +87,22 @@ func getMuffinResponse(s *discordgo.Session, question string) (string, error) {
var data []databases.Text var data []databases.Text
var learnData []databases.Learn var learnData []databases.Learn
var result string var result string
var wg sync.WaitGroup
ch1 := make(chan error)
ch2 := make(chan error)
x := rand.Intn(10) x := rand.Intn(10)
wg.Add(2) muffinCur, err := databases.Database.Texts.Find(context.TODO(), bson.D{{Key: "persona", Value: "muffin"}})
if err != nil {
// 머핀 데이터 return "살려주ㅅ세요", err
go func() {
cur, err := databases.Database.Texts.Find(context.TODO(), bson.D{{Key: "persona", Value: "muffin"}})
if err != nil {
ch1 <- err
}
defer cur.Close(context.TODO())
cur.All(context.TODO(), &data)
ch1 <- nil
wg.Done()
}()
// 지식 데이터
go func() {
cur, err := databases.Database.Learns.Find(context.TODO(), bson.D{{Key: "command", Value: question}})
if err != nil {
ch2 <- err
}
defer cur.Close(context.TODO())
cur.All(context.TODO(), &learnData)
ch2 <- nil
wg.Done()
}()
wg.Wait()
select {
case err := <-ch1:
if err != nil {
return "에러 발생", fmt.Errorf("muffin data error\n%s", err.Error())
}
case err := <-ch2:
if err != nil {
return "에러 발생", fmt.Errorf("learn data error\n%s", err.Error())
}
} }
learnCur, err := databases.Database.Learns.Find(context.TODO(), bson.D{{Key: "command", Value: question}})
if err != nil {
return "살려주ㅅ세요", err
}
defer muffinCur.Close(context.TODO())
defer learnCur.Close(context.TODO())
muffinCur.All(context.TODO(), &data)
learnCur.All(context.TODO(), &learnData)
if x > 2 && len(learnData) != 0 { if x > 2 && len(learnData) != 0 {
data := learnData[rand.Intn(len(learnData))] data := learnData[rand.Intn(len(learnData))]
@ -171,7 +139,7 @@ func getAIResponse(c *Chatbot, user *discordgo.User, question string) (string, e
Answer: resultText, Answer: resultText,
}) })
if err != nil { if err != nil {
return "", err return "AI에 문제가 생겼ㅇ어요.", err
} }
log.Printf("%s TOKEN: %d", user.ID, result.UsageMetadata.PromptTokenCount) log.Printf("%s TOKEN: %d", user.ID, result.UsageMetadata.PromptTokenCount)