one-api/common/telegram/conversation.go
2024-02-23 18:24:25 +08:00

47 lines
1.3 KiB
Go

package telegram
import (
"fmt"
"github.com/PaulSonOfLars/gotgbot/v2"
"github.com/PaulSonOfLars/gotgbot/v2/ext"
"github.com/PaulSonOfLars/gotgbot/v2/ext/handlers"
"github.com/PaulSonOfLars/gotgbot/v2/ext/handlers/conversation"
"github.com/PaulSonOfLars/gotgbot/v2/ext/handlers/filters/callbackquery"
)
func cancelConversationInlineKeyboard() gotgbot.InlineKeyboardMarkup {
bt := gotgbot.InlineKeyboardMarkup{
InlineKeyboard: [][]gotgbot.InlineKeyboardButton{{
{Text: "取消", CallbackData: "cancel"},
}},
}
return bt
}
func cancelConversationOpts() *handlers.ConversationOpts {
return &handlers.ConversationOpts{
Exits: []ext.Handler{handlers.NewCallback(callbackquery.Equal("cancel"), cancelConversation)},
StateStorage: conversation.NewInMemoryStorage(conversation.KeyStrategySenderAndChat),
AllowReEntry: true,
}
}
func cancelConversation(b *gotgbot.Bot, ctx *ext.Context) error {
cb := ctx.Update.CallbackQuery
_, err := cb.Answer(b, &gotgbot.AnswerCallbackQueryOpts{
Text: "已取消!",
})
if err != nil {
return fmt.Errorf("failed to answer start callback query: %w", err)
}
_, err = cb.Message.Delete(b, nil)
if err != nil {
return fmt.Errorf("failed to send cancel message: %w", err)
}
return handlers.EndConversation()
}