修复日志记录方式,优化错误处理和提示信息

This commit is contained in:
wood chen 2024-09-22 18:11:56 +08:00
parent f56fd4e91a
commit cb7fc3254d
8 changed files with 49 additions and 29 deletions

View File

@ -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...)

View File

@ -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)
}
}()
}

View File

@ -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()
}
}

View File

@ -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",

View File

@ -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)
}
}
}

View File

@ -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...")
}
}
}

View File

@ -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 {

View File

@ -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 "检索提示回复时出错"
}