diff --git a/core/bot_commands.go b/core/bot_commands.go index 6c2d9fe..c54b028 100644 --- a/core/bot_commands.go +++ b/core/bot_commands.go @@ -18,6 +18,7 @@ func RegisterCommands(bot *tgbotapi.BotAPI) error { {Command: "delwhite", Description: "从白名单移除域名"}, {Command: "listwhite", Description: "列出白名单域名"}, {Command: "prompt", Description: "设置提示词回复"}, + {Command: "prompt list", Description: "查看提示词列表"}, } config := tgbotapi.NewSetMyCommands(commands...) diff --git a/core/functions.go b/core/functions.go index 3586fce..c6c4612 100644 --- a/core/functions.go +++ b/core/functions.go @@ -31,7 +31,7 @@ func DeleteMessageAfterDelay(bot *tgbotapi.BotAPI, chatID int64, messageID int, deleteMsg := tgbotapi.NewDeleteMessage(chatID, messageID) _, err := bot.Request(deleteMsg) if err != nil { - log.Printf("删除消息失败 (ChatID: %d, MessageID: %d): %v", chatID, messageID, err) + log.Printf("DeleteMessageAfterDelay: 删除消息失败 (ChatID: %d, MessageID: %d): %v", chatID, messageID, err) } }() } diff --git a/service/binance/binance.go b/service/binance/binance.go index e6ae635..c65e83a 100644 --- a/service/binance/binance.go +++ b/service/binance/binance.go @@ -22,6 +22,8 @@ var ( singaporeTZ *time.Location ) +var logger = log.New(log.Writer(), "Binance: ", log.Ldate|log.Ltime|log.Lshortfile) + type tickerInfo struct { symbol string last float64 @@ -78,7 +80,7 @@ func sendPriceUpdate() { for _, symbol := range symbols { info, err := getTickerInfo(symbol) if err != nil { - log.Printf("Error getting ticker info for %s: %v", symbol, err) + logger.Printf("Error getting ticker info for %s: %v", symbol, err) continue } @@ -93,7 +95,7 @@ func sendPriceUpdate() { deleteMsg := tgbotapi.NewDeleteMessage(chatID, lastMsgID) _, err := bot.Request(deleteMsg) if err != nil { - log.Printf("Failed to delete previous message: %v", err) + logger.Printf("Failed to delete previous message: %v", err) } } @@ -101,7 +103,7 @@ func sendPriceUpdate() { msg.ParseMode = "Markdown" sentMsg, err := bot.Send(msg) if err != nil { - log.Printf("Failed to send message. Error: %v\nFull message content:\nChat ID: %d\nMessage: %s", err, chatID, message) + logger.Printf("Failed to send message. Error: %v\nFull message content:\nChat ID: %d\nMessage: %s", err, chatID, message) return } @@ -109,7 +111,7 @@ func sendPriceUpdate() { } func RunBinance() { - log.Println("Starting Binance service...") + logger.Println("Starting Binance service...") // 初始化必要的变量 botToken = core.BOT_TOKEN @@ -120,7 +122,7 @@ func RunBinance() { // 初始化并加载所有交易对 if err := LoadAllSymbols(); err != nil { - log.Fatalf("Failed to load all trading pairs: %v", err) + logger.Fatalf("Failed to load all trading pairs: %v", err) } // 启动每小时刷新交易对缓存 @@ -135,7 +137,7 @@ func RunBinance() { for range ticker.C { now := time.Now().In(singaporeTZ) if now.Minute() == 0 { - log.Println("Sending hourly price update...") + logger.Println("Sending hourly price update...") sendPriceUpdate() } } diff --git a/service/binance/symbols.go b/service/binance/symbols.go index 7fbe17f..8c6d1c4 100644 --- a/service/binance/symbols.go +++ b/service/binance/symbols.go @@ -3,7 +3,6 @@ package binance import ( "context" "fmt" - "log" "strings" "sync" "time" @@ -35,7 +34,7 @@ func LoadAllSymbols() error { } } - log.Printf("Loaded %d valid USDT trading pairs", len(allSymbols)) + logger.Printf("Loaded %d valid USDT trading pairs", len(allSymbols)) return nil } @@ -49,9 +48,9 @@ func StartSymbolRefresh(interval time.Duration) { ticker := time.NewTicker(interval) go func() { for range ticker.C { - log.Println("Refreshing trading pairs...") + logger.Println("Refreshing trading pairs...") if err := LoadAllSymbols(); err != nil { - log.Printf("Failed to refresh symbols: %v", err) + logger.Printf("Failed to refresh symbols: %v", err) } } }() @@ -66,7 +65,7 @@ func HandleSymbolQuery(bot *tgbotapi.BotAPI, message *tgbotapi.Message) { if strings.EqualFold(msg, coinName) { info, err := getTickerInfo(symbol) if err != nil { - log.Printf("Error getting ticker info for %s: %v", symbol, err) + logger.Printf("Error getting ticker info for %s: %v", symbol, err) return } replyMessage := fmt.Sprintf("*%s*\n价格: $%.7f\n24h 涨跌: %s\n", diff --git a/service/group_member_management/group_member_management.go b/service/group_member_management/group_member_management.go index 4facc07..543ec67 100644 --- a/service/group_member_management/group_member_management.go +++ b/service/group_member_management/group_member_management.go @@ -9,6 +9,8 @@ import ( "github.com/woodchen-ink/Q58Bot/core" ) +var logger = log.New(log.Writer(), "GroupMemberManagement: ", log.Ldate|log.Ltime|log.Lshortfile) + func HandleBanCommand(bot *tgbotapi.BotAPI, message *tgbotapi.Message) { // 检查是否是管理员 if !core.IsAdmin(message.From.ID) { @@ -27,7 +29,7 @@ func HandleBanCommand(bot *tgbotapi.BotAPI, message *tgbotapi.Message) { deleteConfig := tgbotapi.NewDeleteMessage(chatID, message.ReplyToMessage.MessageID) _, err := bot.Request(deleteConfig) if err != nil { - log.Printf("删除原消息时出错: %v", err) + logger.Printf("删除原消息时出错: %v", err) } // 踢出用户 @@ -41,7 +43,7 @@ func HandleBanCommand(bot *tgbotapi.BotAPI, message *tgbotapi.Message) { _, err = bot.Request(kickChatMemberConfig) if err != nil { - log.Printf("禁止用户时出错: %v", err) + logger.Printf("禁止用户时出错: %v", err) return } @@ -50,7 +52,7 @@ func HandleBanCommand(bot *tgbotapi.BotAPI, message *tgbotapi.Message) { msg := tgbotapi.NewMessage(chatID, banMessage) sentMsg, err := bot.Send(msg) if err != nil { - log.Printf("发送禁止消息时出错: %v", err) + logger.Printf("发送禁止消息时出错: %v", err) return } @@ -64,7 +66,7 @@ func deleteMessagesAfterDelay(bot *tgbotapi.BotAPI, chatID int64, messageIDs []i deleteConfig := tgbotapi.NewDeleteMessage(chatID, msgID) _, err := bot.Request(deleteConfig) if err != nil { - log.Printf("删除消息 %d 时出错: %v", msgID, err) + logger.Printf("删除消息 %d 时出错: %v", msgID, err) } } } diff --git a/service/message_handler.go b/service/message_handler.go index 7ab917f..4e3440e 100644 --- a/service/message_handler.go +++ b/service/message_handler.go @@ -57,7 +57,8 @@ func handleAdminCommand(bot *tgbotapi.BotAPI, message *tgbotapi.Message) { // processMessage 处理群里接收到的消息。 func processMessage(bot *tgbotapi.BotAPI, message *tgbotapi.Message, linkFilter *link_filter.LinkFilter) { // 记录消息内容 - log.Printf("Processing message: %s", message.Text) + // log.Printf("Processing message: %s", message.Text) + logger.Printf("Processing message: %s", message.Text) // 处理 /ban 命令 if message.ReplyToMessage != nil && message.Text == "/ban" { @@ -81,12 +82,12 @@ func processMessage(bot *tgbotapi.BotAPI, message *tgbotapi.Message, linkFilter } func RunMessageHandler() error { - log.Println("消息处理器启动...") + logger.Println("消息处理器启动...") // 加载提示回复数据 err := prompt_reply.Manager.LoadDataFromDatabase() if err != nil { - log.Printf("加载提示回复数据失败: %v", err) + logger.Printf("加载提示回复数据失败: %v", err) // 考虑是否要因为这个错误停止启动 // return fmt.Errorf("加载提示回复数据失败: %w", err) } @@ -97,7 +98,7 @@ func RunMessageHandler() error { for { err := func() error { - log.Printf("Attempting to create bot with token: %s", core.BOT_TOKEN) + logger.Printf("Attempting to create bot with token: %s", core.BOT_TOKEN) bot, err := tgbotapi.NewBotAPI(core.BOT_TOKEN) if err != nil { log.Printf("Error details: %+v", err) @@ -106,7 +107,7 @@ func RunMessageHandler() error { bot.Debug = core.DEBUG_MODE - log.Printf("Authorized on account %s", bot.Self.UserName) + logger.Printf("Authorized on account %s", bot.Self.UserName) err = core.RegisterCommands(bot) if err != nil { @@ -143,7 +144,7 @@ func RunMessageHandler() error { } } else { delay = baseDelay - log.Println("Bot disconnected. Attempting to restart immediately...") + logger.Println("Bot disconnected. Attempting to restart immediately...") } } } diff --git a/service/message_handler_utils.go b/service/message_handler_utils.go index 61612b1..2245b7c 100644 --- a/service/message_handler_utils.go +++ b/service/message_handler_utils.go @@ -30,6 +30,7 @@ func handleListKeywords(bot *tgbotapi.BotAPI, message *tgbotapi.Message) { keywords, err := core.DB.GetAllKeywords() if err != nil { core.SendErrorMessage(bot, message.Chat.ID, "获取关键词列表时发生错误。") + logger.Printf("Failed to get keywords: %v", err) return } @@ -56,12 +57,14 @@ func handleAddKeyword(bot *tgbotapi.BotAPI, message *tgbotapi.Message, keyword s exists, err := core.DB.KeywordExists(keyword) if err != nil { core.SendErrorMessage(bot, message.Chat.ID, "检查关键词时发生错误。") + logger.Printf("Failed to check keyword: %v", err) return } if !exists { err = core.DB.AddKeyword(keyword) if err != nil { core.SendErrorMessage(bot, message.Chat.ID, "添加关键词时发生错误。") + logger.Printf("Failed to add keyword: %v", err) } else { core.SendMessage(bot, message.Chat.ID, fmt.Sprintf("关键词 '%s' 已添加。", keyword)) } @@ -79,6 +82,7 @@ func handleDeleteKeyword(bot *tgbotapi.BotAPI, message *tgbotapi.Message, keywor removed, err := core.DB.RemoveKeyword(keyword) if err != nil { core.SendErrorMessage(bot, message.Chat.ID, fmt.Sprintf("删除关键词 '%s' 时发生错误: %v", keyword, err)) + logger.Printf("Failed to remove keyword '%s': %v", keyword, err) return } @@ -93,6 +97,7 @@ func handleSimilarKeywords(bot *tgbotapi.BotAPI, message *tgbotapi.Message, keyw similarKeywords, err := core.DB.SearchKeywords(keyword) if err != nil { core.SendErrorMessage(bot, message.Chat.ID, "搜索关键词时发生错误。") + logger.Printf("Failed to search keywords: %v", err) return } if len(similarKeywords) > 0 { @@ -111,6 +116,7 @@ func handleDeleteContainingKeyword(bot *tgbotapi.BotAPI, message *tgbotapi.Messa removedKeywords, err := core.DB.RemoveKeywordsContaining(substring) if err != nil { core.SendErrorMessage(bot, message.Chat.ID, "删除关键词时发生错误。") + logger.Printf("Failed to remove keywords: %v", err) return } if len(removedKeywords) > 0 { @@ -139,6 +145,7 @@ func handleListWhitelist(bot *tgbotapi.BotAPI, message *tgbotapi.Message) { whitelist, err := core.DB.GetAllWhitelist() if err != nil { core.SendErrorMessage(bot, message.Chat.ID, fmt.Sprintf("获取白名单时发生错误: %v", err)) + logger.Printf("Failed to get whitelist: %v", err) return } if len(whitelist) == 0 { @@ -158,6 +165,7 @@ func handleAddWhitelist(bot *tgbotapi.BotAPI, message *tgbotapi.Message, domain exists, err := core.DB.WhitelistExists(domain) if err != nil { core.SendErrorMessage(bot, message.Chat.ID, fmt.Sprintf("检查白名单时发生错误: %v", err)) + logger.Printf("Failed to check whitelist: %v", err) return } if exists { @@ -168,12 +176,14 @@ func handleAddWhitelist(bot *tgbotapi.BotAPI, message *tgbotapi.Message, domain err = core.DB.AddWhitelist(domain) if err != nil { core.SendErrorMessage(bot, message.Chat.ID, fmt.Sprintf("添加到白名单时发生错误: %v", err)) + logger.Printf("Failed to add to whitelist: %v", err) return } exists, err = core.DB.WhitelistExists(domain) if err != nil { core.SendErrorMessage(bot, message.Chat.ID, fmt.Sprintf("验证添加操作时发生错误: %v", err)) + logger.Printf("Failed to verify add operation: %v", err) return } if exists { @@ -193,6 +203,7 @@ func handleDeleteWhitelist(bot *tgbotapi.BotAPI, message *tgbotapi.Message, doma exists, err := core.DB.WhitelistExists(domain) if err != nil { core.SendErrorMessage(bot, message.Chat.ID, fmt.Sprintf("检查白名单时发生错误: %v", err)) + logger.Printf("Failed to check whitelist: %v", err) return } if !exists { @@ -203,12 +214,14 @@ func handleDeleteWhitelist(bot *tgbotapi.BotAPI, message *tgbotapi.Message, doma err = core.DB.RemoveWhitelist(domain) if err != nil { core.SendErrorMessage(bot, message.Chat.ID, fmt.Sprintf("从白名单删除时发生错误: %v", err)) + logger.Printf("Failed to remove from whitelist: %v", err) return } exists, err = core.DB.WhitelistExists(domain) if err != nil { core.SendErrorMessage(bot, message.Chat.ID, fmt.Sprintf("验证删除操作时发生错误: %v", err)) + logger.Printf("Failed to verify delete operation: %v", err) return } if !exists { diff --git a/service/prompt_reply/prompt_reply.go b/service/prompt_reply/prompt_reply.go index 1b9f517..7ddb746 100644 --- a/service/prompt_reply/prompt_reply.go +++ b/service/prompt_reply/prompt_reply.go @@ -12,6 +12,8 @@ import ( tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" ) +var logger = log.New(log.Writer(), "PromptReply: ", log.Ldate|log.Ltime|log.Lshortfile) + type PromptReplyManager struct { promptReplies map[string]string mu sync.RWMutex @@ -36,13 +38,13 @@ func (prm *PromptReplyManager) LoadDataFromDatabase() error { prm.promptReplies = promptReplies - log.Printf("提示回复: 已从数据库加载 %d 条提示回复", len(prm.promptReplies)) + logger.Printf("提示回复: 已从数据库加载 %d 条提示回复", len(prm.promptReplies)) return nil } func SetPromptReply(prompt, reply string) error { err := core.DB.AddPromptReply(prompt, reply) if err != nil { - log.Printf("提示回复: %s 设置提示回复失败: %v", time.Now().Format("2006/01/02 15:04:05"), err) + logger.Printf("提示回复: %s 设置提示回复失败: %v", time.Now().Format("2006/01/02 15:04:05"), err) return err } @@ -50,14 +52,14 @@ func SetPromptReply(prompt, reply string) error { Manager.promptReplies[prompt] = reply Manager.mu.Unlock() - log.Printf("提示回复: %s 设置提示回复成功。当前提示回复数量: %d", time.Now().Format("2006/01/02 15:04:05"), len(Manager.promptReplies)) + logger.Printf("提示回复: %s 设置提示回复成功。当前提示回复数量: %d", time.Now().Format("2006/01/02 15:04:05"), len(Manager.promptReplies)) return nil } func DeletePromptReply(prompt string) error { err := core.DB.DeletePromptReply(prompt) if err != nil { - log.Printf("提示回复: %s 删除提示回复失败: %v", time.Now().Format("2006/01/02 15:04:05"), err) + logger.Printf("提示回复: %s 删除提示回复失败: %v", time.Now().Format("2006/01/02 15:04:05"), err) return err } @@ -65,14 +67,14 @@ func DeletePromptReply(prompt string) error { delete(Manager.promptReplies, prompt) Manager.mu.Unlock() - log.Printf("提示回复: %s 删除提示回复成功。当前提示回复数量: %d", time.Now().Format("2006/01/02 15:04:05"), len(Manager.promptReplies)) + logger.Printf("提示回复: %s 删除提示回复成功。当前提示回复数量: %d", time.Now().Format("2006/01/02 15:04:05"), len(Manager.promptReplies)) return nil } func GetPromptReply(message string) (string, bool) { promptReplies, err := core.DB.GetAllPromptReplies() if err != nil { - log.Printf("Error getting prompt replies: %v", err) + logger.Printf("Error getting prompt replies: %v", err) return "", false } @@ -88,7 +90,7 @@ func GetPromptReply(message string) (string, bool) { func ListPromptReplies() string { replies, err := core.DB.GetAllPromptReplies() if err != nil { - log.Printf("获取及时回复时出错: %v", err) + logger.Printf("获取及时回复时出错: %v", err) return "检索提示回复时出错" }