Browse Source

Fix another lock after first received update

master
Vladimir Hodakov 1 year ago
parent
commit
3c9390a295
Signed by: fat0troll GPG Key ID: 673980B6882F82C6
1 changed files with 42 additions and 40 deletions
  1. + 42
    - 40
      domains/announces/v1/announces.go

+ 42
- 40
domains/announces/v1/announces.go

@ -24,54 +24,56 @@ func ZookeeperReceiver(client *tdlib.Client) {
receiver := client.AddEventReceiver(&tdlib.UpdateNewMessage{}, fwMessagesFilter, 5)
log.Debug().Msg("Receiver added")
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")
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")
}
default:
log.Error().Msg("Invalid keyboard type")
}
log.Debug().Msgf("Battle type: %s", battleType)
log.Debug().Msgf("Battle tag: %s", battleTag)
log.Debug().Msgf("Battle type: %s", battleType)
log.Debug().Msgf("Battle tag: %s", battleTag)
replyText := battleType + " " + battleTag
replyText := battleType + " " + battleTag
reply := tdlib.NewInputMessageText(tdlib.NewFormattedText(replyText, nil), true, true)
_, err := client.SendMessage(announcerID, 0, false, true, nil, reply)
if err != nil {
log.Error().Err(err)
reply := tdlib.NewInputMessageText(tdlib.NewFormattedText(replyText, nil), true, true)
_, err := client.SendMessage(announcerID, 0, false, true, nil, reply)
if err != nil {
log.Error().Err(err)
}
}
}
<-c.ShutdownDone
return
}
}()
}

Loading…
Cancel
Save