// package battle_register -- регестрирует танк в битве package battle_register import ( "fmt" "log" "strings" "time" "wartank/pkg/components/section" "wartank/pkg/components/sectionnet" "wartank/pkg/types" ) // СражениеРегистрация -- регистрирует танк к началу атаки type СражениеРегистрация struct { *section.Section bot types.ИБот net *sectionnet.SectionNet счётРегистер int // Счётчик регистраций на сражение } // НовСражениеРегистрация -- возвращает новый ожидатель битвы func НовСражениеРегистрация(bot types.ИБот) (*СражениеРегистрация, error) { section, err := section.NewSection(bot, "Сражение", `Сражения`) if err != nil { return nil, fmt.Errorf("НовСражениеРегистрация(): in create ISection, err=\n\t%w", err) } sf := &СражениеРегистрация{ Section: section, bot: bot, счётРегистер: 10_000, } sf.net, err = sectionnet.NewSectionNet(sf, "https://wartank.ru/pve") if err != nil { return nil, fmt.Errorf("НовСражениеРегистрация(): in create *SectionNet, err=\n\t%w", err) } return sf, nil } // Зарегистрироваться -- регистрирует танк на сражение func (sf *СражениеРегистрация) Зарегистрироваться() { // Найдено приглашение на участие // https://wartank.ru/pve?{count}-1.ILinkListener-currentOverview-apply фнРегис := func() []string { стрСсылка := "https://wartank.ru/pve?0-1.ILinkListener-currentOverview-apply" стрКонтроль := "https://wartank.ru/pve?0-1.ILinkListener-currentOverview-apply" for { time.Sleep(time.Second * 1) лстСражение, err := sf.net.Get(стрСсылка) if err != nil { log.Printf("ERRO СражениеРегистрация.Зарегистрироваться(): при выполнении GET-команды на подъём в атаку, err=\n\t%v\n", err) } if len(лстСражение) < 113 { continue } стрКонтроль = лстСражение[113] if !strings.Contains(стрКонтроль, "ILinkListener-currentOverview-apply") { return лстСражение } log.Printf("СражениеРегистрация.Зарегистрироваться(): регистрация не прошла\n") стрСсылка = strings.TrimPrefix(стрКонтроль, `Взвод, подъем! В атаку!`) стрСсылка = "https://wartank.ru/" + стрСсылка + ".ILinkListener-currentOverview-apply" } } if err := sf.СтрОбновить(фнРегис()); err != nil { log.Printf("СражениеРегистрация.Зарегистрироваться(): при обновлении lstBattle, err=\n\t%v\n", err) } // log._rintf("INFO СражениеРегистрация.Зарегистрироваться(): регистрация прошла успешно\n") }