// package battle_register -- регестрирует танк в битве
package battle_register
import (
"fmt"
"log"
"strings"
"time"
"wartank/pkg/components/section"
"wartank/pkg/components/sectionnet"
"wartank/pkg/types"
)
// СражениеРегистрация -- регистрирует танк к началу атаки
type СражениеРегистрация struct {
*section.Section
bot types.ИБот
net *sectionnet.SectionNet
счётРегистер int // Счётчик регистраций на сражение
}
// NewBattleRegister -- возвращает новый ожидатель битвы
func NewBattleRegister(bot types.ИБот) (*СражениеРегистрация, error) {
section, err := section.NewSection(bot, "Сражение", `
Сражения`)
if err != nil {
return nil, fmt.Errorf("NewBattleRegister(): in create ISection, err=\n\t%w", err)
}
sf := &СражениеРегистрация{
Section: section,
bot: bot,
счётРегистер: 10_000,
}
sf.net, err = sectionnet.NewSectionNet(sf, "https://wartank.ru/pve")
if err != nil {
return nil, fmt.Errorf("NewBattleRegister(): in create *SectionNet, err=\n\t%w", err)
}
return sf, nil
}
// Зарегистрироваться -- регистрирует танк на сражение
func (sf *СражениеРегистрация) Зарегистрироваться() {
// Найдено приглашение на участие
// https://wartank.ru/pve?{count}-1.ILinkListener-currentOverview-apply
фнРегис := func() []string {
стрСсылка := "https://wartank.ru/pve?0-1.ILinkListener-currentOverview-apply"
стрКонтроль := "https://wartank.ru/pve?0-1.ILinkListener-currentOverview-apply"
for {
time.Sleep(time.Second * 1)
лстСражение, err := sf.net.Get(стрСсылка)
if err != nil {
log.Printf("ERRO СражениеРегистрация.Зарегистрироваться(): при выполнении GET-команды на подъём в атаку, err=\n\t%v\n", err)
}
if len(лстСражение) < 113 {
continue
}
стрКонтроль = лстСражение[113]
if !strings.Contains(стрКонтроль, "ILinkListener-currentOverview-apply") {
return лстСражение
}
log.Printf("СражениеРегистрация.Зарегистрироваться(): регистрация не прошла\n")
стрСсылка = strings.TrimPrefix(стрКонтроль, `Взвод, подъем! В атаку!`)
стрСсылка = "https://wartank.ru/" + стрСсылка + ".ILinkListener-currentOverview-apply"
}
}
if err := sf.СтрОбновить(фнРегис()); err != nil {
log.Printf("СражениеРегистрация.Зарегистрироваться(): при обновлении lstBattle, err=\n\t%v\n", err)
}
// log._rintf("INFO СражениеРегистрация.Зарегистрироваться(): регистрация прошла успешно\n")
}