| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // package battle_register -- регестрирует танк в битве
- package battle_register
- import (
- "fmt"
- "log"
- "strings"
- "time"
- "wartank/pkg/components/scene_net"
- "wartank/pkg/section"
- "wartank/pkg/types"
- )
- // СражениеРегистрация -- регистрирует танк к началу атаки
- type СхваткаРегистрация struct {
- *section.Секция
- бот types.ИБот
- сеть *scene_net.СценаСеть
- счётРегистер int // Счётчик регистраций на сражение
- }
- // НовСражениеРегистрация -- возвращает новый ожидатель битвы
- func НовСражениеРегистрация(бот types.ИБот) (*СхваткаРегистрация, error) {
- секция, ош := section.НовСекция(бот, "Сражение", `<title>Сражения</title>`)
- if ош != nil {
- return nil, fmt.Errorf("НовСражениеРегистрация(): in create ISection, err=\n\t%w", ош)
- }
- сам := &СхваткаРегистрация{
- Секция: секция,
- бот: бот,
- счётРегистер: 10_000,
- }
- сам.сеть, ош = scene_net.НовСекцияСеть(сам, "https://wartank.ru/pve")
- if ош != nil {
- return nil, fmt.Errorf("НовСражениеРегистрация(): in create *SectionNet, err=\n\t%w", ош)
- }
- return сам, nil
- }
- // Зарегистрироваться -- регистрирует танк на сражение
- func (сам *СхваткаРегистрация) Зарегистрироваться() {
- // Найдено приглашение на участие
- // 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 := сам.сеть.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(стрКонтроль, `<a class="simple-but border" href="`)
- стрСсылка = strings.TrimSuffix(стрСсылка, `.ILinkListener-currentOverview-apply"><span><span>Взвод, подъем! В атаку!</span></span></a>`)
- стрСсылка = "https://wartank.ru/" + стрСсылка + ".ILinkListener-currentOverview-apply"
- }
- }
- if ош := сам.СтрОбновить(фнРегис()); ош != nil {
- log.Printf("СражениеРегистрация.Зарегистрироваться(): при обновлении lstBattle, err=\n\t%v\n", ош)
- }
- // log._rintf("INFO СражениеРегистрация.Зарегистрироваться(): регистрация прошла успешно\n")
- }
|