From 96830fc35ea6e7eca3a1c7f619ca8e1d11dd75ef Mon Sep 17 00:00:00 2001 From: mput Date: Thu, 25 Jul 2024 13:10:44 +0100 Subject: [PATCH] add delete btn --- app/bot/bot.go | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/app/bot/bot.go b/app/bot/bot.go index 78783d9..dfd9df3 100644 --- a/app/bot/bot.go +++ b/app/bot/bot.go @@ -98,6 +98,7 @@ func (bot *Bot) Start() error { dispatcher.AddHandler(handlers.NewCommand("/", wrapUserResponse(bot.comment, "comment"))) dispatcher.AddHandler(handlers.NewMessage(nil, wrapUserResponse(bot.proposeTransaction, "propose-transaction"))) dispatcher.AddHandler(handlers.NewCallback(isConfirmCallback, bot.confirmTransaction)) + dispatcher.AddHandler(handlers.NewCallback(isDeleteCallback, bot.deleteTransaction)) // Start receiving updates. err = updater.StartPolling(bot.bot, &ext.PollingOpts{ @@ -266,6 +267,10 @@ func isConfirmCallback(cb *gotgbot.CallbackQuery) bool { return strings.HasPrefix(cb.Data, confirmPrefix) } +func isDeleteCallback(cb *gotgbot.CallbackQuery) bool { + return strings.HasPrefix(cb.Data, deletePrefix) +} + func (bot *Bot) confirmTransaction(_ *gotgbot.Bot, ctx *ext.Context) error { cq := ctx.CallbackQuery @@ -348,6 +353,42 @@ func (bot *Bot) confirmTransaction(_ *gotgbot.Bot, ctx *ext.Context) error { return nil } +func (bot *Bot) deleteTransaction(_ *gotgbot.Bot, ctx *ext.Context) error { + cq := ctx.CallbackQuery + + key := strings.TrimPrefix(cq.Data, deletePrefix) + err := bot.teledger.DeleteTransaction(key) + + if err != nil { + _, _ = bot.bot.AnswerCallbackQuery(cq.Id, &gotgbot.AnswerCallbackQueryOpts{ + ShowAlert: true, + Text: fmt.Sprintf("🛑️ Error!\n%s", err) , + }) + + return nil + } + + _, err = bot.bot.DeleteMessage(cq.Message.GetChat().Id, cq.Message.GetMessageId(), nil) + + if err != nil { + slog.Error("unable to edit message", "error", err) + _, _ = bot.bot.AnswerCallbackQuery(cq.Id, &gotgbot.AnswerCallbackQueryOpts{ + ShowAlert: true, + Text: fmt.Sprintf("Can't delete message: %v", err), + }) + return nil + } + + _, err = bot.bot.AnswerCallbackQuery(cq.Id, &gotgbot.AnswerCallbackQueryOpts{ + Text: "✔️ confirmed", + }) + + if err != nil { + slog.Error("unable to answer callback query", "error", err) + } + return nil +} + func (bot *Bot) showReport(ctx *ext.Context) (string, *gotgbot.SendMessageOpts, error) { cq := ctx.CallbackQuery _, err := bot.bot.AnswerCallbackQuery(cq.Id, &gotgbot.AnswerCallbackQueryOpts{