package arena_missions import ( "strings" "time" . "wartank/app/lev0/types" "wartank/app/lev2/arena" ) /* Сканирует миссии на предмет забрать золотишко. */ // АренаМиссии -- забирает золотишко type АренаМиссии struct { ИАрена бот ИБот } // НовМиссии -- возвращает новый *Миссии func НовМиссии(конт ИБотКонтекст, бот ИБот) (*АренаМиссии, error) { сам := &АренаМиссии{ бот: бот, } аренаКонфиг := arena.АренаКонфиг{ Бот_: бот, АренаИмя_: "Миссии", СтрКонтроль_: "Миссии", ФнПуск_: сам.пуск, СтрУрл_: "https://wartank.ru/missions/", // https://wartank.ru/missions/ } сам.ИАрена = arena.НовАрена(конт, аренаКонфиг) _ = ИМиссии(сам) return сам, nil } // // Бот -- возвращает бота // func (сам *Миссии) Бот() types.ИБот { // return сам.бот // } // Пуск -- запускает в работу сбор миссий func (сам *АренаМиссии) Пуск() { go сам.пуск() } // обрабатывает конвой func (сам *АренаМиссии) пуск() { time.Sleep(time.Second * 5) for { // Время истекло // time.Sleep(time.Minute * 1) select { case <-сам.бот.Контекст().Done(): return default: сам.проверНаграда() time.Sleep(time.Minute * 1) } } } // Забирает всё самое вкусное func (сам *АренаМиссии) проверНаграда() { сам.сражениеЗащита() сам.сражениеНаступление() сам.проведиВойну() сам.battle5Fiting() сам.battle6win() сам.battle10Fiting() сам.battleDogFyting() сам.makeResource() сам.kill3tanks() сам.топливоДив() сам.upMan() } // Проверяет награду за уничтожить 3 танка в бою func (сам *АренаМиссии) kill3tanks() { var ( strOut string lstMissions = сам.СписПолучить() еслиНайдено bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Уничтожь в бою 3 танка
`) { еслиНайдено = true break } } if !еслиНайдено { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := сам.Сеть().Get(strLink) if err != nil { // log._rintf("ERRO Миссии.kill3tanks(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := сам.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.kill3tanks(): при обновлении lstMissions, err=\n\t%v\n", err) return } } // Проверяет награду оборонительного сражения func (сам *АренаМиссии) сражениеЗащита() { var ( strOut string еслиНайдено bool ) сам.Обновить() списМиссия := сам.СписПолучить() // Получить награду for _, strOut = range списМиссия { if strings.Contains(strOut, `.ILinkListener-missions-cc-0-c-awardLink`) { еслиНайдено = true break } } if !еслиНайдено { return } // Получить награду _ссылка := strings.TrimPrefix(strOut, `Получить награду`) strLink := "https://wartank.ru/missions/" + _ссылка списМиссия, err := сам.Сеть().Get(strLink) if err != nil { // log._rintf("ERRO Миссии.battleDefence(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := сам.СтрОбновить(списМиссия); err != nil { // log._rintf("ERRO Миссии.battleDefence(): при обновлении lstMissions, err=\n\t%v\n", err) return } } // Проверяет награду за одну войну func (сам *АренаМиссии) проведиВойну() { var ( strOut string lstMissions = сам.СписПолучить() еслиНайдено bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Проведи одну войну
`) { еслиНайдено = true break } } if !еслиНайдено { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := сам.Сеть().Get(strLink) if err != nil { // log._rintf("ERRO Миссии.battleWar(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := сам.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.battleWar(): при обновлении lstMissions, err=\n\t%v\n", err) return } } // Проверяет награду наступательного сражения func (сам *АренаМиссии) сражениеНаступление() { var ( strOut string еслиНайдено bool ind int lstMissions = сам.СписПолучить() ) if len(lstMissions) == 0 { сам.Обновить() lstMissions = сам.СписПолучить() } for ind, strOut = range lstMissions { if strings.Contains(strOut, "Проведи одно наступательное сражение
") { еслиНайдено = true break } } if !еслиНайдено { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := сам.Сеть().Get(strLink) if err != nil { // log._rintf("ERRO Миссии.battleAttack(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := сам.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.battleAttack(): при обновлении lstMissions, err=\n\t%v\n", err) return } } // Проверяет награду за схватку func (сам *АренаМиссии) battleDogFyting() { var ( strOut string lstMissions = сам.СписПолучить() еслиНайдено bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Проведи одну схватку
`) { еслиНайдено = true break } } if !еслиНайдено { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := сам.Сеть().Get(strLink) if err != nil { // log._rintf("ERRO Миссии.battleDogFyting(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := сам.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.battleDogFyting(): при обновлении lstMissions, err=\n\t%v\n", err) return } } // Проверяет награду за ресурсы func (сам *АренаМиссии) makeResource() { var ( strOut string lstMissions = сам.СписПолучить() еслиНайдено bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Произведи на базе 10 ресурсов
`) { еслиНайдено = true break } } if !еслиНайдено { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := сам.Сеть().Get(strLink) if err != nil { // log._rintf("ERRO Миссии.makeResource(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := сам.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.makeResource(): при обновлении lstMissions, err=\n\t%v\n", err) return } } // Проверяет награду за ресурсы func (сам *АренаМиссии) upMan() { var ( strOut string lstMissions = сам.СписПолучить() еслиНайдено bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Прокачай экипаж на 100 опыта экипажа
`) { еслиНайдено = true break } } if !еслиНайдено { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := сам.Сеть().Get(strLink) if err != nil { // log._rintf("ERRO Миссии.upMan(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := сам.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.upMan(): при обновлении lstMissions, err=\n\t%v\n", err) return } // log._rintf("INFO Миссии.upMan(): награда получена\n") } // Проверяет награду за топливо func (сам *АренаМиссии) топливоДив() { var ( strOut string lstMissions = сам.СписПолучить() еслиНайдено bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Получи топливо в дивизии
`) { еслиНайдено = true break } } if !еслиНайдено { return } // Получить награду ind += 19 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить наградуПолучить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := сам.Сеть().Get(strLink) if err != nil { // log._rintf("ERRO Миссии.makeFuel(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := сам.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.makeFuel(): при обновлении lstMissions, err=\n\t%v\n", err) return } // log._rintf("INFO Миссии.makeFuel(): награда получена") } // Проверяет награду 5 боёв func (сам *АренаМиссии) battle5Fiting() { var ( strOut string lstMissions = сам.СписПолучить() еслиНайдено bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Проведи 5 боев
`) { еслиНайдено = true break } } if !еслиНайдено { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := сам.Сеть().Get(strLink) if err != nil { // log._rintf("ERRO Миссии.battle5Fiting(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := сам.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.battle5Fiting(): при обновлении lstMissions, err=\n\t%v\n", err) return } } // Проверяет награду 10 боёв func (сам *АренаМиссии) battle10Fiting() { var ( strOut string lstMissions = сам.СписПолучить() еслиНайдено bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Уничтожь в бою 10 танков
`) { еслиНайдено = true break } } if !еслиНайдено { return } // Получить награду ind += 23 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := сам.Сеть().Get(strLink) if err != nil { // log._rintf("ERRO Миссии.battle10Fiting(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := сам.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.battle10Fiting(): при обновлении lstMissions, err=\n\t%v\n", err) return } } // Проверяет награду за 6 побед подряд func (сам *АренаМиссии) battle6win() { var ( strOut string lstMissions = сам.СписПолучить() еслиНайдено bool ind int ) for ind, strOut = range lstMissions { if strings.Contains(strOut, `Победи 6 раз подряд
`) { еслиНайдено = true break } } if !еслиНайдено { return } // Получить награду ind += 25 strOut = lstMissions[ind] if !strings.Contains(strOut, `>Получить награду<`) { return } lstLink := strings.Split(strOut, `Получить награду`) strLink = "https://wartank.ru/missions/" + lstLink[0] lstMissions, err := сам.Сеть().Get(strLink) if err != nil { // log._rintf("ERRO Миссии.battle6win(): при выполнении GET-запроса, err=\n\t%v\n", err) return } if err := сам.СтрОбновить(lstMissions); err != nil { // log._rintf("ERRO Миссии.battle6win(): при обновлении lstMissions, err=\n\t%v\n", err) return } }