v1.0.0 beta 15

This commit is contained in:
2026-03-12 17:45:53 +03:00
parent 3b6bb82e04
commit d6e2daec04
28 changed files with 1224 additions and 126 deletions

View File

@@ -3,11 +3,14 @@ package laniakea
import (
"encoding/base64"
"encoding/json"
"errors"
"strings"
"git.nix13.pw/scuroneko/laniakea/tgapi"
)
var ErrInvalidPayloadType = errors.New("invalid payload type")
func (bot *Bot[T]) handle(u *tgapi.Update) {
ctx := &MsgContext{
Update: *u, Api: bot.api,
@@ -15,6 +18,7 @@ func (bot *Bot[T]) handle(u *tgapi.Update) {
errorTemplate: bot.errorTemplate,
l10n: bot.l10n,
draftProvider: bot.draftProvider,
payloadType: bot.payloadType,
}
for _, middleware := range bot.middlewares {
middleware.Execute(ctx, bot.dbContext)
@@ -87,8 +91,7 @@ func (bot *Bot[T]) handleMessage(update *tgapi.Update, ctx *MsgContext) {
}
func (bot *Bot[T]) handleCallback(update *tgapi.Update, ctx *MsgContext) {
data := new(CallbackData)
err := json.Unmarshal([]byte(update.CallbackQuery.Data), data)
data, err := bot.decodePayload(update.CallbackQuery.Data)
if err != nil {
bot.logger.Errorln(err)
return
@@ -152,3 +155,29 @@ func decodeBase64Payload(s string) (CallbackData, error) {
}
return decodeJsonPayload(string(b))
}
// func encodePayload(payloadType BotPayloadType, d CallbackData) (string, error) {
// switch payloadType {
// case BotPayloadBase64:
// return encodeBase64Payload(d)
// case BotPayloadJson:
// return encodeJsonPayload(d)
// }
// return "", ErrInvalidPayloadType
// }
func decodePayload(payloadType BotPayloadType, s string) (CallbackData, error) {
switch payloadType {
case BotPayloadBase64:
return decodeBase64Payload(s)
case BotPayloadJson:
return decodeJsonPayload(s)
}
return CallbackData{}, ErrInvalidPayloadType
}
// func (bot *Bot[T]) encodePayload(d CallbackData) (string, error) {
// return encodePayload(bot.payloadType, d)
// }
func (bot *Bot[T]) decodePayload(s string) (CallbackData, error) {
return decodePayload(bot.payloadType, s)
}