package missions import ( "fmt" "strings" "time" "wartank/pkg/components/section" "wartank/pkg/types" "wartank/server/serv_bots/warbot/angar/missions/missionsnet" ) /* Сканирует миссии на предмет забрать золотишко. */ // Миссии -- забирает золотишко type Миссии struct { *section.Section бот types.ИБот сеть *missionsnet.MissionsNet } // NewMissions -- возвращает новый *Миссии func NewMissions(бот types.ИБот) (*Миссии, error) { section, err := section.NewSection(бот, "Миссии", `Миссии`) if err != nil { return nil, fmt.Errorf("NewMissions(): in create *Section, err=\n\t%w", err) } сам := &Миссии{ Section: section, бот: бот, } сам.сеть, err = missionsnet.NewMissionsNet(сам) if err != nil { return nil, fmt.Errorf("NewMissions(): in create *SectionNet, err=\n\t%w", err) } return сам, nil } // Пуск -- запускает в работу сбор миссий func (сам *Миссии) Пуск() error { go сам.пуск() return nil } // обрабатывает конвой func (sf *Миссии) пуск() { defer func() { sf.ВремяОпрос().Стоп() }() time.Sleep(time.Second * 15) for { // Время истекло select { case <-sf.бот.Кнт().Done(): sf.ВремяОпрос().Стоп() return case <-sf.ВремяОпрос().КаналСиг(): // if err := sf.сеть.UpdateLst(); err != nil { // // log._rintf("ERRO Миссии.run(): при обновлении lstMissions, err=\n\t%v\n", err) // return // } // sf.проверНаграда() default: sf.проверНаграда() time.Sleep(time.Minute * 1) } } } // Забирает всё самое вкусное func (sf *Миссии) проверНаграда() { sf.битваЗащита() sf.battleAttack() sf.БитваВойна() sf.battle5Fiting() sf.battle6win() sf.battle10Fiting() sf.battleDogFyting() sf.makeResource() sf.kill3tanks() sf.топливоДив() sf.upMan() } // Проверяет награду за уничтожить 3 танка в бою func (sf *Миссии) kill3tanks() { var ( strOut string lstMissions = sf.СписПолучить() isFind bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Уничтожь в бою 3 танка
`) { isFind = true break } } if !isFind { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := sf.сеть.Get(strLink) if err != nil { // log._rintf("ERRO Миссии.kill3tanks(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := sf.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.kill3tanks(): при обновлении lstMissions, err=\n\t%v\n", err) return } } // Проверяет награду оборонительного сражения func (sf *Миссии) битваЗащита() { var ( strOut string lstMissions = sf.СписПолучить() isFind bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Проведи одно оборонительное сражение
`) { isFind = true break } } if !isFind { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := sf.сеть.Get(strLink) if err != nil { // log._rintf("ERRO Миссии.battleDefence(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := sf.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.battleDefence(): при обновлении lstMissions, err=\n\t%v\n", err) return } } // Проверяет награду за одну войну func (sf *Миссии) БитваВойна() { var ( strOut string lstMissions = sf.СписПолучить() isFind bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Проведи одну войну
`) { isFind = true break } } if !isFind { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := sf.сеть.Get(strLink) if err != nil { // log._rintf("ERRO Миссии.battleWar(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := sf.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.battleWar(): при обновлении lstMissions, err=\n\t%v\n", err) return } } // Проверяет награду наступательного сражения func (sf *Миссии) battleAttack() { var ( strOut string lstMissions = sf.СписПолучить() isFind bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Проведи одно наступательное сражение
`) { isFind = true break } } if !isFind { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := sf.сеть.Get(strLink) if err != nil { // log._rintf("ERRO Миссии.battleAttack(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := sf.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.battleAttack(): при обновлении lstMissions, err=\n\t%v\n", err) return } } // Проверяет награду за схватку func (sf *Миссии) battleDogFyting() { var ( strOut string lstMissions = sf.СписПолучить() isFind bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Проведи одну схватку
`) { isFind = true break } } if !isFind { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := sf.сеть.Get(strLink) if err != nil { // log._rintf("ERRO Миссии.battleDogFyting(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := sf.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.battleDogFyting(): при обновлении lstMissions, err=\n\t%v\n", err) return } } // Проверяет награду за ресурсы func (sf *Миссии) makeResource() { var ( strOut string lstMissions = sf.СписПолучить() isFind bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Произведи на базе 10 ресурсов
`) { isFind = true break } } if !isFind { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := sf.сеть.Get(strLink) if err != nil { // log._rintf("ERRO Миссии.makeResource(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := sf.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.makeResource(): при обновлении lstMissions, err=\n\t%v\n", err) return } } // Проверяет награду за ресурсы func (sf *Миссии) upMan() { var ( strOut string lstMissions = sf.СписПолучить() isFind bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Прокачай экипаж на 100 опыта экипажа
`) { isFind = true break } } if !isFind { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := sf.сеть.Get(strLink) if err != nil { // log._rintf("ERRO Миссии.upMan(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := sf.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.upMan(): при обновлении lstMissions, err=\n\t%v\n", err) return } // log._rintf("INFO Миссии.upMan(): награда получена\n") } // Проверяет награду за топливо func (sf *Миссии) топливоДив() { var ( strOut string lstMissions = sf.СписПолучить() isFind bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Получи топливо в дивизии
`) { isFind = true break } } if !isFind { return } // Получить награду ind += 19 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить наградуПолучить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := sf.сеть.Get(strLink) if err != nil { // log._rintf("ERRO Миссии.makeFuel(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := sf.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.makeFuel(): при обновлении lstMissions, err=\n\t%v\n", err) return } // log._rintf("INFO Миссии.makeFuel(): награда получена") } // Проверяет награду 5 боёв func (sf *Миссии) battle5Fiting() { var ( strOut string lstMissions = sf.СписПолучить() isFind bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Проведи 5 боев
`) { isFind = true break } } if !isFind { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := sf.сеть.Get(strLink) if err != nil { // log._rintf("ERRO Миссии.battle5Fiting(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := sf.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.battle5Fiting(): при обновлении lstMissions, err=\n\t%v\n", err) return } } // Проверяет награду 10 боёв func (sf *Миссии) battle10Fiting() { var ( strOut string lstMissions = sf.СписПолучить() isFind bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Уничтожь в бою 10 танков
`) { isFind = true break } } if !isFind { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := sf.сеть.Get(strLink) if err != nil { // log._rintf("ERRO Миссии.battle10Fiting(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := sf.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.battle10Fiting(): при обновлении lstMissions, err=\n\t%v\n", err) return } } // Проверяет награду за 6 побед подряд func (sf *Миссии) battle6win() { var ( strOut string lstMissions = sf.СписПолучить() isFind bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Победи 6 раз подряд
`) { isFind = true break } } if !isFind { return } // Получить награду ind += 25 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := sf.сеть.Get(strLink) if err != nil { // log._rintf("ERRO Миссии.battle6win(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := sf.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.battle6win(): при обновлении lstMissions, err=\n\t%v\n", err) return } }