mirror of
https://github.com/woodchen-ink/Q58Bot.git
synced 2025-07-18 05:42:06 +08:00
消息处理器启动时加载提示回复数据
消息处理器启动过程中现在会从数据库加载提示回复数据。这保证了在启动时,所有必要的回复数据都已准备好,提高了效率和用户体验。 更改包括在`RunMessageHandler`函数中加载数据,并在`PromptReplyManager`中实现数据的线程安全加载。
This commit is contained in:
parent
b153581254
commit
c5acd7cd7c
@ -115,6 +115,14 @@ func processMessage(bot *tgbotapi.BotAPI, message *tgbotapi.Message, linkFilter
|
||||
func RunMessageHandler() error {
|
||||
log.Println("消息处理器启动...")
|
||||
|
||||
// 加载提示回复数据
|
||||
err := prompt_reply.Manager.LoadDataFromDatabase()
|
||||
if err != nil {
|
||||
log.Printf("加载提示回复数据失败: %v", err)
|
||||
// 考虑是否要因为这个错误停止启动
|
||||
// return fmt.Errorf("加载提示回复数据失败: %w", err)
|
||||
}
|
||||
|
||||
baseDelay := time.Second
|
||||
maxDelay := 5 * time.Minute
|
||||
delay := baseDelay
|
||||
|
@ -4,6 +4,7 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/woodchen-ink/Q58Bot/core"
|
||||
@ -11,6 +12,33 @@ import (
|
||||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||||
)
|
||||
|
||||
type PromptReplyManager struct {
|
||||
promptReplies map[string]string
|
||||
mu sync.RWMutex
|
||||
}
|
||||
|
||||
var Manager *PromptReplyManager
|
||||
|
||||
func init() {
|
||||
Manager = &PromptReplyManager{
|
||||
promptReplies: make(map[string]string),
|
||||
}
|
||||
}
|
||||
|
||||
func (prm *PromptReplyManager) LoadDataFromDatabase() error {
|
||||
prm.mu.Lock()
|
||||
defer prm.mu.Unlock()
|
||||
|
||||
promptReplies, err := core.DB.GetAllPromptReplies()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
prm.promptReplies = promptReplies
|
||||
|
||||
log.Printf("提示回复: 已从数据库加载 %d 条提示回复", len(prm.promptReplies))
|
||||
return nil
|
||||
}
|
||||
func SetPromptReply(prompt, reply string) error {
|
||||
err := core.DB.AddPromptReply(prompt, reply)
|
||||
if err != nil {
|
||||
@ -18,14 +46,11 @@ func SetPromptReply(prompt, reply string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// 获取当前所有的 prompt replies 来确认添加成功
|
||||
promptReplies, err := core.DB.GetAllPromptReplies()
|
||||
if err != nil {
|
||||
log.Printf("提示回复: %s 添加后获取提示回复列表出错: %v", time.Now().Format("2006/01/02 15:04:05"), err)
|
||||
} else {
|
||||
log.Printf("提示回复: %s 设置提示回复成功。当前提示回复数量: %d", time.Now().Format("2006/01/02 15:04:05"), len(promptReplies))
|
||||
}
|
||||
Manager.mu.Lock()
|
||||
Manager.promptReplies[prompt] = reply
|
||||
Manager.mu.Unlock()
|
||||
|
||||
log.Printf("提示回复: %s 设置提示回复成功。当前提示回复数量: %d", time.Now().Format("2006/01/02 15:04:05"), len(Manager.promptReplies))
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -36,14 +61,11 @@ func DeletePromptReply(prompt string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// 获取当前所有的 prompt replies 来确认删除成功
|
||||
promptReplies, err := core.DB.GetAllPromptReplies()
|
||||
if err != nil {
|
||||
log.Printf("提示回复: %s 删除后获取提示回复列表出错: %v", time.Now().Format("2006/01/02 15:04:05"), err)
|
||||
} else {
|
||||
log.Printf("提示回复: %s 删除提示回复成功。当前提示回复数量: %d", time.Now().Format("2006/01/02 15:04:05"), len(promptReplies))
|
||||
}
|
||||
Manager.mu.Lock()
|
||||
delete(Manager.promptReplies, prompt)
|
||||
Manager.mu.Unlock()
|
||||
|
||||
log.Printf("提示回复: %s 删除提示回复成功。当前提示回复数量: %d", time.Now().Format("2006/01/02 15:04:05"), len(Manager.promptReplies))
|
||||
return nil
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user