Skip to content

Commit

Permalink
Merge pull request #6 from lvyonghuan/main
Browse files Browse the repository at this point in the history
对输入换行和程序崩溃问题做了一些初步的处理
  • Loading branch information
SuInk committed Mar 26, 2023
2 parents ce6b552 + 2a31e48 commit 1cf5659
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 11 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
config.cfg
main.exe
.idea
main
main
QQ-ChatGPT-Bot
37 changes: 29 additions & 8 deletions cmd/chatgpt/chatgpt.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"QQ-ChatGPT-Bot/config"
"bytes"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
Expand Down Expand Up @@ -54,13 +53,30 @@ func Client() (http.Client, error) {
// GenerateText 调用openai的API生成文本
func GenerateText(text string) string {
log.Println("正在调用OpenAI API生成文本...", text)
postData := []byte(fmt.Sprintf(`{
"model": "%s",
"messages": %s,
"max_tokens": %d,
"temperature": %.1f
}`, config.Cfg.OpenAi.Model, "[{\"role\": \"user\", \"content\": \""+text+"\"}]", config.Cfg.OpenAi.MaxTokens, config.Cfg.OpenAi.Temperature))
req, _ := http.NewRequest("POST", OpenaiApiUrl, bytes.NewBuffer(postData))
message := struct {
Role string `json:"role"`
Content string `json:"content"`
}{
Role: "user",
Content: text,
}
postData := struct {
Model string `json:"model"`
Messages []interface{} `json:"messages"`
MaxTokens int `json:"max_tokens"`
Temperature float64 `json:"temperature"`
}{
Model: config.Cfg.OpenAi.Model,
Messages: []interface{}{message},
MaxTokens: config.Cfg.OpenAi.MaxTokens,
Temperature: float64(config.Cfg.OpenAi.Temperature),
}
postDataBytes, err := json.Marshal(postData)
if err != nil {
log.Println(err)
return ""
}
req, _ := http.NewRequest("POST", OpenaiApiUrl, bytes.NewBuffer(postDataBytes))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer "+config.Cfg.OpenAi.ApiKey)
client, err := Client()
Expand All @@ -70,8 +86,13 @@ func GenerateText(text string) string {
resp, err := client.Do(req)
if err != nil {
log.Println(err)
return ""
}
defer resp.Body.Close()
if resp == nil {
log.Println("response is nil")
return ""
}
body, _ := io.ReadAll(resp.Body)
var openAiRcv OpenAiRcv
err = json.Unmarshal(body, &openAiRcv)
Expand Down
16 changes: 14 additions & 2 deletions cmd/cqhttp/message.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,13 @@ func (bot *Bot) HandleMsg(isAt bool, rcvMsg RcvMsg) {
switch rcvMsg.MessageType {
case "private":
bot.MQ <- &rcvMsg
err := bot.SendPrivateMsg(rcvMsg.Sender.UserId, "[CQ:reply,id="+strconv.FormatInt(rcvMsg.MessageId, 10)+"]"+chatgpt.GenerateText(rcvMsg.Message))
msg := chatgpt.GenerateText(rcvMsg.Message)
var err error
if msg != "" {
err = bot.SendPrivateMsg(rcvMsg.Sender.UserId, "[CQ:reply,id="+strconv.FormatInt(rcvMsg.MessageId, 10)+"]"+msg)
} else {
err = bot.SendPrivateMsg(rcvMsg.Sender.UserId, "[CQ:reply,id="+strconv.FormatInt(rcvMsg.MessageId, 10)+"]"+"生成错误!")
}
if err != nil {
log.Println(err)
}
Expand All @@ -59,7 +65,13 @@ func (bot *Bot) HandleMsg(isAt bool, rcvMsg RcvMsg) {
return
}
bot.MQ <- &rcvMsg
err := bot.SendGroupMsg(rcvMsg.GroupId, "[CQ:reply,id="+strconv.FormatInt(rcvMsg.MessageId, 10)+"]"+chatgpt.GenerateText(rcvMsg.Message))
msg := chatgpt.GenerateText(rcvMsg.Message)
var err error
if msg != "" {
err = bot.SendGroupMsg(rcvMsg.GroupId, "[CQ:reply,id="+strconv.FormatInt(rcvMsg.MessageId, 10)+"]"+chatgpt.GenerateText(rcvMsg.Message))
} else {
err = bot.SendGroupMsg(rcvMsg.GroupId, "[CQ:reply,id="+strconv.FormatInt(rcvMsg.MessageId, 10)+"]"+"生成错误!")
}
if err != nil {
log.Println(err)
}
Expand Down

0 comments on commit 1cf5659

Please sign in to comment.