web_api.go 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719
  1. // package web_api -- веб-сервер для API
  2. package web_api
  3. import (
  4. "fmt"
  5. "strings"
  6. "github.com/gofiber/fiber/v2"
  7. . "gitp78su.ipnodns.ru/svi/kern"
  8. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  9. . "wartank/app/lev0/alias"
  10. . "wartank/app/lev0/types"
  11. "wartank/pkg/msg/msg_list_bot"
  12. "wartank/pkg/msg/msg_login"
  13. )
  14. // ВебАпи -- веб-сервер для API
  15. type ВебАпи struct {
  16. прилож ИПриложение
  17. лог ILogBuf
  18. }
  19. // НовВебАпи -- возвращает новый веб-сервер для API
  20. func НовВебАпи() *ВебАпи {
  21. лог := NewLogBuf()
  22. конт := GetKernelCtx()
  23. сам := &ВебАпи{
  24. прилож: конт.Get("мод_сервер").Val().(ИПриложение),
  25. лог: лог,
  26. }
  27. файбер := конт.Get("fiberApp").Val().(*fiber.App)
  28. файбер.Post("/api/login", сам.логин)
  29. файбер.Post("/api/list_bot", сам.списБот)
  30. файбер.Post("/api/uptime", сам.аптаймСервер)
  31. файбер.Post("/api/count_start", сам.стартНомер)
  32. файбер.Post("/api/bot/:number/stat_attack", сам.статаАтака)
  33. файбер.Post("/api/bot/:number/stat_bron", сам.статаБроня)
  34. файбер.Post("/api/bot/:number/stat_fyne", сам.статаТочность)
  35. файбер.Post("/api/bot/:number/stat_prot", сам.статаПрочность)
  36. файбер.Post("/api/bot/:number/stat_power", сам.статаМощность)
  37. файбер.Post("/api/bot/:number/mine/level", сам.шахтаУровень)
  38. файбер.Post("/api/bot/:number/mine/mode", сам.шахтаРежим)
  39. файбер.Post("/api/bot/:number/mine/count_product", сам.шахтаРаботаКоличество)
  40. файбер.Post("/api/bot/:number/mine/name_product", сам.шахтаРаботаИмя)
  41. файбер.Post("/api/bot/:number/mine/back_time", сам.шахтаВремяОсталось)
  42. файбер.Post("/api/bot/:number/mine/log", сам.шахтаЛог)
  43. файбер.Post("/api/bot/:number/tank/fuel", сам.танкТопливо)
  44. файбер.Post("/api/bot/:number/angar/silver", сам.ангарСеребро)
  45. файбер.Post("/api/bot/:number/angar/gold", сам.ангарЗолото)
  46. файбер.Post("/api/bot/:number/polygon/level", сам.полигонУровень)
  47. файбер.Post("/api/bot/:number/polygon/mode", сам.полигонРежим)
  48. файбер.Post("/api/bot/:number/polygon/count_product", сам.полигонРаботаКоличество)
  49. файбер.Post("/api/bot/:number/polygon/name_product", сам.полигонРаботаИмя)
  50. файбер.Post("/api/bot/:number/polygon/back_time", сам.полигонВремяОсталось)
  51. файбер.Post("/api/bot/:number/arsenal/level", сам.арсеналУровень)
  52. файбер.Post("/api/bot/:number/arsenal/mode", сам.арсеналРежим)
  53. файбер.Post("/api/bot/:number/arsenal/count_product", сам.арсеналРаботаКоличество)
  54. файбер.Post("/api/bot/:number/arsenal/name_product", сам.арсеналРаботаИмя)
  55. файбер.Post("/api/bot/:number/arsenal/back_time", сам.арсеналВремяОсталось)
  56. файбер.Post("/api/bot/:number/arsenal/log", сам.арсеналЛог)
  57. файбер.Post("/api/bot/:number/arsenal/kumul", сам.арсеналКумуль)
  58. файбер.Post("/api/bot/:number/arsenal/bron", сам.арсеналБронебойка)
  59. файбер.Post("/api/bot/:number/arsenal/fugas", сам.арсеналФугас)
  60. файбер.Post("/api/bot/:number/arsenal/remka", сам.арсеналРемка)
  61. return сам
  62. }
  63. // Отдаёт список ботов
  64. func (сам *ВебАпи) списБот(ctx *fiber.Ctx) error {
  65. req := &msg_list_bot.ListBotRequest{}
  66. if err := ctx.BodyParser(req); err != nil {
  67. msg := fmt.Sprintf("ВебАпи.списБот(): ошибка при парсинге запроса, err=\n\t%v", err)
  68. return ctx.SendString(msg)
  69. }
  70. if req.Token_ != "qwertyQWERTY_12345" {
  71. msg := "ВебАпи.списБот(): кривой токен"
  72. return ctx.SendString(msg)
  73. }
  74. listBot := сам.прилож.ServBots().ListBot()
  75. resp := &msg_list_bot.ListBotResponse{
  76. ListBot_: []string{},
  77. }
  78. for _, bot := range listBot {
  79. resp.ListBot_ = append(resp.ListBot_, bot.Имя())
  80. }
  81. return ctx.JSON(resp)
  82. }
  83. // Выполняет логин на сервер
  84. func (сам *ВебАпи) логин(ctx *fiber.Ctx) error {
  85. req := &msg_login.LoginRequest{}
  86. if err := ctx.BodyParser(req); err != nil {
  87. err := fmt.Errorf("ВебАпи.логин(): при парсинге запроса логина, err=\n\t%w", err)
  88. return ctx.SendString(err.Error())
  89. }
  90. if req.Login_ != "svi" {
  91. err := fmt.Errorf("ВебАпи.логин():кривой логин")
  92. return ctx.SendString(err.Error())
  93. }
  94. if req.Pass_ != "Lera_07091978" {
  95. err := fmt.Errorf("ВебАпи.логин():кривой пароль")
  96. return ctx.SendString(err.Error())
  97. }
  98. resp := &msg_login.LoginResponse{
  99. Token_: "qwertyQWERTY_12345",
  100. }
  101. return ctx.JSON(resp)
  102. }
  103. // Возвращает ремки на арсенале
  104. func (сам *ВебАпи) арсеналРемка(кнт *fiber.Ctx) error {
  105. номер, ош := кнт.ParamsInt("number")
  106. if ош != nil {
  107. сообщ := fmt.Sprintf("[Ремка: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  108. return кнт.SendString(сообщ)
  109. }
  110. ботНомер := АБотНомер(номер)
  111. бот := сам.прилож.ServBots().Get(ботНомер)
  112. if бот == nil {
  113. return кнт.SendString("[Ремка: нет такого бота]")
  114. }
  115. арсенал := бот.КонтБот().Get("арсенал").Val().(ИАренаАрсенал)
  116. стрСнаряды := арсенал.Ремки().ЗначСтр()
  117. if стрСнаряды == "" {
  118. return кнт.SendString("[Ремка: пустое значение]")
  119. }
  120. return кнт.SendString("[Ремка: " + стрСнаряды + "]")
  121. }
  122. // Возвращает фугасы на арсенале
  123. func (сам *ВебАпи) арсеналФугас(кнт *fiber.Ctx) error {
  124. номер, ош := кнт.ParamsInt("number")
  125. if ош != nil {
  126. сообщ := fmt.Sprintf("[Фугас: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  127. return кнт.SendString(сообщ)
  128. }
  129. ботНомер := АБотНомер(номер)
  130. бот := сам.прилож.ServBots().Get(ботНомер)
  131. if бот == nil {
  132. return кнт.SendString("[Фугас: нет такого бота]")
  133. }
  134. арсенал := бот.КонтБот().Get("арсенал").Val().(ИАренаАрсенал)
  135. стрСнаряды := арсенал.Фугасы().ЗначСтр()
  136. if стрСнаряды == "" {
  137. return кнт.SendString("[Фугас: пустое значение]")
  138. }
  139. return кнт.SendString("[Фугас: " + стрСнаряды + "]")
  140. }
  141. // Возвращает бронебойки на арсенале
  142. func (сам *ВебАпи) арсеналБронебойка(кнт *fiber.Ctx) error {
  143. номер, ош := кнт.ParamsInt("number")
  144. if ош != nil {
  145. сообщ := fmt.Sprintf("[Броне: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  146. return кнт.SendString(сообщ)
  147. }
  148. ботНомер := АБотНомер(номер)
  149. бот := сам.прилож.ServBots().Get(ботНомер)
  150. if бот == nil {
  151. return кнт.SendString("[Броне: нет такого бота]")
  152. }
  153. арсенал := бот.КонтБот().Get("арсенал").Val().(ИАренаАрсенал)
  154. стрСнаряды := арсенал.Бронебойки().ЗначСтр()
  155. if стрСнаряды == "" {
  156. return кнт.SendString("[Броне: пустое значение]")
  157. }
  158. return кнт.SendString("[Броне: " + стрСнаряды + "]")
  159. }
  160. // Возвращает кумули на арсенале
  161. func (сам *ВебАпи) арсеналКумуль(кнт *fiber.Ctx) error {
  162. номер, ош := кнт.ParamsInt("number")
  163. if ош != nil {
  164. сообщ := fmt.Sprintf("[Кумуль: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  165. return кнт.SendString(сообщ)
  166. }
  167. ботНомер := АБотНомер(номер)
  168. бот := сам.прилож.ServBots().Get(ботНомер)
  169. if бот == nil {
  170. return кнт.SendString("[Кумуль: нет такого бота]")
  171. }
  172. арсенал := бот.КонтБот().Get("арсенал").Val().(ИАренаАрсенал)
  173. стрСнаряды := арсенал.Кумулятивы().ЗначСтр()
  174. if стрСнаряды == "" {
  175. return кнт.SendString("[Кумуль: пустое значение]")
  176. }
  177. return кнт.SendString("[Кумуль: " + стрСнаряды + "]")
  178. }
  179. // Возвращает силу мощности бота
  180. func (сам *ВебАпи) статаМощность(кнт *fiber.Ctx) error {
  181. номер, ош := кнт.ParamsInt("number")
  182. if ош != nil {
  183. сообщ := fmt.Sprintf("[Мощность: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  184. return кнт.SendString(сообщ)
  185. }
  186. ботНомер := АБотНомер(номер)
  187. бот := сам.прилож.ServBots().Get(ботНомер)
  188. if бот == nil {
  189. return кнт.SendString("[Мощность: нет такого бота]")
  190. }
  191. танкСтата := бот.КонтБот().Get("танкСтат").Val().(ИТанкСтат)
  192. стрМощность := танкСтата.Мощь().ЗначСтр()
  193. if стрМощность == "" {
  194. return кнт.SendString("[Мощность: пустое значение]")
  195. }
  196. return кнт.SendString("[Мощность: " + стрМощность + "]")
  197. }
  198. // Возвращает силу прочности бота
  199. func (сам *ВебАпи) статаПрочность(кнт *fiber.Ctx) error {
  200. номер, ош := кнт.ParamsInt("number")
  201. if ош != nil {
  202. сообщ := fmt.Sprintf("[Прочность: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  203. return кнт.SendString(сообщ)
  204. }
  205. ботНомер := АБотНомер(номер)
  206. бот := сам.прилож.ServBots().Get(ботНомер)
  207. if бот == nil {
  208. return кнт.SendString("[Прочность: нет такого бота]")
  209. }
  210. танкСтата := бот.КонтБот().Get("танкСтат").Val().(ИТанкСтат)
  211. стрБроня := танкСтата.Прочность().ЗначСтр()
  212. if стрБроня == "" {
  213. return кнт.SendString("[Прочность: пустое значение]")
  214. }
  215. return кнт.SendString("[Прочность: " + стрБроня + "]")
  216. }
  217. // Возвращает силу точности бота
  218. func (сам *ВебАпи) статаТочность(кнт *fiber.Ctx) error {
  219. номер, ош := кнт.ParamsInt("number")
  220. if ош != nil {
  221. сообщ := fmt.Sprintf("[Точность: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  222. return кнт.SendString(сообщ)
  223. }
  224. ботНомер := АБотНомер(номер)
  225. бот := сам.прилож.ServBots().Get(ботНомер)
  226. if бот == nil {
  227. return кнт.SendString("[Точность: нет такого бота]")
  228. }
  229. танкСтата := бот.КонтБот().Get("танкСтат").Val().(ИТанкСтат)
  230. стрБроня := танкСтата.Точность().ЗначСтр()
  231. if стрБроня == "" {
  232. return кнт.SendString("[Точность: пустое значение]")
  233. }
  234. return кнт.SendString("[Точность: " + стрБроня + "]")
  235. }
  236. // Возвращает силу брони бота
  237. func (сам *ВебАпи) статаБроня(кнт *fiber.Ctx) error {
  238. номер, ош := кнт.ParamsInt("number")
  239. if ош != nil {
  240. сообщ := fmt.Sprintf("[Броня: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  241. return кнт.SendString(сообщ)
  242. }
  243. ботНомер := АБотНомер(номер)
  244. бот := сам.прилож.ServBots().Get(ботНомер)
  245. if бот == nil {
  246. return кнт.SendString("[Броня: нет такого бота]")
  247. }
  248. танкСтата := бот.КонтБот().Get("танкСтат").Val().(ИТанкСтат)
  249. стрБроня := танкСтата.Броня().ЗначСтр()
  250. if стрБроня == "" {
  251. return кнт.SendString("[Броня: пустое значение]")
  252. }
  253. return кнт.SendString("[Броня: " + стрБроня + "]")
  254. }
  255. // Возвращает силу атаки бота
  256. func (сам *ВебАпи) статаАтака(кнт *fiber.Ctx) error {
  257. номер, ош := кнт.ParamsInt("number")
  258. if ош != nil {
  259. сообщ := fmt.Sprintf("[Атака: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  260. return кнт.SendString(сообщ)
  261. }
  262. ботНомер := АБотНомер(номер)
  263. бот := сам.прилож.ServBots().Get(ботНомер)
  264. if бот == nil {
  265. return кнт.SendString("[Атака: нет такого бота]")
  266. }
  267. танкСтата := бот.КонтБот().Get("танкСтат").Val().(ИТанкСтат)
  268. стрАтака := танкСтата.Атака().ЗначСтр()
  269. if стрАтака == "" {
  270. return кнт.SendString("[Атака: пустое значение]")
  271. }
  272. return кнт.SendString("[Атака: " + стрАтака + "]")
  273. }
  274. // Возвращает имя производства снаряда на оружейке
  275. func (сам *ВебАпи) арсеналРаботаИмя(кнт *fiber.Ctx) error {
  276. номер, ош := кнт.ParamsInt("number")
  277. if ош != nil {
  278. сообщ := fmt.Sprintf("[Тип: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  279. return кнт.SendString(сообщ)
  280. }
  281. ботНомер := АБотНомер(номер)
  282. бот := сам.прилож.ServBots().Get(ботНомер)
  283. if бот == nil {
  284. return кнт.SendString("[Тип: нет такого бота]")
  285. }
  286. арсенал := бот.КонтБот().Get("арсенал").Val().(ИАренаАрсенал)
  287. имя := арсенал.ПродуктСейчас().Имя()
  288. if имя == "" {
  289. return кнт.SendString("[Тип: пустое имя]")
  290. }
  291. return кнт.SendString("[Тип: " + имя + "]")
  292. }
  293. // Возвращает режим оружейки
  294. func (сам *ВебАпи) арсеналРежим(кнт *fiber.Ctx) error {
  295. номер, ош := кнт.ParamsInt("number")
  296. if ош != nil {
  297. сообщ := fmt.Sprintf("[Режим: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  298. return кнт.SendString(сообщ)
  299. }
  300. ботНомер := АБотНомер(номер)
  301. бот := сам.прилож.ServBots().Get(ботНомер)
  302. if бот == nil {
  303. return кнт.SendString("[Режим: нет такого бота]")
  304. }
  305. арсенал := бот.КонтБот().Get("арсенал").Val().(ИАренаАрсенал)
  306. сценаРежим := арсенал.Состояние()
  307. стрРежим := fmt.Sprint(сценаРежим.Получ())
  308. if стрРежим == "" {
  309. return кнт.SendString("[Режим: пустой режим]")
  310. }
  311. return кнт.SendString("[Режим: " + стрРежим + "]")
  312. }
  313. // Возвращает уровень арсенала
  314. func (сам *ВебАпи) арсеналУровень(кнт *fiber.Ctx) error {
  315. номер, ош := кнт.ParamsInt("number")
  316. if ош != nil {
  317. сообщ := fmt.Sprintf("[Уровень: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  318. return кнт.SendString(сообщ)
  319. }
  320. ботНомер := АБотНомер(номер)
  321. бот := сам.прилож.ServBots().Get(ботНомер)
  322. if бот == nil {
  323. return кнт.SendString("[Уровень: нет такого бота]")
  324. }
  325. арсенал := бот.КонтБот().Get("арсенал").Val().(ИАренаАрсенал)
  326. уровень := арсенал.Уровень()
  327. стрУровень := fmt.Sprint(уровень.Получ())
  328. if стрУровень == "" {
  329. return кнт.SendString("[Уровень: пустой уровень]")
  330. }
  331. return кнт.SendString("[Уровень: " + стрУровень + "]")
  332. }
  333. // Возвращает время, которое осталось на арсенале
  334. func (сам *ВебАпи) арсеналВремяОсталось(кнт *fiber.Ctx) error {
  335. номер, ош := кнт.ParamsInt("number")
  336. if ош != nil {
  337. сообщ := fmt.Sprintf("[Время: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  338. return кнт.SendString(сообщ)
  339. }
  340. ботНомер := АБотНомер(номер)
  341. бот := сам.прилож.ServBots().Get(ботНомер)
  342. if бот == nil {
  343. return кнт.SendString("[Время: нет такого бота]")
  344. }
  345. арсенал := бот.КонтБот().Get("арсенал").Val().(ИАренаАрсенал)
  346. время := арсенал.ВремяОстат()
  347. стрВремя := время.String()
  348. if стрВремя == "" {
  349. return кнт.SendString("[Время: пустой остаток времени]")
  350. }
  351. return кнт.SendString("[Время: " + стрВремя + "]")
  352. }
  353. // Возвращает лог арсенала
  354. func (сам *ВебАпи) арсеналЛог(кнт *fiber.Ctx) error {
  355. номер, ош := кнт.ParamsInt("number")
  356. if ош != nil {
  357. сообщ := fmt.Sprintf("[Время: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  358. return кнт.SendString(сообщ)
  359. }
  360. ботНомер := АБотНомер(номер)
  361. бот := сам.прилож.ServBots().Get(ботНомер)
  362. if бот == nil {
  363. return кнт.SendString("[Время: нет такого бота]")
  364. }
  365. арсенал := бот.КонтБот().Get("арсенал").Val().(ИАренаАрсенал)
  366. лог := арсенал.ВебЛог().Отладка()
  367. if лог == "" {
  368. return кнт.SendString("[Пустой лог арсенала]")
  369. }
  370. лог = strings.ReplaceAll(лог, "\n\n", "<br>")
  371. лог = strings.ReplaceAll(лог, "\n", "<br>")
  372. return кнт.SendString(лог)
  373. }
  374. // Возвращает количество производства на арсенале
  375. func (сам *ВебАпи) арсеналРаботаКоличество(кнт *fiber.Ctx) error {
  376. номер, ош := кнт.ParamsInt("number")
  377. if ош != nil {
  378. сообщ := fmt.Sprintf("[Кол: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  379. return кнт.SendString(сообщ)
  380. }
  381. ботНомер := АБотНомер(номер)
  382. бот := сам.прилож.ServBots().Get(ботНомер)
  383. if бот == nil {
  384. return кнт.SendString("[Кол: нет такого бота]")
  385. }
  386. арсенал := бот.КонтБот().Get("арсенал").Val().(ИАренаПолигон)
  387. стрКолич := арсенал.ПродуктСейчас().ЗначСтр()
  388. if стрКолич == "" {
  389. return кнт.SendString("[Кол: пустое кол]")
  390. }
  391. return кнт.SendString("[Кол: +" + стрКолич + "]")
  392. }
  393. // Возвращает время, которое осталось на полигоне
  394. func (сам *ВебАпи) полигонВремяОсталось(кнт *fiber.Ctx) error {
  395. номер, ош := кнт.ParamsInt("number")
  396. if ош != nil {
  397. сообщ := fmt.Sprintf("[Время: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  398. return кнт.SendString(сообщ)
  399. }
  400. ботНомер := АБотНомер(номер)
  401. бот := сам.прилож.ServBots().Get(ботНомер)
  402. if бот == nil {
  403. return кнт.SendString("[Время: нет такого бота]")
  404. }
  405. полигон := бот.КонтБот().Get("полигон").Val().(ИАренаПолигон)
  406. время := полигон.ВремяОстат()
  407. стрВремя := время.String()
  408. if стрВремя == "" {
  409. return кнт.SendString("[Время: пустой остаток времени]")
  410. }
  411. return кнт.SendString("[Время: " + стрВремя + "]")
  412. }
  413. // Возвращает имя добычи ресурса на полигоне
  414. func (сам *ВебАпи) полигонРаботаИмя(кнт *fiber.Ctx) error {
  415. номер, ош := кнт.ParamsInt("number")
  416. if ош != nil {
  417. сообщ := fmt.Sprintf("[Тип: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  418. return кнт.SendString(сообщ)
  419. }
  420. ботНомер := АБотНомер(номер)
  421. бот := сам.прилож.ServBots().Get(ботНомер)
  422. if бот == nil {
  423. return кнт.SendString("[Тип: нет такого бота]")
  424. }
  425. полигон := бот.КонтБот().Get("полигон").Val().(ИАренаПолигон)
  426. имя := полигон.ПродуктСейчас().Имя()
  427. if имя == "" {
  428. return кнт.SendString("[Тип: пустое имя]")
  429. }
  430. return кнт.SendString("[Тип: " + имя + "]")
  431. }
  432. // Возвращает количество добычи на полигоне
  433. func (сам *ВебАпи) полигонРаботаКоличество(кнт *fiber.Ctx) error {
  434. номер, ош := кнт.ParamsInt("number")
  435. if ош != nil {
  436. сообщ := fmt.Sprintf("[Кол: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  437. return кнт.SendString(сообщ)
  438. }
  439. ботНомер := АБотНомер(номер)
  440. бот := сам.прилож.ServBots().Get(ботНомер)
  441. if бот == nil {
  442. return кнт.SendString("[Кол: нет такого бота]")
  443. }
  444. полигон := бот.КонтБот().Get("полигон").Val().(ИАренаПолигон)
  445. стрКолич := полигон.ПродуктСейчас().ЗначСтр()
  446. if стрКолич == "" {
  447. return кнт.SendString("[Кол: пустое кол]")
  448. }
  449. return кнт.SendString("[Кол: +" + стрКолич + "]")
  450. }
  451. // Возвращает режим полигона
  452. func (сам *ВебАпи) полигонРежим(кнт *fiber.Ctx) error {
  453. номер, ош := кнт.ParamsInt("number")
  454. if ош != nil {
  455. сообщ := fmt.Sprintf("[Режим: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  456. return кнт.SendString(сообщ)
  457. }
  458. ботНомер := АБотНомер(номер)
  459. бот := сам.прилож.ServBots().Get(ботНомер)
  460. if бот == nil {
  461. return кнт.SendString("[Режим: нет такого бота]")
  462. }
  463. полигон := бот.КонтБот().Get("полигон").Val().(ИАренаПолигон)
  464. сценаРежим := полигон.Состояние()
  465. стрРежим := fmt.Sprint(сценаРежим.Получ())
  466. if стрРежим == "" {
  467. return кнт.SendString("[Режим: пустой режим]")
  468. }
  469. return кнт.SendString("[Режим: " + стрРежим + "]")
  470. }
  471. // Возвращает уровень полигона
  472. func (сам *ВебАпи) полигонУровень(кнт *fiber.Ctx) error {
  473. номер, ош := кнт.ParamsInt("number")
  474. if ош != nil {
  475. сообщ := fmt.Sprintf("[Уровень: неправильный номер бота(%q), err=<br><%v]", номер, ош.Error())
  476. return кнт.SendString(сообщ)
  477. }
  478. ботНомер := АБотНомер(номер)
  479. бот := сам.прилож.ServBots().Get(ботНомер)
  480. if бот == nil {
  481. return кнт.SendString("[Уровень: нет такого бота]")
  482. }
  483. полигон := бот.КонтБот().Get("полигон").Val().(ИАренаПолигон)
  484. уровень := полигон.Уровень()
  485. стрУровень := fmt.Sprint(уровень.Получ())
  486. if стрУровень == "" {
  487. return кнт.SendString("[Уровень: пустой уровень]")
  488. }
  489. return кнт.SendString("[Уровень: " + стрУровень + "]")
  490. }
  491. // Возвращает количество золота в ангаре
  492. func (сам *ВебАпи) ангарЗолото(кнт *fiber.Ctx) error {
  493. номер, ош := кнт.ParamsInt("number")
  494. if ош != nil {
  495. сообщ := fmt.Sprintf("[Золото: неправильный номер бота(%q), err=<br>%v]", номер, ош.Error())
  496. return кнт.SendString(сообщ)
  497. }
  498. ботНомер := АБотНомер(номер)
  499. бот := сам.прилож.ServBots().Get(ботНомер)
  500. if бот == nil {
  501. return кнт.SendString("[Золото: нет такого бота]")
  502. }
  503. ангар := бот.КонтБот().Get("ангар").Val().(ИАренаАнгар)
  504. стрЗолото := ангар.Золото().ЗначСтр()
  505. if стрЗолото == "0" {
  506. return кнт.SendString("[Золото: пустое кол]")
  507. }
  508. return кнт.SendString("[Золото: " + стрЗолото + "]")
  509. }
  510. // Возвращает количество серебра в ангаре
  511. func (сам *ВебАпи) ангарСеребро(кнт *fiber.Ctx) error {
  512. номер, ош := кнт.ParamsInt("number")
  513. if ош != nil {
  514. сообщ := fmt.Sprintf("[Серебро: неправильный номер бота(%q), err=<br>%v]", номер, ош.Error())
  515. return кнт.SendString(сообщ)
  516. }
  517. ботНомер := АБотНомер(номер)
  518. бот := сам.прилож.ServBots().Get(ботНомер)
  519. if бот == nil {
  520. return кнт.SendString("[Серебро: нет такого бота]")
  521. }
  522. ангар := бот.КонтБот().Get("ангар").Val().(ИАренаАнгар)
  523. стрСеребро := ангар.Серебро().ЗначСтр()
  524. if стрСеребро == "0" {
  525. return кнт.SendString("[Серебро: пустое кол]")
  526. }
  527. return кнт.SendString("[Серебро: " + стрСеребро + "]")
  528. }
  529. // Возвращает количество топлива в танке
  530. func (сам *ВебАпи) танкТопливо(кнт *fiber.Ctx) error {
  531. номер, ош := кнт.ParamsInt("number")
  532. if ош != nil {
  533. сообщ := fmt.Sprintf("[Топливо: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  534. return кнт.SendString(сообщ)
  535. }
  536. ботНомер := АБотНомер(номер)
  537. бот := сам.прилож.ServBots().Get(ботНомер)
  538. if бот == nil {
  539. return кнт.SendString("[Топливо: нет такого бота]")
  540. }
  541. ангар := бот.КонтБот().Get("ангар").Val().(ИАренаАнгар)
  542. стрТопливо := ангар.Топливо().ЗначСтр()
  543. if стрТопливо == "0" {
  544. return кнт.SendString("[Топливо: пустое кол]")
  545. }
  546. return кнт.SendString("[Топливо: " + стрТопливо + "]")
  547. }
  548. // Возвращает имя добычи ресурса в шахте
  549. func (сам *ВебАпи) шахтаРаботаИмя(кнт *fiber.Ctx) error {
  550. номер, ош := кнт.ParamsInt("number")
  551. if ош != nil {
  552. сообщ := fmt.Sprintf("[Тип: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  553. return кнт.SendString(сообщ)
  554. }
  555. ботНомер := АБотНомер(номер)
  556. бот := сам.прилож.ServBots().Get(ботНомер)
  557. if бот == nil {
  558. return кнт.SendString("[Тип: нет такого бота]")
  559. }
  560. шахта := бот.КонтБот().Get("шахта").Val().(ИАренаШахта)
  561. имя := шахта.ПродуктСейчас().Имя()
  562. if имя == "" {
  563. return кнт.SendString("[Тип: пустое имя]")
  564. }
  565. return кнт.SendString("[Тип: " + имя + "]")
  566. }
  567. // Возвращает количество добычи в шахте
  568. func (сам *ВебАпи) шахтаРаботаКоличество(кнт *fiber.Ctx) error {
  569. номер, ош := кнт.ParamsInt("number")
  570. if ош != nil {
  571. сообщ := fmt.Sprintf("[Кол: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  572. return кнт.SendString(сообщ)
  573. }
  574. ботНомер := АБотНомер(номер)
  575. бот := сам.прилож.ServBots().Get(ботНомер)
  576. if бот == nil {
  577. return кнт.SendString("[Кол: нет такого бота]")
  578. }
  579. шахта := бот.КонтБот().Get("шахта").Val().(ИАренаШахта)
  580. стрКолич := шахта.ПродуктСейчас().ЗначСтр()
  581. if стрКолич == "" {
  582. return кнт.SendString("[Кол: пустое кол]")
  583. }
  584. return кнт.SendString("[Кол: " + стрКолич + "]")
  585. }
  586. // Возвращает режим шахты
  587. func (сам *ВебАпи) шахтаРежим(кнт *fiber.Ctx) error {
  588. номер, ош := кнт.ParamsInt("number")
  589. if ош != nil {
  590. сообщ := fmt.Sprintf("[Режим: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  591. return кнт.SendString(сообщ)
  592. }
  593. ботНомер := АБотНомер(номер)
  594. бот := сам.прилож.ServBots().Get(ботНомер)
  595. if бот == nil {
  596. return кнт.SendString("[Режим: нет такого бота]")
  597. }
  598. шахта := бот.КонтБот().Get("шахта").Val().(ИАренаШахта)
  599. сценаРежим := шахта.Состояние()
  600. стрРежим := fmt.Sprint(сценаРежим.Получ())
  601. if стрРежим == "" {
  602. return кнт.SendString("[Режим: пустой режим]")
  603. }
  604. return кнт.SendString("[Режим: " + стрРежим + "]")
  605. }
  606. // Возвращает уровень шахты
  607. func (сам *ВебАпи) шахтаУровень(кнт *fiber.Ctx) error {
  608. номер, ош := кнт.ParamsInt("number")
  609. if ош != nil {
  610. сообщ := fmt.Sprintf("[Уровень: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  611. return кнт.SendString(сообщ)
  612. }
  613. ботНомер := АБотНомер(номер)
  614. бот := сам.прилож.ServBots().Get(ботНомер)
  615. if бот == nil {
  616. return кнт.SendString("[Уровень: нет такого бота]")
  617. }
  618. шахта := бот.КонтБот().Get("шахта").Val().(ИАренаШахта)
  619. уровень := шахта.Уровень()
  620. стрУровень := fmt.Sprint(уровень.Получ())
  621. if стрУровень == "" {
  622. return кнт.SendString("[Уровень: пустой уровень]")
  623. }
  624. return кнт.SendString("[Уровень: " + стрУровень + "]")
  625. }
  626. // Возвращает лог шахты
  627. func (сам *ВебАпи) шахтаЛог(кнт *fiber.Ctx) error {
  628. номер, ош := кнт.ParamsInt("number")
  629. if ош != nil {
  630. сообщ := fmt.Sprintf("[Время: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  631. return кнт.SendString(сообщ)
  632. }
  633. ботНомер := АБотНомер(номер)
  634. бот := сам.прилож.ServBots().Get(ботНомер)
  635. if бот == nil {
  636. return кнт.SendString("[Время: нет такого бота]")
  637. }
  638. шахта := бот.КонтБот().Get("шахта").Val().(ИАренаШахта)
  639. лог := шахта.ВебЛог().Отладка()
  640. if лог == "" {
  641. return кнт.SendString("[Пустой лог шахты]")
  642. }
  643. лог = strings.ReplaceAll(лог, "\n\n", "<br>")
  644. лог = strings.ReplaceAll(лог, "\n", "<br>")
  645. return кнт.SendString(лог)
  646. }
  647. // Возвращает время, которое осталось на шахте
  648. func (сам *ВебАпи) шахтаВремяОсталось(кнт *fiber.Ctx) error {
  649. номер, ош := кнт.ParamsInt("number")
  650. if ош != nil {
  651. сообщ := fmt.Sprintf("[Время: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  652. return кнт.SendString(сообщ)
  653. }
  654. ботНомер := АБотНомер(номер)
  655. бот := сам.прилож.ServBots().Get(ботНомер)
  656. if бот == nil {
  657. return кнт.SendString("[Время: нет такого бота]")
  658. }
  659. шахта := бот.КонтБот().Get("шахта").Val().(ИАренаШахта)
  660. время := шахта.ВремяОстат()
  661. стрВремя := время.String()
  662. if стрВремя == "" {
  663. return кнт.SendString("[Время: пустой остаток времени]")
  664. }
  665. return кнт.SendString("[Время: " + стрВремя + "]")
  666. }
  667. // Возвращает счётчик запусков сервера
  668. func (сам *ВебАпи) стартНомер(кнт *fiber.Ctx) error {
  669. return кнт.SendString("[Старт: " + fmt.Sprint(сам.прилож.Стат().СчётСтарт()) + "]")
  670. }
  671. // Возвращает аптайм сервера
  672. func (сам *ВебАпи) аптаймСервер(кнт *fiber.Ctx) error {
  673. return кнт.SendString("[Аптайм: " + сам.прилож.Стат().ВремяВсего() + "]")
  674. }