Add working response to zookeeping request
This commit is contained in:
73
domains/announces/v1/announces.go
Normal file
73
domains/announces/v1/announces.go
Normal file
@@ -0,0 +1,73 @@
|
||||
// Fantasy World Zookeeper Helper Bot
|
||||
// Copyright (c) 2018-2019 Vladimir "fat0troll" Hodakov
|
||||
|
||||
package announcesv1
|
||||
|
||||
import (
|
||||
tdlib "github.com/Arman92/go-tdlib"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func fwMessagesFilter(msg *tdlib.TdMessage) bool {
|
||||
updateMsg := (*msg).(*tdlib.UpdateNewMessage)
|
||||
// We need only messages, created by @FWorldBot
|
||||
return updateMsg.Message.ViaBotUserID == 6.74929718e+08
|
||||
}
|
||||
|
||||
// ZookeeperReceiver adds announcement functionality to bot
|
||||
func ZookeeperReceiver(client *tdlib.Client) {
|
||||
log.Debug().Msg("Adding receiver for @FWorld_bot messages...")
|
||||
// Here we can add a receiver to retreive any message type we want
|
||||
// We like to get UpdateNewMessage events and with a specific FilterFunc
|
||||
receiver := client.AddEventReceiver(&tdlib.UpdateNewMessage{}, fwMessagesFilter, 5)
|
||||
log.Debug().Msg("Receiver added")
|
||||
go func() {
|
||||
for newMsg := range receiver.Chan {
|
||||
updateMsg := (newMsg).(*tdlib.UpdateNewMessage)
|
||||
// Check if message text contains needed battle data
|
||||
msgText := updateMsg.Message.Content.(*tdlib.MessageText)
|
||||
if strings.HasPrefix(msgText.Text.Text, "Я встретил") {
|
||||
log.Debug().Msgf("%s", msgText.Text.Text)
|
||||
battleType := ""
|
||||
battleTag := ""
|
||||
if strings.Contains(msgText.Text.Text, "Огров") {
|
||||
battleType = "Огры!"
|
||||
}
|
||||
if strings.Contains(msgText.Text.Text, "Буйволов") {
|
||||
battleType = "Буйволы!"
|
||||
}
|
||||
if strings.Contains(msgText.Text.Text, "Кабанов") {
|
||||
battleType = "Кабаны!"
|
||||
}
|
||||
switch updateMsg.Message.ReplyMarkup.(type) {
|
||||
case *tdlib.ReplyMarkupInlineKeyboard:
|
||||
keyboard := updateMsg.Message.ReplyMarkup.(*tdlib.ReplyMarkupInlineKeyboard)
|
||||
if len(keyboard.Rows) > 0 {
|
||||
if len(keyboard.Rows[0]) > 0 {
|
||||
button := keyboard.Rows[0][0]
|
||||
switch button.Type.(type) {
|
||||
case *tdlib.InlineKeyboardButtonTypeSwitchInline:
|
||||
buttonQuery := button.Type.(*tdlib.InlineKeyboardButtonTypeSwitchInline)
|
||||
battleTag = string(buttonQuery.Query)
|
||||
default:
|
||||
log.Error().Msg("Invalid button type")
|
||||
}
|
||||
}
|
||||
}
|
||||
default:
|
||||
log.Error().Msg("Invalid keyboard type")
|
||||
}
|
||||
log.Debug().Msgf("Battle type: %s", battleType)
|
||||
log.Debug().Msgf("Battle tag: %s", battleTag)
|
||||
|
||||
replyText := battleType + " " + battleTag
|
||||
|
||||
reply := tdlib.NewInputMessageText(tdlib.NewFormattedText(replyText, nil), true, true)
|
||||
_, err := client.SendMessage(updateMsg.Message.ChatID, 0, false, true, nil, reply)
|
||||
if err != nil {
|
||||
log.Error().Err(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}()
|
||||
}
|
22
domains/announces/v1/exported.go
Normal file
22
domains/announces/v1/exported.go
Normal file
@@ -0,0 +1,22 @@
|
||||
// Fantasy World Zookeeper Helper Bot
|
||||
// Copyright (c) 2018-2019 Vladimir "fat0troll" Hodakov
|
||||
|
||||
package announcesv1
|
||||
|
||||
import (
|
||||
"github.com/rs/zerolog"
|
||||
"lab.wtfteam.pro/fat0troll/fw_zookeeper_helper/context"
|
||||
)
|
||||
|
||||
var (
|
||||
c *context.Context
|
||||
log zerolog.Logger
|
||||
)
|
||||
|
||||
// New initializes package
|
||||
func New(cc *context.Context) {
|
||||
c = cc
|
||||
log = c.Logger.With().Str("domain", "announces").Int("version", 1).Logger()
|
||||
|
||||
log.Info().Msg("Adding announces handler to Telegram instance")
|
||||
}
|
Reference in New Issue
Block a user