battle_register.go 3.4 KB

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