mirror of
https://github.com/awfufu/go-hurobot.git
synced 2026-03-01 13:39:42 +08:00
refactor: optimize some functions without changing functionality
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user