44 lines
1.3 KiB
Go

package queries
import (
"context"
"log/slog"
"time"
"git.maximotejeda.com/maximo/telegram-base-bot/internal/application/middlewares"
"github.com/go-telegram/bot"
"github.com/go-telegram/bot/models"
)
// RegisterQueries
func RegisterQueries(ctx context.Context, log *slog.Logger, b *bot.Bot){
b.RegisterHandler(bot.HandlerTypeCallbackQueryData, "button",bot.MatchTypeContains, HandleQuery, middlewares.LogMessage, middlewares.SingleFlight)
b.RegisterHandler(bot.HandlerTypeCallbackQueryData, "operation=cancel",bot.MatchTypeContains, deleteQuery, middlewares.LogMessage, middlewares.SingleFlight)
}
// HandleQuery
// Example of handle query
func HandleQuery(ctx context.Context, b *bot.Bot, update *models.Update){
// Simulate work
time.Sleep(2*time.Second)
// send a response
b.SendMessage(ctx, &bot.SendMessageParams{
ChatID: update.CallbackQuery.From.ID, // seems that query can come only fron one source USER
Text: "handling query " + update.CallbackQuery.Data,
})
}
// deleteQuery
// Delete message sending the query
func deleteQuery(ctx context.Context, b *bot.Bot, update *models.Update){
//Message to delete
mtd := update.CallbackQuery.Message.Message.ID
// Chat where message come from
cwmcf := update.CallbackQuery.From.ID
b.DeleteMessage(ctx, &bot.DeleteMessageParams{
ChatID: cwmcf,
MessageID: mtd,
})
}