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