// package tank_params -- параметры танка повышение package tank_params import ( "fmt" "log" "strconv" "strings" "time" "wartank/pkg/components/kernel/logger" "wartank/pkg/types" ) // ТанкПараметры -- параметры танка повышение type ТанкПараметры struct { бот types.ИБот номер string // Номер танка в игре лог types.ИЛоггер } // НовТанкПараметры -- возвращает новые параметры танка func НовТанкПараметры(бот types.ИБот) *ТанкПараметры { лог:=logger.НовЛоггер("ТанкПараметры") лог.Инфо("НовТанкПараметры()\n") лог.Паника(бот==nil, "НовТанкПараметры(): ИБот == nil") сам := &ТанкПараметры{ бот: бот, лог: лог, } return сам } // Пуск -- запуск в работу func (сам *ТанкПараметры) Пуск() { go сам.пуск() } // Запускает в работу в отдельном потоке func (сам *ТанкПараметры) пуск() { time.Sleep(time.Second * 4) ош := сам.номерПолуч() if ош != nil { log.Printf("ТанкПараметры.пуск(): при получении параметров танка, ош=\n\t%v\n", ош) сам.бот.Сервер().Отменить() return } for { select { case <-сам.бот.Контекст().Done(): return default: сам.работать() } } } // Основной метод работы func (сам *ТанкПараметры) работать() { defer time.Sleep(time.Second * 300) сам.улучшить() } // Улучшает параметры танка func (сам *ТанкПараметры) улучшить() { // https://wartank.ru/pimp/34479487 клиент := сам.бот.Сеть().ВебВоркер() фнУлучшить := func() bool{ лстСтр := клиент.Получ("https://wartank.ru/pimp/" + сам.номер) var ( стрВых string еслиНашли bool ) // for _, стрВых = range лстСтр { if strings.Contains(стрВых, ``) // https://wartank.ru/pimp/34479487?21-1.ILinkListener-modules-slots-0-slot-root-pimpLink-link стрСсылка := "https://wartank.ru/pimp/" + стрВых _ = клиент.Получ(стрСсылка) return true } счётОш := 5 for счётОш > 0 { if фнУлучшить(){ break } счётОш-- time.Sleep(time.Millisecond * 350) } } // Получает собственный номер танка с сервера func (сам *ТанкПараметры) номерПолуч() error { клиент := сам.бот.Сеть().ВебВоркер() лстСтр := клиент.Получ("https://wartank.ru/angar") var ( стрНомер string еслиНашёл bool ) // https://wartank.ru/power/34479487 for _, стрНомер = range лстСтр { if strings.Contains(стрНомер, `href="power/`) { еслиНашёл = true break } } if !еслиНашёл { return fmt.Errorf("ТанкПараметры.номерПолуч(): не нашёл собственный номер на сервере") } стрВыход := strings.TrimPrefix(стрНомер, `Повысить параметры`) _, ош := strconv.Atoi(стрВыход) if ош != nil { return fmt.Errorf("ТанкПараметры.номерПолуч(): ошибка преобразования собственного номера(%s), ош=\n\t%w", стрВыход, ош) } сам.номер = стрВыход return nil }