// package battle_register -- регестрирует танк в битве package battle_register import ( "fmt" "log" "strings" "wartank/pkg/components/section" "wartank/pkg/components/sectionnet" "wartank/pkg/types" ) // BattleRegister -- регистрирует танк к началу атаки type BattleRegister struct { *section.Section bot types.ИБот net *sectionnet.SectionNet } // NewBattleRegister -- возвращает новый ожидатель битвы func NewBattleRegister(bot types.ИБот) (*BattleRegister, error) { section, err := section.NewSection(bot, "Сражение", `Сражения`) if err != nil { return nil, fmt.Errorf("NewBattleRegister(): in create ISection, err=\n\t%w", err) } sf := &BattleRegister{ Section: section, bot: bot, } 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 *BattleRegister) Зарегистрироваться() { if err := sf.net.UpdateLst(); err != nil { // Здесь может уже обратный отсчёт перед сражением return } var ( strOut string lstBattle = sf.СписПолучить() isFind bool ) for _, strOut = range lstBattle { if strings.Contains(strOut, `>Взвод, подъем! В атаку!<`) { isFind = true break } if strings.Contains(strOut, `
Вы в рядах участников
`) { // log._rintf("INFO BattleRegister.Register(): уже зарегистрирован\n") return } } if !isFind { // Возможно, ожидание или битва уже идёт return } // Найдено приглашение на участие lstUp := strings.Split(strOut, `Взвод, подъем! В атаку!`) linkUp = "https://wartank.ru/" + lstUp[0] lstBattle, err := sf.net.Get(linkUp) if err != nil { // log._rintf("ERRO BattleRegister.Register(): при выполнении GET-команды на подъём в атаку, err=\n\t%v\n", err) return } if err = sf.СтрОбновить(lstBattle); err != nil { log.Printf("BattleRegister.Register(): при обновлении lstBattle, err=\n\t%v\n", err) } // log._rintf("INFO BattleRegister.Register(): регистрация прошла успешно\n") }