package telegram import ( "app/commons/core" "app/commons/services" "fmt" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" "strings" ) // handleCallbackQuery 处理回调查询 func handleCallbackQuery(callback *tgbotapi.CallbackQuery) { data := callback.Data // 处理抢红包 if strings.HasPrefix(data, "grab_") { packetNo := strings.TrimPrefix(data, "grab_") grabRedPacket(callback, packetNo) return } // 其他回调 answerCallback(callback.ID, "未知操作") } // grabRedPacket 抢红包 func grabRedPacket(callback *tgbotapi.CallbackQuery, packetNo string) { telegramID := callback.From.ID username := callback.From.UserName // 直接调用 service 层抢红包 redPacketService := &services.RedPacketService{} record, err := redPacketService.GrabRedPacket( packetNo, 0, // Telegram用户暂无平台userId telegramID, username, ) if err != nil { answerCallback(callback.ID, err.Error()) core.Log.Infof("抢红包 - 用户: %s, 红包: %s, 结果: %s", username, packetNo, err.Error()) return } // 抢到红包 amount := record.Amount.InexactFloat64() answerCallback(callback.ID, fmt.Sprintf("🎉 恭喜抢到 %.2f VND!", amount)) // 更新原消息 editText := fmt.Sprintf("%s\n\n✅ @%s 抢到了 %.2f VND", callback.Message.Text, username, amount) editMessage(callback.Message.Chat.ID, callback.Message.MessageID, editText) core.Log.Infof("抢红包 - 用户: %s, 红包: %s, 金额: %s, 结果: 成功", username, packetNo, record.Amount.String()) }