Archived
1

Inline commands support (needed for pins handling)

This commit is contained in:
Vladimir Hodakov 2017-11-26 07:55:13 +04:00
parent fed4a52075
commit a6811f61fc
4 changed files with 62 additions and 7 deletions

View File

@ -56,13 +56,18 @@ func main() {
updates, _ := c.Bot.GetUpdatesChan(u) updates, _ := c.Bot.GetUpdatesChan(u)
for update := range updates { for update := range updates {
if update.Message == nil || update.Message.From == nil { if update.Message != nil {
continue if update.Message.From != nil {
} else if update.Message.Date < (int(time.Now().Unix()) - 1) { if update.Message.Date > (int(time.Now().Unix()) - 5) {
// Ignore old messages
continue
}
c.Router.RouteRequest(&update) c.Router.RouteRequest(&update)
} }
}
} else if update.InlineQuery != nil {
c.Router.RouteInline(&update)
} else if update.ChosenInlineResult != nil {
c.Log.Debug(update.ChosenInlineResult.ResultID)
} else {
continue
}
}
} }

View File

@ -36,7 +36,7 @@ func CreateLocationsUp(tx *sql.Tx) error {
if err4 != nil { if err4 != nil {
return err2 return err2
} }
_, err5 := tx.Exec("INSERT INTO `locations` VALUES(NULL, '🏙:', 'Город', NOW());") _, err5 := tx.Exec("INSERT INTO `locations` VALUES(NULL, '🏙', 'Город', NOW());")
if err5 != nil { if err5 != nil {
return err2 return err2
} }

48
lib/router/inline.go Normal file
View File

@ -0,0 +1,48 @@
// i2_bot Instinct PokememBro Bot
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
package router
import (
"github.com/go-telegram-bot-api/telegram-bot-api"
"strings"
)
// RouteInline routes inline requests to bot
func (r *Router) RouteInline(update *tgbotapi.Update) string {
availableCommands := make(map[string]string)
availableCommands["0"] = "🌲Лес"
availableCommands["1"] = "⛰Горы"
availableCommands["2"] = "🚣Озеро"
availableCommands["3"] = "🏙Город"
availableCommands["4"] = "🏛Катакомбы"
availableCommands["5"] = "⛪️Кладбище"
outputCommands := make(map[string]string)
for i, value := range availableCommands {
if strings.Contains(value, update.InlineQuery.Query) {
outputCommands[i] = value
}
}
results := make([]interface{}, 0)
for i, value := range outputCommands {
article := tgbotapi.NewInlineQueryResultArticle(i, "Команда боту @PokememBroBot:", value)
article.Description = value
results = append(results, article)
}
inlineConf := tgbotapi.InlineConfig{
InlineQueryID: update.InlineQuery.ID,
IsPersonal: true,
CacheTime: 0,
Results: results,
}
_, err := c.Bot.AnswerInlineQuery(inlineConf)
if err != nil {
c.Log.Error(err.Error())
}
return "fail"
}

View File

@ -10,5 +10,7 @@ import (
// RouterInterface implements Router for importing via appcontext. // RouterInterface implements Router for importing via appcontext.
type RouterInterface interface { type RouterInterface interface {
Init() Init()
RouteInline(update *tgbotapi.Update) string
RouteRequest(update *tgbotapi.Update) string RouteRequest(update *tgbotapi.Update) string
} }