death_register.go 3.4 KB

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