web_api.go 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676
  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. стрКолич := fmt.Sprint(колич)
  345. if стрКолич == "" {
  346. return кнт.SendString("[Кол: пустое кол]")
  347. }
  348. return кнт.SendString("[Кол: +" + стрКолич + "]")
  349. }
  350. // Возвращает время, которое осталось на полигоне
  351. func (сам *ВебАпи) полигонВремяОсталось(кнт *fiber.Ctx) error {
  352. номер, ош := кнт.ParamsInt("number")
  353. if ош != nil {
  354. сообщ := fmt.Sprintf("[Время: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  355. return кнт.SendString(сообщ)
  356. }
  357. ботНомер := АБотНомер(номер)
  358. бот := сам.прилож.ServBots().Get(ботНомер)
  359. if бот == nil {
  360. return кнт.SendString("[Время: нет такого бота]")
  361. }
  362. полигон := бот.КонтБот().Get("полигон").Val().(ИАренаПолигон)
  363. время := полигон.ВремяОстат()
  364. стрВремя := время.String()
  365. if стрВремя == "" {
  366. return кнт.SendString("[Время: пустой остаток времени]")
  367. }
  368. return кнт.SendString("[Время: " + стрВремя + "]")
  369. }
  370. // Возвращает имя добычи ресурса на полигоне
  371. func (сам *ВебАпи) полигонРаботаИмя(кнт *fiber.Ctx) error {
  372. номер, ош := кнт.ParamsInt("number")
  373. if ош != nil {
  374. сообщ := fmt.Sprintf("[Тип: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  375. return кнт.SendString(сообщ)
  376. }
  377. ботНомер := АБотНомер(номер)
  378. бот := сам.прилож.ServBots().Get(ботНомер)
  379. if бот == nil {
  380. return кнт.SendString("[Тип: нет такого бота]")
  381. }
  382. полигон := бот.КонтБот().Get("полигон").Val().(ИАренаПолигон)
  383. имя := полигон.ПродуктИмяСейчас()
  384. if имя == "" {
  385. return кнт.SendString("[Тип: пустое имя]")
  386. }
  387. return кнт.SendString("[Тип: " + имя + "]")
  388. }
  389. // Возвращает количество добычи на полигоне
  390. func (сам *ВебАпи) полигонРаботаКоличество(кнт *fiber.Ctx) error {
  391. номер, ош := кнт.ParamsInt("number")
  392. if ош != nil {
  393. сообщ := fmt.Sprintf("[Кол: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  394. return кнт.SendString(сообщ)
  395. }
  396. ботНомер := АБотНомер(номер)
  397. бот := сам.прилож.ServBots().Get(ботНомер)
  398. if бот == nil {
  399. return кнт.SendString("[Кол: нет такого бота]")
  400. }
  401. полигон := бот.КонтБот().Get("полигон").Val().(ИАренаПолигон)
  402. колич := полигон.ПродуктКолСейчас()
  403. стрКолич := fmt.Sprint(колич)
  404. if стрКолич == "" {
  405. return кнт.SendString("[Кол: пустое кол]")
  406. }
  407. return кнт.SendString("[Кол: +" + стрКолич + "]")
  408. }
  409. // Возвращает режим полигона
  410. func (сам *ВебАпи) полигонРежим(кнт *fiber.Ctx) error {
  411. номер, ош := кнт.ParamsInt("number")
  412. if ош != nil {
  413. сообщ := fmt.Sprintf("[Режим: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  414. return кнт.SendString(сообщ)
  415. }
  416. ботНомер := АБотНомер(номер)
  417. бот := сам.прилож.ServBots().Get(ботНомер)
  418. if бот == nil {
  419. return кнт.SendString("[Режим: нет такого бота]")
  420. }
  421. полигон := бот.КонтБот().Get("полигон").Val().(ИАренаПолигон)
  422. сценаРежим := полигон.АренаСостояние()
  423. стрРежим := fmt.Sprint(сценаРежим.Состояние())
  424. if стрРежим == "" {
  425. return кнт.SendString("[Режим: пустой режим]")
  426. }
  427. return кнт.SendString("[Режим: " + стрРежим + "]")
  428. }
  429. // Возвращает уровень полигона
  430. func (сам *ВебАпи) полигонУровень(кнт *fiber.Ctx) error {
  431. номер, ош := кнт.ParamsInt("number")
  432. if ош != nil {
  433. сообщ := fmt.Sprintf("[Уровень: неправильный номер бота(%q), err=<br><%v]", номер, ош.Error())
  434. return кнт.SendString(сообщ)
  435. }
  436. ботНомер := АБотНомер(номер)
  437. бот := сам.прилож.ServBots().Get(ботНомер)
  438. if бот == nil {
  439. return кнт.SendString("[Уровень: нет такого бота]")
  440. }
  441. полигон := бот.КонтБот().Get("полигон").Val().(ИАренаПолигон)
  442. уровень := полигон.Уровень()
  443. стрУровень := fmt.Sprint(уровень.Получ())
  444. if стрУровень == "" {
  445. return кнт.SendString("[Уровень: пустой уровень]")
  446. }
  447. return кнт.SendString("[Уровень: " + стрУровень + "]")
  448. }
  449. // Возвращает количество золота в ангаре
  450. func (сам *ВебАпи) ангарЗолото(кнт *fiber.Ctx) error {
  451. номер, ош := кнт.ParamsInt("number")
  452. if ош != nil {
  453. сообщ := fmt.Sprintf("[Золото: неправильный номер бота(%q), err=<br>%v]", номер, ош.Error())
  454. return кнт.SendString(сообщ)
  455. }
  456. ботНомер := АБотНомер(номер)
  457. бот := сам.прилож.ServBots().Get(ботНомер)
  458. if бот == nil {
  459. return кнт.SendString("[Золото: нет такого бота]")
  460. }
  461. ангар := бот.КонтБот().Get("ангар").Val().(ИАренаАнгар)
  462. стрЗолото := ангар.Золото().ЗначСтр()
  463. if стрЗолото == "0" {
  464. return кнт.SendString("[Золото: пустое кол]")
  465. }
  466. return кнт.SendString("[Золото: " + стрЗолото + "]")
  467. }
  468. // Возвращает количество серебра в ангаре
  469. func (сам *ВебАпи) ангарСеребро(кнт *fiber.Ctx) error {
  470. номер, ош := кнт.ParamsInt("number")
  471. if ош != nil {
  472. сообщ := fmt.Sprintf("[Серебро: неправильный номер бота(%q), err=<br>%v]", номер, ош.Error())
  473. return кнт.SendString(сообщ)
  474. }
  475. ботНомер := АБотНомер(номер)
  476. бот := сам.прилож.ServBots().Get(ботНомер)
  477. if бот == nil {
  478. return кнт.SendString("[Серебро: нет такого бота]")
  479. }
  480. ангар := бот.КонтБот().Get("ангар").Val().(ИАренаАнгар)
  481. стрСеребро := ангар.Серебро().ЗначСтр()
  482. if стрСеребро == "0" {
  483. return кнт.SendString("[Серебро: пустое кол]")
  484. }
  485. return кнт.SendString("[Серебро: " + стрСеребро + "]")
  486. }
  487. // Возвращает количество топлива в танке
  488. func (сам *ВебАпи) танкТопливо(кнт *fiber.Ctx) error {
  489. номер, ош := кнт.ParamsInt("number")
  490. if ош != nil {
  491. сообщ := fmt.Sprintf("[Топливо: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  492. return кнт.SendString(сообщ)
  493. }
  494. ботНомер := АБотНомер(номер)
  495. бот := сам.прилож.ServBots().Get(ботНомер)
  496. if бот == nil {
  497. return кнт.SendString("[Топливо: нет такого бота]")
  498. }
  499. ангар := бот.КонтБот().Get("ангар").Val().(ИАренаАнгар)
  500. стрТопливо := ангар.Топливо().ЗначСтр()
  501. if стрТопливо == "0" {
  502. return кнт.SendString("[Топливо: пустое кол]")
  503. }
  504. return кнт.SendString("[Топливо: " + стрТопливо + "]")
  505. }
  506. // Возвращает имя добычи ресурса в шахте
  507. func (сам *ВебАпи) шахтаРаботаИмя(кнт *fiber.Ctx) error {
  508. номер, ош := кнт.ParamsInt("number")
  509. if ош != nil {
  510. сообщ := fmt.Sprintf("[Тип: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  511. return кнт.SendString(сообщ)
  512. }
  513. ботНомер := АБотНомер(номер)
  514. бот := сам.прилож.ServBots().Get(ботНомер)
  515. if бот == nil {
  516. return кнт.SendString("[Тип: нет такого бота]")
  517. }
  518. шахта := бот.КонтБот().Get("шахта").Val().(ИАренаШахта)
  519. имя := шахта.ПродуктИмяСейчас()
  520. if имя == "" {
  521. return кнт.SendString("[Тип: пустое имя]")
  522. }
  523. return кнт.SendString("[Тип: " + имя + "]")
  524. }
  525. // Возвращает количество добычи в шахте
  526. func (сам *ВебАпи) шахтаРаботаКоличество(кнт *fiber.Ctx) error {
  527. номер, ош := кнт.ParamsInt("number")
  528. if ош != nil {
  529. сообщ := fmt.Sprintf("[Кол: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  530. return кнт.SendString(сообщ)
  531. }
  532. ботНомер := АБотНомер(номер)
  533. бот := сам.прилож.ServBots().Get(ботНомер)
  534. if бот == nil {
  535. return кнт.SendString("[Кол: нет такого бота]")
  536. }
  537. шахта := бот.КонтБот().Get("шахта").Val().(ИАренаШахта)
  538. колич := шахта.ПродуктКолСейчас()
  539. стрКолич := fmt.Sprint(колич)
  540. if стрКолич == "" {
  541. return кнт.SendString("[Кол: пустое кол]")
  542. }
  543. return кнт.SendString("[Кол: " + стрКолич + "]")
  544. }
  545. // Возвращает режим шахты
  546. func (сам *ВебАпи) шахтаРежим(кнт *fiber.Ctx) error {
  547. номер, ош := кнт.ParamsInt("number")
  548. if ош != nil {
  549. сообщ := fmt.Sprintf("[Режим: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  550. return кнт.SendString(сообщ)
  551. }
  552. ботНомер := АБотНомер(номер)
  553. бот := сам.прилож.ServBots().Get(ботНомер)
  554. if бот == nil {
  555. return кнт.SendString("[Режим: нет такого бота]")
  556. }
  557. шахта := бот.КонтБот().Get("шахта").Val().(ИАренаШахта)
  558. сценаРежим := шахта.АренаСостояние()
  559. стрРежим := fmt.Sprint(сценаРежим.Состояние())
  560. if стрРежим == "" {
  561. return кнт.SendString("[Режим: пустой режим]")
  562. }
  563. return кнт.SendString("[Режим: " + стрРежим + "]")
  564. }
  565. // Возвращает уровень шахты
  566. func (сам *ВебАпи) шахтаУровень(кнт *fiber.Ctx) error {
  567. номер, ош := кнт.ParamsInt("number")
  568. if ош != nil {
  569. сообщ := fmt.Sprintf("[Уровень: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  570. return кнт.SendString(сообщ)
  571. }
  572. ботНомер := АБотНомер(номер)
  573. бот := сам.прилож.ServBots().Get(ботНомер)
  574. if бот == nil {
  575. return кнт.SendString("[Уровень: нет такого бота]")
  576. }
  577. шахта := бот.КонтБот().Get("шахта").Val().(ИАренаШахта)
  578. уровень := шахта.Уровень()
  579. стрУровень := fmt.Sprint(уровень.Получ())
  580. if стрУровень == "" {
  581. return кнт.SendString("[Уровень: пустой уровень]")
  582. }
  583. return кнт.SendString("[Уровень: " + стрУровень + "]")
  584. }
  585. // Возвращает лог шахты
  586. func (сам *ВебАпи) шахтаЛог(кнт *fiber.Ctx) error {
  587. номер, ош := кнт.ParamsInt("number")
  588. if ош != nil {
  589. сообщ := fmt.Sprintf("[Время: неправильный номер бота(%q), err=%v]", номер, ош.Error())
  590. return кнт.SendString(сообщ)
  591. }
  592. ботНомер := АБотНомер(номер)
  593. бот := сам.прилож.ServBots().Get(ботНомер)
  594. if бот == nil {
  595. return кнт.SendString("[Время: нет такого бота]")
  596. }
  597. шахта := бот.КонтБот().Get("шахта").Val().(ИАренаШахта)
  598. лог := шахта.ВебЛог().Отладка()
  599. if лог == "" {
  600. return кнт.SendString("[Пустой лог шахты]")
  601. }
  602. лог = strings.ReplaceAll(лог, "\n\n", "<br>")
  603. лог = strings.ReplaceAll(лог, "\n", "<br>")
  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. стрВремя := время.String()
  621. if стрВремя == "" {
  622. return кнт.SendString("[Время: пустой остаток времени]")
  623. }
  624. return кнт.SendString("[Время: " + стрВремя + "]")
  625. }
  626. // Возвращает счётчик запусков сервера
  627. func (сам *ВебАпи) стартНомер(кнт *fiber.Ctx) error {
  628. return кнт.SendString("[Старт: " + fmt.Sprint(сам.прилож.Стат().СчётСтарт()) + "]")
  629. }
  630. // Возвращает аптайм сервера
  631. func (сам *ВебАпи) аптаймСервер(кнт *fiber.Ctx) error {
  632. return кнт.SendString("[Аптайм: " + сам.прилож.Стат().ВремяВсего() + "]")
  633. }