58 lines
1.8 KiB
Go
58 lines
1.8 KiB
Go
package handler
|
||
|
||
import (
|
||
"gitea.neur0tx.site/Neur0toxine/vegapokerbot/internal/handler/iface"
|
||
"github.com/mymmrac/telego"
|
||
tu "github.com/mymmrac/telego/telegoutil"
|
||
)
|
||
|
||
// kaomojis contains a list of some hand-picked kaomojis.
|
||
//
|
||
// Initially I wanted to make inline search feature for Redmine integration, but I realized that I don't have any data
|
||
// about target chat in the inline webhook. Ergo, I can't really say which Redmine integration to pick in case user
|
||
// is registered and added more than one chat. Also, other chat members won't be able to use the feature since they
|
||
// are not registered in the chat and Telegram doesn't allow us to get a list of chat members.
|
||
//
|
||
// Well, I tried. Maybe I'll do something with these limitations. Someday. Or not. Who knows? Not me!
|
||
var kaomojis = []string{
|
||
"(●´ω`●)",
|
||
"( ͡° ͜ʖ ͡°)",
|
||
"¯\\_(ツ)_/¯",
|
||
"(╯°□°)╯︵ ┻━┻",
|
||
"┻━┻ ︵╰(°□°╰)",
|
||
"(☞゚ヮ゚)☞ ┻━┻",
|
||
"(ノಠ益ಠ)ノ",
|
||
"┬─┬ノ( º _ ºノ)",
|
||
"ლ(ಠ_ಠლ)",
|
||
"( つ ◕_◕ )つ",
|
||
"◔_◔",
|
||
"●_●",
|
||
}
|
||
|
||
type InlineQueryHandler struct {
|
||
iface.Base
|
||
}
|
||
|
||
func NewInlineQueryHandler(app iface.App) Handler {
|
||
return &InlineQueryHandler{iface.NewBase(app, 0, 0)}
|
||
}
|
||
|
||
func (h *InlineQueryHandler) Handle(wh telego.Update) error {
|
||
return h.App.TG().AnswerInlineQuery(h.kaomojiResults(wh.InlineQuery.ID))
|
||
}
|
||
|
||
func (h *InlineQueryHandler) kaomojiResults(id string) *telego.AnswerInlineQueryParams {
|
||
results := make([]telego.InlineQueryResult, len(kaomojis))
|
||
for i, kaomoji := range kaomojis {
|
||
results[i] = &telego.InlineQueryResultArticle{
|
||
Type: "article",
|
||
ID: kaomoji,
|
||
Title: kaomoji,
|
||
InputMessageContent: &telego.InputTextMessageContent{
|
||
MessageText: kaomoji,
|
||
},
|
||
}
|
||
}
|
||
return tu.InlineQuery(id, results...)
|
||
}
|