// package battle_wait -- заставляет ожидать начало битвы package battle_wait import ( "fmt" // "log" "strings" "time" "wartank/pkg/alias" "wartank/pkg/components/scene_net" "wartank/pkg/section" "wartank/pkg/types" ) // СражениеОжидание -- ожидатель начала битвы type СхваткаОжидание struct { *section.Секция bot types.ИБот net *scene_net.СценаСеть } // НовСражениеОжидание -- возвращает новый ожидатель битвы func НовСражениеОжидание(bot types.ИБот) (*СхваткаОжидание, error) { section, err := section.НовСекция(bot, "Ожидание сражения", `Сражения`) if err != nil { return nil, fmt.Errorf("NewBattleWait(): in create ISection, err=\n\t%w", err) } сам := &СхваткаОжидание{ Секция: section, bot: bot, } сам.net, err = scene_net.НовСекцияСеть(сам, "https://wartank.ru/pve") if err != nil { return nil, fmt.Errorf("NewBattleWait(): in create *SectionNet, err=\n\t%w", err) } return сам, nil } // Ожидать -- ожидает начало сражения func (сам *СхваткаОжидание) Ожидать() { // Зайти в цикл ожидания сражения for { // countTime := сам.ВремяОпрос().Получ() // if countTime > 0 { // time.Sleep(time.Millisecond * 500) // // log.Printf("BattleWait.Wait(): countTime=%v\n", сам.CountDown().String()) // continue // } стрВрем := сам.ждать() if стрВрем == "" { return } лстВрем := strings.Split(стрВрем, ":") стрЧас := лстВрем[0] if стрЧас > "00" { time.Sleep(time.Hour * 1) continue } стрМин := лстВрем[1] if стрМин > "10" { time.Sleep(time.Minute * 10) continue } if стрМин > "01" { time.Sleep(time.Minute * 1) continue } if "00:00:05" < стрВрем && стрВрем < "00:00:59" { time.Sleep(time.Second * 5) continue } time.Sleep(time.Second * 1) } } // Ждёт пока время не обнулится func (сам *СхваткаОжидание) ждать() string { if ош := сам.net.Обновить(); ош != nil { // Здесь может уже обратный отсчёт перед сражением return "" } var ( strOut string lstBattle = сам.СписПолучить() еслиНайдено bool ) for _, strOut = range lstBattle { if strings.Contains(strOut, `до начала `) { еслиНайдено = true break } // if strings.Contains(strOut, `>ОБЫЧНЫЕ<`) { // Это уже битва // if len(сам.chBattle) == 0 { // сам.chBattle <- 1 // } // return // } } if !еслиНайдено { // Сражение уже идёт return "" } // Найдена строка ожидания начала сражения lstTime := strings.Split(strOut, `до начала `) strTime := lstTime[1] lstTime = strings.Split(strTime, ` (`) strTime = lstTime[0] if err := сам.Секция.Уст(alias.Время(strTime)); err != nil { // Возможно уже всё // log._rintf("WARN BattleWait.Wait(): при установке времени ожидания сражения(%v)\n\terr=%v\n", strTime, err) return "" } return strTime }