refactor: optimize some functions without changing functionality

This commit is contained in:
AkashiNeko
2025-03-12 20:51:15 +08:00
parent c962c5b69b
commit c50c5595f9
3 changed files with 58 additions and 53 deletions

View File

@@ -12,7 +12,27 @@ import (
"strconv"
)
func sendRequest(requestJson string) (result string, err error) {
type Grok2Message struct {
Role string `json:"role"`
Content string `json:"content"`
}
type Grok2Request struct {
Messages []Grok2Message `json:"messages"`
Model string `json:"model"`
Stream bool `json:"stream"`
Temperature float64 `json:"temperature"`
}
func sendRequest(request *Grok2Request) (result string, err error) {
if request == nil {
return "", errors.New("request is nil")
}
jsonBytes, err := json.Marshal(request)
if err != nil {
return "", err
}
requestJson := string(jsonBytes)
apiKey := config.XaiApiKey
if apiKey == "" {
return "", errors.New("no x.ai api key")
@@ -103,39 +123,30 @@ func parseResult(successResult string) string {
)
}
func makeGrokRequest(args []string) string {
func parseArgs(args []string) string {
if len(args) == 0 {
return "请输入文本"
}
type Message struct {
Role string `json:"role"`
Content string `json:"content"`
}
type Request struct {
Messages []Message `json:"messages"`
Model string `json:"model"`
Stream bool `json:"stream"`
Temperature float64 `json:"temperature"`
}
request := &Request{}
request := &Grok2Request{}
request.Model = "grok-2-latest"
prevArg := ""
for _, arg := range args {
switch prevArg {
case "-s":
request.Messages = append(request.Messages, Message{
request.Messages = append(request.Messages, Grok2Message{
Role: "system",
Content: arg,
})
prevArg = ""
case "-a":
request.Messages = append(request.Messages, Message{
request.Messages = append(request.Messages, Grok2Message{
Role: "assistant",
Content: arg,
})
prevArg = ""
case "-u":
request.Messages = append(request.Messages, Message{
request.Messages = append(request.Messages, Grok2Message{
Role: "user",
Content: arg,
})
@@ -159,11 +170,7 @@ func makeGrokRequest(args []string) string {
if prevArg != "" {
return fmt.Sprintf("不完整的参数:... >>%s<<", prevArg)
}
jsonBytes, err := json.Marshal(request)
if err != nil {
return "啊哦!出错了!@氟氟"
}
ret, err := sendRequest(string(jsonBytes))
ret, err := sendRequest(request)
if err != nil {
return err.Error()
}
@@ -182,7 +189,7 @@ func cmd_grok2(c *qbot.Client, args []string, raw *qbot.Message) {
c.SendReplyMsg(raw, help)
return
}
c.SendReplyMsg(raw, makeGrokRequest(args[2:]))
c.SendReplyMsg(raw, parseArgs(args[2:]))
case "help":
c.SendReplyMsg(raw, help)
default:

View File

@@ -12,6 +12,8 @@ func customReply(c *qbot.Client, msg *qbot.Message) {
return
} else if strings.Contains(msg.RawMessage, "厉厉害害") {
c.SendGroupMsg(msg.GroupID, strings.Replace(msg.RawMessage, "厉厉害害", "可可爱爱", -1), false)
} else if strings.Contains(msg.RawMessage, "厉害害") {
c.SendGroupMsg(msg.GroupID, strings.Replace(msg.RawMessage, "厉害害", "可爱爱", -1), false)
} else if strings.Contains(msg.RawMessage, "厉害") {
c.SendGroupMsg(msg.GroupID, strings.Replace(msg.RawMessage, "厉害", "可爱", -1), false)
}

View File

@@ -1,11 +1,11 @@
package qbot
import (
"errors"
"time"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
var PsqlDB *gorm.DB = nil
@@ -37,28 +37,23 @@ func initPsqlDB(dsn string) error {
}
func saveDatabase(msg *Message) error {
var user Users
result := PsqlDB.First(&user, "user_id = ?", msg.Sender.UserID)
if result.Error != nil {
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
user = Users{
return PsqlDB.Transaction(func(tx *gorm.DB) error {
user := Users{
UserID: msg.Sender.UserID,
Name: msg.Sender.Nickname,
Nickname: msg.Sender.Card,
}
if err := PsqlDB.Create(&user).Error; err != nil {
return err
}
} else {
return result.Error
}
}
if user.Name != msg.Sender.Nickname {
if err := PsqlDB.Model(&user).Update("name", msg.Sender.Nickname).Error; err != nil {
if err := tx.Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "user_id"}},
DoUpdates: clause.Assignments(
map[string]interface{}{
"name": gorm.Expr("EXCLUDED.name"),
},
),
}).Where("users.name <> EXCLUDED.name").Create(&user).Error; err != nil {
return err
}
}
newMessage := Messages{
MsgID: msg.MessageID,
@@ -68,8 +63,9 @@ func saveDatabase(msg *Message) error {
Content: msg.RawMessage,
Deleted: false,
}
if err := PsqlDB.Create(&newMessage).Error; err != nil {
if err := tx.Create(&newMessage).Error; err != nil {
return err
}
return nil
})
}