| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- // package battle_register -- регестрирует танк в битве
- package battle_register
- import (
- "fmt"
- "log"
- "strings"
- "wartank/pkg/components/section"
- "wartank/pkg/components/sectionnet"
- "wartank/pkg/types"
- )
- // BattleRegister -- регистрирует танк к началу атаки
- type BattleRegister struct {
- *section.Section
- bot types.IBot
- net *sectionnet.SectionNet
- }
- // NewBattleRegister -- возвращает новый ожидатель битвы
- func NewBattleRegister(bot types.IBot) (*BattleRegister, error) {
- section, err := section.NewSection(bot, `<title>Сражения</title>`)
- if err != nil {
- return nil, fmt.Errorf("NewBattleRegister(): in create ISection, err=\n\t%w", err)
- }
- sf := &BattleRegister{
- Section: section,
- bot: bot,
- }
- sf.net, err = sectionnet.NewSectionNet(sf, "http://wartank.ru/pve")
- if err != nil {
- return nil, fmt.Errorf("NewBattleRegister(): in create *SectionNet, err=\n\t%w", err)
- }
- return sf, nil
- }
- // Register -- регистрирует танк на сражение
- func (sf *BattleRegister) Register() {
- if err := sf.net.UpdateLst("Ближайшее сражение"); err != nil { // Здесь может уже обратный отсчёт перед сражением
- return
- }
- var (
- strOut string
- lstBattle = sf.GetLst()
- isFind bool
- )
- for _, strOut = range lstBattle {
- if strings.Contains(strOut, `>Взвод, подъем! В атаку!<`) {
- isFind = true
- break
- }
- if strings.Contains(strOut, `<div class="white medium cntr bold mb5">Вы в рядах участников</div>`) {
- // log._rintf("INFO BattleRegister.Register(): уже зарегистрирован\n")
- return
- }
- }
- if !isFind { // Возможно, ожидание или битва уже идёт
- return
- }
- // Найдено приглашение на участие
- lstUp := strings.Split(strOut, `<a class="simple-but border" href="`)
- linkUp := lstUp[1]
- lstUp = strings.Split(linkUp, `"><span><span>Взвод, подъем! В атаку!</span></span></a>`)
- linkUp = "http://wartank.ru/" + lstUp[0]
- lstBattle, err := sf.net.Get(linkUp)
- if err != nil {
- // log._rintf("ERRO BattleRegister.Register(): при выполнении GET-команды на подъём в атаку, err=\n\t%v\n", err)
- return
- }
- if err = sf.Update(lstBattle); err != nil {
- log.Printf("BattleRegister.Register(): при обновлении lstBattle, err=\n\t%v\n", err)
- }
- // log._rintf("INFO BattleRegister.Register(): регистрация прошла успешно\n")
- }
|