battle_register.go 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // package battle_register -- регестрирует танк в битве
  2. package battle_register
  3. import (
  4. "log"
  5. "strings"
  6. "time"
  7. "wartank/pkg/arena"
  8. "wartank/pkg/components/arena_net"
  9. "wartank/pkg/types"
  10. )
  11. // СражениеРегистрация -- регистрирует танк к началу атаки
  12. type СхваткаРегистрация struct {
  13. types.ИАрена
  14. бот types.ИБот
  15. сеть types.ИАренаСеть
  16. счётРегистер int // Счётчик регистраций на сражение
  17. }
  18. // НовСражениеРегистрация -- возвращает новый ожидатель битвы
  19. func НовСражениеРегистрация(бот types.ИБот) *СхваткаРегистрация {
  20. секция := arena.НовАрена(бот, "Сражение", `<title>Сражения</title>`)
  21. сам := &СхваткаРегистрация{
  22. ИАрена: секция,
  23. бот: бот,
  24. счётРегистер: 10_000,
  25. }
  26. сам.сеть = arena_net.НовАренаСеть(сам, "https://wartank.ru/pve")
  27. return сам
  28. }
  29. // Зарегистрироваться -- регистрирует танк на сражение
  30. func (сам *СхваткаРегистрация) Зарегистрироваться() {
  31. // Найдено приглашение на участие
  32. // https://wartank.ru/pve?{count}-1.ILinkListener-currentOverview-apply
  33. фнРегис := func() []string {
  34. стрСсылка := "https://wartank.ru/pve?0-1.ILinkListener-currentOverview-apply"
  35. var стрКонтроль string // "https://wartank.ru/pve?0-1.ILinkListener-currentOverview-apply"
  36. for {
  37. time.Sleep(time.Second * 1)
  38. лстСражение, err := сам.сеть.Get(стрСсылка)
  39. if err != nil {
  40. log.Printf("ERRO СражениеРегистрация.Зарегистрироваться(): при выполнении GET-команды на подъём в атаку, err=\n\t%v\n", err)
  41. }
  42. if len(лстСражение) < 113 {
  43. continue
  44. }
  45. стрКонтроль = лстСражение[113]
  46. if !strings.Contains(стрКонтроль, "ILinkListener-currentOverview-apply") {
  47. return лстСражение
  48. }
  49. log.Printf("СражениеРегистрация.Зарегистрироваться(): регистрация не прошла\n")
  50. стрСсылка = strings.TrimPrefix(стрКонтроль, `<a class="simple-but border" href="`)
  51. стрСсылка = strings.TrimSuffix(стрСсылка, `.ILinkListener-currentOverview-apply"><span><span>Взвод, подъем! В атаку!</span></span></a>`)
  52. стрСсылка = "https://wartank.ru/" + стрСсылка + ".ILinkListener-currentOverview-apply"
  53. }
  54. }
  55. if ош := сам.СтрОбновить(фнРегис()); ош != nil {
  56. log.Printf("СражениеРегистрация.Зарегистрироваться(): при обновлении lstBattle, err=\n\t%v\n", ош)
  57. }
  58. // log._rintf("INFO СражениеРегистрация.Зарегистрироваться(): регистрация прошла успешно\n")
  59. }