|
|
@@ -5,28 +5,31 @@ import (
|
|
|
"fmt"
|
|
|
"log"
|
|
|
"strings"
|
|
|
+ "time"
|
|
|
|
|
|
"wartank/pkg/components/section"
|
|
|
"wartank/pkg/components/sectionnet"
|
|
|
"wartank/pkg/types"
|
|
|
)
|
|
|
|
|
|
-// BattleRegister -- регистрирует танк к началу атаки
|
|
|
-type BattleRegister struct {
|
|
|
+// СражениеРегистрация -- регистрирует танк к началу атаки
|
|
|
+type СражениеРегистрация struct {
|
|
|
*section.Section
|
|
|
- bot types.ИБот
|
|
|
- net *sectionnet.SectionNet
|
|
|
+ bot types.ИБот
|
|
|
+ net *sectionnet.SectionNet
|
|
|
+ счётРегистер int // Счётчик регистраций на сражение
|
|
|
}
|
|
|
|
|
|
// NewBattleRegister -- возвращает новый ожидатель битвы
|
|
|
-func NewBattleRegister(bot types.ИБот) (*BattleRegister, error) {
|
|
|
+func NewBattleRegister(bot types.ИБот) (*СражениеРегистрация, 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 := &СражениеРегистрация{
|
|
|
+ Section: section,
|
|
|
+ bot: bot,
|
|
|
+ счётРегистер: 10_000,
|
|
|
}
|
|
|
sf.net, err = sectionnet.NewSectionNet(sf, "https://wartank.ru/pve")
|
|
|
if err != nil {
|
|
|
@@ -36,40 +39,34 @@ func NewBattleRegister(bot types.ИБот) (*BattleRegister, error) {
|
|
|
}
|
|
|
|
|
|
// Зарегистрироваться -- регистрирует танк на сражение
|
|
|
-func (sf *BattleRegister) Зарегистрироваться() {
|
|
|
- if err := sf.net.UpdateLst(); err != nil { // Здесь может уже обратный отсчёт перед сражением
|
|
|
- return
|
|
|
- }
|
|
|
- var (
|
|
|
- strOut string
|
|
|
- lstBattle = sf.СписПолучить()
|
|
|
- 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
|
|
|
- }
|
|
|
+func (sf *СражениеРегистрация) Зарегистрироваться() {
|
|
|
// Найдено приглашение на участие
|
|
|
- lstUp := strings.Split(strOut, `<a class="simple-but border" href="`)
|
|
|
- linkUp := lstUp[1]
|
|
|
- lstUp = strings.Split(linkUp, `"><span><span>Взвод, подъем! В атаку!</span></span></a>`)
|
|
|
- linkUp = "https://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
|
|
|
+ // 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(стрКонтроль, `<a class="simple-but border" href="`)
|
|
|
+ стрСсылка = strings.TrimSuffix(стрСсылка, `.ILinkListener-currentOverview-apply"><span><span>Взвод, подъем! В атаку!</span></span></a>`)
|
|
|
+ стрСсылка = "https://wartank.ru/" + стрСсылка + ".ILinkListener-currentOverview-apply"
|
|
|
+ }
|
|
|
}
|
|
|
- if err = sf.СтрОбновить(lstBattle); err != nil {
|
|
|
- log.Printf("BattleRegister.Register(): при обновлении lstBattle, err=\n\t%v\n", err)
|
|
|
+
|
|
|
+ if err := sf.СтрОбновить(фнРегис()); err != nil {
|
|
|
+ log.Printf("СражениеРегистрация.Зарегистрироваться(): при обновлении lstBattle, err=\n\t%v\n", err)
|
|
|
}
|
|
|
- // log._rintf("INFO BattleRegister.Register(): регистрация прошла успешно\n")
|
|
|
+ // log._rintf("INFO СражениеРегистрация.Зарегистрироваться(): регистрация прошла успешно\n")
|
|
|
}
|