// package labor -- лаборатория на базе package labor import ( "fmt" "log" "strings" "time" "wartank/pkg/types" ) // Лаборатория на базе type Лаборатория struct { бот types.ИБот } // НоваяЛаборатория -- возвращает новую лабораторию func НоваяЛаборатория(бот types.ИБот) (*Лаборатория, error) { if бот == nil { return nil, fmt.Errorf("НоваяЛаборатория(): ИБот == nil") } сам := &Лаборатория{ бот: бот, } return сам, nil } // Пуск -- запуск в работу func (сам *Лаборатория) Пуск() { go сам.пуск() } // Запукает в работу в отдельном потоке func (сам *Лаборатория) пуск() { time.Sleep(time.Millisecond * 4500) for { select { case <-сам.бот.Кнт().Done(): return default: сам.работать() } } } // Основной метод работы func (сам *Лаборатория) работать() { defer time.Sleep(time.Second * 300) if ош := сам.улучшить(); ош != nil { log.Printf("Лаборатория.работать(): ош=\n\t%v\n", ош) return } } // Улучшает параметры лаборатории func (сам *Лаборатория) улучшить() error { // https://wartank.ru/buildings клиент := сам.бот.Сеть().КлиентСеть() фнПостроить := func() error { лстСтр, ош := клиент.Get("https://wartank.ru/buildings") if ош != nil { return fmt.Errorf("Лаборатория.улучшить(): при получении страницы постройки лаборатории с сервера, ош=\n\t%w", ош) } еслиНашли := false // Построить for _, стр := range лстСтр { if strings.Contains(стр, `Построить`) { еслиНашли = true break } } if !еслиНашли { return nil } // https://wartank.ru/building-upgrade/Laboratory _, ош = клиент.Get("https://wartank.ru/building-upgrade/Laboratory") if ош != nil { return fmt.Errorf("Лаборатория.улучшить(): при построении лаборатории, ош=\n\t%w", ош) } return nil } фнКупить := func() error { лстСтр, ош := клиент.Get("https://wartank.ru/building-upgrade/Laboratory") if ош != nil { return fmt.Errorf("Лаборатория.улучшить(): при получении страницы покупки лаборатории с сервера, ош=\n\t%w", ош) } стрВых := "" // for _, стрВых = range лстСтр { if strings.Contains(стрВых, ``) // https://wartank.ru/building-upgrade/Laboratory?117-1.ILinkListener-upgradeLink-link стрВых = "https://wartank.ru/building-upgrade/" + стрВых _, ош = клиент.Get(стрВых) if ош != nil { return fmt.Errorf("Лаборатория.улучшить(): при покупки лаборатории, ош=\n\t%w", ош) } return nil } счётОш := 5 for счётОш > 0 { time.Sleep(time.Millisecond * 350) счётОш-- ош := фнПостроить() if ош != nil { log.Printf("Лаборатория.улучшить(): получить, ош=\n\t%v\n", ош) continue } ош = фнКупить() if ош != nil { log.Printf("Лаборатория.улучшить(): оплатить, ош=\n\t%v\n", ош) continue } // FIXME: надо сделать подтверждение оплаты break } return nil }