Add callbacks (might not work)
This commit is contained in:
parent
707389387a
commit
16e0dbd129
1 changed files with 62 additions and 0 deletions
62
main.go
62
main.go
|
@ -52,6 +52,14 @@ func main() {
|
||||||
api.HandleWebhook(cfg.Bind, cfg.WebhookPath, webhook)
|
api.HandleWebhook(cfg.Bind, cfg.WebhookPath, webhook)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type CardFaceFlipPics struct {
|
||||||
|
Normal string
|
||||||
|
Flipped string
|
||||||
|
Scryfall string
|
||||||
|
Edhrec string
|
||||||
|
MCM string
|
||||||
|
}
|
||||||
|
|
||||||
func webhook(update tg.APIUpdate) {
|
func webhook(update tg.APIUpdate) {
|
||||||
// Handle inline queries (99% of the usage I hope)
|
// Handle inline queries (99% of the usage I hope)
|
||||||
if update.Inline != nil {
|
if update.Inline != nil {
|
||||||
|
@ -99,6 +107,18 @@ func webhook(update tg.APIUpdate) {
|
||||||
face := card.ImageUris
|
face := card.ImageUris
|
||||||
if card.ImageUris.Large == "" && card.CardFaces != nil {
|
if card.ImageUris.Large == "" && card.CardFaces != nil {
|
||||||
face = card.CardFaces[0].ImageUris
|
face = card.CardFaces[0].ImageUris
|
||||||
|
facedata, _ := json.Marshal(CardFaceFlipPics{
|
||||||
|
Normal: face.Large,
|
||||||
|
Flipped: card.CardFaces[1].ImageUris.Large,
|
||||||
|
Scryfall: card.ScryfallURI,
|
||||||
|
Edhrec: card.RelatedUris.Edhrec,
|
||||||
|
MCM: card.PurchaseUris.Cardmarket,
|
||||||
|
})
|
||||||
|
|
||||||
|
buttons = append(buttons, tg.APIInlineKeyboardButton{
|
||||||
|
Text: "🔄",
|
||||||
|
CallbackData: string(facedata),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
photos[i] = tg.APIInlineQueryResultPhoto{
|
photos[i] = tg.APIInlineQueryResultPhoto{
|
||||||
Type: "photo",
|
Type: "photo",
|
||||||
|
@ -176,6 +196,48 @@ func webhook(update tg.APIUpdate) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle inline callback requests (flipped cards)
|
||||||
|
if update.Callback != nil {
|
||||||
|
var data CardFaceFlipPics
|
||||||
|
err := json.Unmarshal([]byte(*update.Callback.Data), &data)
|
||||||
|
if err == nil {
|
||||||
|
buttons := []tg.APIInlineKeyboardButton{
|
||||||
|
{
|
||||||
|
Text: "Scryfall",
|
||||||
|
URL: data.Scryfall,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if data.Edhrec != "" {
|
||||||
|
buttons = append(buttons, tg.APIInlineKeyboardButton{
|
||||||
|
Text: "EDHREC",
|
||||||
|
URL: data.Edhrec,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if data.MCM != "" {
|
||||||
|
buttons = append(buttons, tg.APIInlineKeyboardButton{
|
||||||
|
Text: "MCM",
|
||||||
|
URL: data.MCM,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
api.EditMedia(tg.ClientEditMediaData{
|
||||||
|
ChatID: update.Message.Chat.ChatID,
|
||||||
|
MessageID: update.Message.MessageID,
|
||||||
|
Media: tg.APIInputMediaPhoto{
|
||||||
|
Type: "photo",
|
||||||
|
Media: data.Flipped,
|
||||||
|
},
|
||||||
|
ReplyMarkup: &tg.APIInlineKeyboardMarkup{
|
||||||
|
InlineKeyboard: [][]tg.APIInlineKeyboardButton{buttons},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
fmt.Println("Unknown callback: ", *update.Callback.Data)
|
||||||
|
}
|
||||||
|
api.AnswerCallback(tg.ClientCallbackQueryData{
|
||||||
|
QueryID: update.Callback.ID,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getCardRequests(str string) (out []string) {
|
func getCardRequests(str string) (out []string) {
|
||||||
|
|
Loading…
Reference in a new issue