del button from accepted

This commit is contained in:
Smile Rex
2025-08-31 15:56:09 +03:00
parent a3411b733b
commit ad387a2fa7

View File

@@ -27,11 +27,12 @@ type DuelController struct {
FName string FName string
} }
Summ int Summ int
Inited bool Inited bool
MatchAccepted bool MatchAccepted bool
Bot *tele.Bot InitialMessage *tele.Message
DC *DataController Bot *tele.Bot
DC *DataController
} }
// Controller Init // Controller Init
@@ -90,7 +91,13 @@ func (s *DuelController) StartMatch(c tele.Context) error {
btnAccept := markup.Data("Принять", AcceptDuelButtonUnique) btnAccept := markup.Data("Принять", AcceptDuelButtonUnique)
markup.Inline(markup.Row(btnAccept)) markup.Inline(markup.Row(btnAccept))
return c.Send(fmt.Sprintf("%s начал дуель, ставка: %d", s.PlayerOne.FName, summ), markup) msg, err := s.Bot.Send(c.Chat(), fmt.Sprintf("%s начал дуель, ставка: %d", s.PlayerOne.FName, summ), markup)
if err != nil {
s.resetDuelState()
return err
}
s.InitialMessage = msg
return nil
} }
// Accept Match // Accept Match
@@ -124,9 +131,17 @@ func (s *DuelController) AcceptMatch(c tele.Context) error {
s.MatchAccepted = true s.MatchAccepted = true
s.Summ *= 2 s.Summ *= 2
go s.gameProccess(c.Chat()) if s.InitialMessage == nil {
log.Println("Error: InitialMessage is nil in AcceptMatch")
s.resetDuelState()
return c.Send("Произошла ошибка, дуэль отменена. Попробуйте начать заново.")
}
return c.Send(fmt.Sprintf("%s принимает участие в дуэли.", s.PlayerTwo.FName)) // Edit the original message to remove the button and show the second player.
s.Bot.Edit(s.InitialMessage, fmt.Sprintf("%s начал дуель, ставка: %d\n\n%s принимает участие в дуэли.", s.PlayerOne.FName, s.Summ/2, s.PlayerTwo.FName))
go s.gameProccess(s.InitialMessage)
return c.Respond()
} }
// Clear match // Clear match
@@ -150,18 +165,19 @@ func (s *DuelController) resetDuelState() {
s.Summ = 0 s.Summ = 0
s.Inited = false s.Inited = false
s.MatchAccepted = false s.MatchAccepted = false
s.InitialMessage = nil
} }
// Start Game // Start Game
func (s *DuelController) gameProccess(r tele.Recipient) { func (s *DuelController) gameProccess(msg *tele.Message) {
time.Sleep(time.Second * 3) time.Sleep(time.Second * 3)
msg, err := s.Bot.Send(r, fmt.Sprintf("Дуэль началась!\nНа кону: %d", s.Summ)) editedMsg, err := s.Bot.Edit(msg, fmt.Sprintf("Дуэль началась!\nНа кону: %d", s.Summ))
if err != nil { if err != nil {
log.Printf("Error sending duel start message: %v", err) log.Printf("Error sending duel start message: %v", err)
s.resetDuelState() // Reset state if we can't even send the message s.resetDuelState() // Reset state if we can't even send the message
return return
} }
s.RoundOne(msg) s.RoundOne(editedMsg)
} }
// Round One // Round One