web_api.go 31 KB

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