@dementevdev/maxbot-ts 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/LICENSE +21 -0
  3. package/README.md +1176 -0
  4. package/dist/cjs/api/BotsApi.d.ts +17 -0
  5. package/dist/cjs/api/BotsApi.d.ts.map +1 -0
  6. package/dist/cjs/api/BotsApi.js +22 -0
  7. package/dist/cjs/api/ChatsApi.d.ts +87 -0
  8. package/dist/cjs/api/ChatsApi.d.ts.map +1 -0
  9. package/dist/cjs/api/ChatsApi.js +144 -0
  10. package/dist/cjs/api/MessagesApi.d.ts +41 -0
  11. package/dist/cjs/api/MessagesApi.d.ts.map +1 -0
  12. package/dist/cjs/api/MessagesApi.js +66 -0
  13. package/dist/cjs/api/SubscriptionsApi.d.ts +45 -0
  14. package/dist/cjs/api/SubscriptionsApi.d.ts.map +1 -0
  15. package/dist/cjs/api/SubscriptionsApi.js +69 -0
  16. package/dist/cjs/api/UploadsApi.d.ts +45 -0
  17. package/dist/cjs/api/UploadsApi.d.ts.map +1 -0
  18. package/dist/cjs/api/UploadsApi.js +113 -0
  19. package/dist/cjs/api/index.d.ts +7 -0
  20. package/dist/cjs/api/index.d.ts.map +1 -0
  21. package/dist/cjs/api/index.js +14 -0
  22. package/dist/cjs/api/interfaces.d.ts +108 -0
  23. package/dist/cjs/api/interfaces.d.ts.map +1 -0
  24. package/dist/cjs/api/interfaces.js +3 -0
  25. package/dist/cjs/bot/Bot.d.ts +380 -0
  26. package/dist/cjs/bot/Bot.d.ts.map +1 -0
  27. package/dist/cjs/bot/Bot.js +624 -0
  28. package/dist/cjs/bot/Composer.d.ts +131 -0
  29. package/dist/cjs/bot/Composer.d.ts.map +1 -0
  30. package/dist/cjs/bot/Composer.js +218 -0
  31. package/dist/cjs/bot/context/BotStartedContext.d.ts +83 -0
  32. package/dist/cjs/bot/context/BotStartedContext.d.ts.map +1 -0
  33. package/dist/cjs/bot/context/BotStartedContext.js +113 -0
  34. package/dist/cjs/bot/context/CallbackContext.d.ts +107 -0
  35. package/dist/cjs/bot/context/CallbackContext.d.ts.map +1 -0
  36. package/dist/cjs/bot/context/CallbackContext.js +158 -0
  37. package/dist/cjs/bot/context/ChatContext.d.ts +35 -0
  38. package/dist/cjs/bot/context/ChatContext.d.ts.map +1 -0
  39. package/dist/cjs/bot/context/ChatContext.js +52 -0
  40. package/dist/cjs/bot/context/MessageContext.d.ts +149 -0
  41. package/dist/cjs/bot/context/MessageContext.d.ts.map +1 -0
  42. package/dist/cjs/bot/context/MessageContext.js +228 -0
  43. package/dist/cjs/bot/context/guards.d.ts +69 -0
  44. package/dist/cjs/bot/context/guards.d.ts.map +1 -0
  45. package/dist/cjs/bot/context/guards.js +85 -0
  46. package/dist/cjs/bot/context/index.d.ts +6 -0
  47. package/dist/cjs/bot/context/index.d.ts.map +1 -0
  48. package/dist/cjs/bot/context/index.js +18 -0
  49. package/dist/cjs/bot/dispatch.d.ts +51 -0
  50. package/dist/cjs/bot/dispatch.d.ts.map +1 -0
  51. package/dist/cjs/bot/dispatch.js +201 -0
  52. package/dist/cjs/bot/index.d.ts +10 -0
  53. package/dist/cjs/bot/index.d.ts.map +1 -0
  54. package/dist/cjs/bot/index.js +24 -0
  55. package/dist/cjs/bot/lifecycle.d.ts +85 -0
  56. package/dist/cjs/bot/lifecycle.d.ts.map +1 -0
  57. package/dist/cjs/bot/lifecycle.js +167 -0
  58. package/dist/cjs/bot/metrics.d.ts +18 -0
  59. package/dist/cjs/bot/metrics.d.ts.map +1 -0
  60. package/dist/cjs/bot/metrics.js +3 -0
  61. package/dist/cjs/bot/routing.d.ts +131 -0
  62. package/dist/cjs/bot/routing.d.ts.map +1 -0
  63. package/dist/cjs/bot/routing.js +198 -0
  64. package/dist/cjs/bot/triggers.d.ts +61 -0
  65. package/dist/cjs/bot/triggers.d.ts.map +1 -0
  66. package/dist/cjs/bot/triggers.js +84 -0
  67. package/dist/cjs/core/errors/MaxError.d.ts +11 -0
  68. package/dist/cjs/core/errors/MaxError.d.ts.map +1 -0
  69. package/dist/cjs/core/errors/MaxError.js +19 -0
  70. package/dist/cjs/core/errors/errors.d.ts +59 -0
  71. package/dist/cjs/core/errors/errors.d.ts.map +1 -0
  72. package/dist/cjs/core/errors/errors.js +84 -0
  73. package/dist/cjs/core/errors/index.d.ts +3 -0
  74. package/dist/cjs/core/errors/index.d.ts.map +1 -0
  75. package/dist/cjs/core/errors/index.js +13 -0
  76. package/dist/cjs/core/http/HttpClient.d.ts +28 -0
  77. package/dist/cjs/core/http/HttpClient.d.ts.map +1 -0
  78. package/dist/cjs/core/http/HttpClient.js +148 -0
  79. package/dist/cjs/core/http/index.d.ts +3 -0
  80. package/dist/cjs/core/http/index.d.ts.map +1 -0
  81. package/dist/cjs/core/http/index.js +6 -0
  82. package/dist/cjs/core/http/interfaces.d.ts +42 -0
  83. package/dist/cjs/core/http/interfaces.d.ts.map +1 -0
  84. package/dist/cjs/core/http/interfaces.js +3 -0
  85. package/dist/cjs/core/rate-limiter/RateLimiter.d.ts +46 -0
  86. package/dist/cjs/core/rate-limiter/RateLimiter.d.ts.map +1 -0
  87. package/dist/cjs/core/rate-limiter/RateLimiter.js +110 -0
  88. package/dist/cjs/core/rate-limiter/index.d.ts +3 -0
  89. package/dist/cjs/core/rate-limiter/index.d.ts.map +1 -0
  90. package/dist/cjs/core/rate-limiter/index.js +6 -0
  91. package/dist/cjs/filters/index.d.ts +2 -0
  92. package/dist/cjs/filters/index.d.ts.map +1 -0
  93. package/dist/cjs/filters/index.js +10 -0
  94. package/dist/cjs/filters/predicates.d.ts +85 -0
  95. package/dist/cjs/filters/predicates.d.ts.map +1 -0
  96. package/dist/cjs/filters/predicates.js +111 -0
  97. package/dist/cjs/index.d.ts +11 -0
  98. package/dist/cjs/index.d.ts.map +1 -0
  99. package/dist/cjs/index.js +27 -0
  100. package/dist/cjs/middleware/compose.d.ts +28 -0
  101. package/dist/cjs/middleware/compose.d.ts.map +1 -0
  102. package/dist/cjs/middleware/compose.js +89 -0
  103. package/dist/cjs/middleware/index.d.ts +3 -0
  104. package/dist/cjs/middleware/index.d.ts.map +1 -0
  105. package/dist/cjs/middleware/index.js +7 -0
  106. package/dist/cjs/middleware/types.d.ts +17 -0
  107. package/dist/cjs/middleware/types.d.ts.map +1 -0
  108. package/dist/cjs/middleware/types.js +3 -0
  109. package/dist/cjs/package.json +3 -0
  110. package/dist/cjs/transport/LongPollingTransport.d.ts +33 -0
  111. package/dist/cjs/transport/LongPollingTransport.d.ts.map +1 -0
  112. package/dist/cjs/transport/LongPollingTransport.js +153 -0
  113. package/dist/cjs/transport/WebhookTransport.d.ts +40 -0
  114. package/dist/cjs/transport/WebhookTransport.d.ts.map +1 -0
  115. package/dist/cjs/transport/WebhookTransport.js +229 -0
  116. package/dist/cjs/transport/index.d.ts +4 -0
  117. package/dist/cjs/transport/index.d.ts.map +1 -0
  118. package/dist/cjs/transport/index.js +8 -0
  119. package/dist/cjs/transport/interfaces.d.ts +74 -0
  120. package/dist/cjs/transport/interfaces.d.ts.map +1 -0
  121. package/dist/cjs/transport/interfaces.js +3 -0
  122. package/dist/cjs/types/bot.d.ts +19 -0
  123. package/dist/cjs/types/bot.d.ts.map +1 -0
  124. package/dist/cjs/types/bot.js +3 -0
  125. package/dist/cjs/types/chat.d.ts +94 -0
  126. package/dist/cjs/types/chat.d.ts.map +1 -0
  127. package/dist/cjs/types/chat.js +3 -0
  128. package/dist/cjs/types/common.d.ts +38 -0
  129. package/dist/cjs/types/common.d.ts.map +1 -0
  130. package/dist/cjs/types/common.js +6 -0
  131. package/dist/cjs/types/index.d.ts +9 -0
  132. package/dist/cjs/types/index.d.ts.map +1 -0
  133. package/dist/cjs/types/index.js +26 -0
  134. package/dist/cjs/types/keyboard.d.ts +97 -0
  135. package/dist/cjs/types/keyboard.d.ts.map +1 -0
  136. package/dist/cjs/types/keyboard.js +3 -0
  137. package/dist/cjs/types/message.d.ts +162 -0
  138. package/dist/cjs/types/message.d.ts.map +1 -0
  139. package/dist/cjs/types/message.js +3 -0
  140. package/dist/cjs/types/subscription.d.ts +23 -0
  141. package/dist/cjs/types/subscription.d.ts.map +1 -0
  142. package/dist/cjs/types/subscription.js +3 -0
  143. package/dist/cjs/types/update.d.ts +99 -0
  144. package/dist/cjs/types/update.d.ts.map +1 -0
  145. package/dist/cjs/types/update.js +3 -0
  146. package/dist/cjs/types/upload.d.ts +29 -0
  147. package/dist/cjs/types/upload.d.ts.map +1 -0
  148. package/dist/cjs/types/upload.js +3 -0
  149. package/dist/cjs/utils/Histogram.d.ts +93 -0
  150. package/dist/cjs/utils/Histogram.d.ts.map +1 -0
  151. package/dist/cjs/utils/Histogram.js +103 -0
  152. package/dist/cjs/utils/assertNever.d.ts +19 -0
  153. package/dist/cjs/utils/assertNever.d.ts.map +1 -0
  154. package/dist/cjs/utils/assertNever.js +24 -0
  155. package/dist/cjs/utils/format.d.ts +22 -0
  156. package/dist/cjs/utils/format.d.ts.map +1 -0
  157. package/dist/cjs/utils/format.js +25 -0
  158. package/dist/cjs/utils/index.d.ts +6 -0
  159. package/dist/cjs/utils/index.d.ts.map +1 -0
  160. package/dist/cjs/utils/index.js +14 -0
  161. package/dist/cjs/utils/keyboard.d.ts +70 -0
  162. package/dist/cjs/utils/keyboard.d.ts.map +1 -0
  163. package/dist/cjs/utils/keyboard.js +166 -0
  164. package/dist/esm/api/BotsApi.d.ts +17 -0
  165. package/dist/esm/api/BotsApi.d.ts.map +1 -0
  166. package/dist/esm/api/BotsApi.js +18 -0
  167. package/dist/esm/api/ChatsApi.d.ts +87 -0
  168. package/dist/esm/api/ChatsApi.d.ts.map +1 -0
  169. package/dist/esm/api/ChatsApi.js +140 -0
  170. package/dist/esm/api/MessagesApi.d.ts +41 -0
  171. package/dist/esm/api/MessagesApi.d.ts.map +1 -0
  172. package/dist/esm/api/MessagesApi.js +62 -0
  173. package/dist/esm/api/SubscriptionsApi.d.ts +45 -0
  174. package/dist/esm/api/SubscriptionsApi.d.ts.map +1 -0
  175. package/dist/esm/api/SubscriptionsApi.js +65 -0
  176. package/dist/esm/api/UploadsApi.d.ts +45 -0
  177. package/dist/esm/api/UploadsApi.d.ts.map +1 -0
  178. package/dist/esm/api/UploadsApi.js +109 -0
  179. package/dist/esm/api/index.d.ts +7 -0
  180. package/dist/esm/api/index.d.ts.map +1 -0
  181. package/dist/esm/api/index.js +6 -0
  182. package/dist/esm/api/interfaces.d.ts +108 -0
  183. package/dist/esm/api/interfaces.d.ts.map +1 -0
  184. package/dist/esm/api/interfaces.js +2 -0
  185. package/dist/esm/bot/Bot.d.ts +380 -0
  186. package/dist/esm/bot/Bot.d.ts.map +1 -0
  187. package/dist/esm/bot/Bot.js +620 -0
  188. package/dist/esm/bot/Composer.d.ts +131 -0
  189. package/dist/esm/bot/Composer.d.ts.map +1 -0
  190. package/dist/esm/bot/Composer.js +214 -0
  191. package/dist/esm/bot/context/BotStartedContext.d.ts +83 -0
  192. package/dist/esm/bot/context/BotStartedContext.d.ts.map +1 -0
  193. package/dist/esm/bot/context/BotStartedContext.js +109 -0
  194. package/dist/esm/bot/context/CallbackContext.d.ts +107 -0
  195. package/dist/esm/bot/context/CallbackContext.d.ts.map +1 -0
  196. package/dist/esm/bot/context/CallbackContext.js +154 -0
  197. package/dist/esm/bot/context/ChatContext.d.ts +35 -0
  198. package/dist/esm/bot/context/ChatContext.d.ts.map +1 -0
  199. package/dist/esm/bot/context/ChatContext.js +48 -0
  200. package/dist/esm/bot/context/MessageContext.d.ts +149 -0
  201. package/dist/esm/bot/context/MessageContext.d.ts.map +1 -0
  202. package/dist/esm/bot/context/MessageContext.js +224 -0
  203. package/dist/esm/bot/context/guards.d.ts +69 -0
  204. package/dist/esm/bot/context/guards.d.ts.map +1 -0
  205. package/dist/esm/bot/context/guards.js +78 -0
  206. package/dist/esm/bot/context/index.d.ts +6 -0
  207. package/dist/esm/bot/context/index.d.ts.map +1 -0
  208. package/dist/esm/bot/context/index.js +6 -0
  209. package/dist/esm/bot/dispatch.d.ts +51 -0
  210. package/dist/esm/bot/dispatch.d.ts.map +1 -0
  211. package/dist/esm/bot/dispatch.js +197 -0
  212. package/dist/esm/bot/index.d.ts +10 -0
  213. package/dist/esm/bot/index.d.ts.map +1 -0
  214. package/dist/esm/bot/index.js +9 -0
  215. package/dist/esm/bot/lifecycle.d.ts +85 -0
  216. package/dist/esm/bot/lifecycle.d.ts.map +1 -0
  217. package/dist/esm/bot/lifecycle.js +163 -0
  218. package/dist/esm/bot/metrics.d.ts +18 -0
  219. package/dist/esm/bot/metrics.d.ts.map +1 -0
  220. package/dist/esm/bot/metrics.js +2 -0
  221. package/dist/esm/bot/routing.d.ts +131 -0
  222. package/dist/esm/bot/routing.d.ts.map +1 -0
  223. package/dist/esm/bot/routing.js +194 -0
  224. package/dist/esm/bot/triggers.d.ts +61 -0
  225. package/dist/esm/bot/triggers.d.ts.map +1 -0
  226. package/dist/esm/bot/triggers.js +80 -0
  227. package/dist/esm/core/errors/MaxError.d.ts +11 -0
  228. package/dist/esm/core/errors/MaxError.d.ts.map +1 -0
  229. package/dist/esm/core/errors/MaxError.js +15 -0
  230. package/dist/esm/core/errors/errors.d.ts +59 -0
  231. package/dist/esm/core/errors/errors.d.ts.map +1 -0
  232. package/dist/esm/core/errors/errors.js +75 -0
  233. package/dist/esm/core/errors/index.d.ts +3 -0
  234. package/dist/esm/core/errors/index.d.ts.map +1 -0
  235. package/dist/esm/core/errors/index.js +3 -0
  236. package/dist/esm/core/http/HttpClient.d.ts +28 -0
  237. package/dist/esm/core/http/HttpClient.d.ts.map +1 -0
  238. package/dist/esm/core/http/HttpClient.js +144 -0
  239. package/dist/esm/core/http/index.d.ts +3 -0
  240. package/dist/esm/core/http/index.d.ts.map +1 -0
  241. package/dist/esm/core/http/index.js +2 -0
  242. package/dist/esm/core/http/interfaces.d.ts +42 -0
  243. package/dist/esm/core/http/interfaces.d.ts.map +1 -0
  244. package/dist/esm/core/http/interfaces.js +2 -0
  245. package/dist/esm/core/rate-limiter/RateLimiter.d.ts +46 -0
  246. package/dist/esm/core/rate-limiter/RateLimiter.d.ts.map +1 -0
  247. package/dist/esm/core/rate-limiter/RateLimiter.js +106 -0
  248. package/dist/esm/core/rate-limiter/index.d.ts +3 -0
  249. package/dist/esm/core/rate-limiter/index.d.ts.map +1 -0
  250. package/dist/esm/core/rate-limiter/index.js +2 -0
  251. package/dist/esm/filters/index.d.ts +2 -0
  252. package/dist/esm/filters/index.d.ts.map +1 -0
  253. package/dist/esm/filters/index.js +2 -0
  254. package/dist/esm/filters/predicates.d.ts +85 -0
  255. package/dist/esm/filters/predicates.d.ts.map +1 -0
  256. package/dist/esm/filters/predicates.js +104 -0
  257. package/dist/esm/index.d.ts +11 -0
  258. package/dist/esm/index.d.ts.map +1 -0
  259. package/dist/esm/index.js +11 -0
  260. package/dist/esm/middleware/compose.d.ts +28 -0
  261. package/dist/esm/middleware/compose.d.ts.map +1 -0
  262. package/dist/esm/middleware/compose.js +85 -0
  263. package/dist/esm/middleware/index.d.ts +3 -0
  264. package/dist/esm/middleware/index.d.ts.map +1 -0
  265. package/dist/esm/middleware/index.js +2 -0
  266. package/dist/esm/middleware/types.d.ts +17 -0
  267. package/dist/esm/middleware/types.d.ts.map +1 -0
  268. package/dist/esm/middleware/types.js +2 -0
  269. package/dist/esm/transport/LongPollingTransport.d.ts +33 -0
  270. package/dist/esm/transport/LongPollingTransport.d.ts.map +1 -0
  271. package/dist/esm/transport/LongPollingTransport.js +149 -0
  272. package/dist/esm/transport/WebhookTransport.d.ts +40 -0
  273. package/dist/esm/transport/WebhookTransport.d.ts.map +1 -0
  274. package/dist/esm/transport/WebhookTransport.js +225 -0
  275. package/dist/esm/transport/index.d.ts +4 -0
  276. package/dist/esm/transport/index.d.ts.map +1 -0
  277. package/dist/esm/transport/index.js +3 -0
  278. package/dist/esm/transport/interfaces.d.ts +74 -0
  279. package/dist/esm/transport/interfaces.d.ts.map +1 -0
  280. package/dist/esm/transport/interfaces.js +2 -0
  281. package/dist/esm/types/bot.d.ts +19 -0
  282. package/dist/esm/types/bot.d.ts.map +1 -0
  283. package/dist/esm/types/bot.js +2 -0
  284. package/dist/esm/types/chat.d.ts +94 -0
  285. package/dist/esm/types/chat.d.ts.map +1 -0
  286. package/dist/esm/types/chat.js +2 -0
  287. package/dist/esm/types/common.d.ts +38 -0
  288. package/dist/esm/types/common.d.ts.map +1 -0
  289. package/dist/esm/types/common.js +5 -0
  290. package/dist/esm/types/index.d.ts +9 -0
  291. package/dist/esm/types/index.d.ts.map +1 -0
  292. package/dist/esm/types/index.js +10 -0
  293. package/dist/esm/types/keyboard.d.ts +97 -0
  294. package/dist/esm/types/keyboard.d.ts.map +1 -0
  295. package/dist/esm/types/keyboard.js +2 -0
  296. package/dist/esm/types/message.d.ts +162 -0
  297. package/dist/esm/types/message.d.ts.map +1 -0
  298. package/dist/esm/types/message.js +2 -0
  299. package/dist/esm/types/subscription.d.ts +23 -0
  300. package/dist/esm/types/subscription.d.ts.map +1 -0
  301. package/dist/esm/types/subscription.js +2 -0
  302. package/dist/esm/types/update.d.ts +99 -0
  303. package/dist/esm/types/update.d.ts.map +1 -0
  304. package/dist/esm/types/update.js +2 -0
  305. package/dist/esm/types/upload.d.ts +29 -0
  306. package/dist/esm/types/upload.d.ts.map +1 -0
  307. package/dist/esm/types/upload.js +2 -0
  308. package/dist/esm/utils/Histogram.d.ts +93 -0
  309. package/dist/esm/utils/Histogram.d.ts.map +1 -0
  310. package/dist/esm/utils/Histogram.js +99 -0
  311. package/dist/esm/utils/assertNever.d.ts +19 -0
  312. package/dist/esm/utils/assertNever.d.ts.map +1 -0
  313. package/dist/esm/utils/assertNever.js +21 -0
  314. package/dist/esm/utils/format.d.ts +22 -0
  315. package/dist/esm/utils/format.d.ts.map +1 -0
  316. package/dist/esm/utils/format.js +22 -0
  317. package/dist/esm/utils/index.d.ts +6 -0
  318. package/dist/esm/utils/index.d.ts.map +1 -0
  319. package/dist/esm/utils/index.js +5 -0
  320. package/dist/esm/utils/keyboard.d.ts +70 -0
  321. package/dist/esm/utils/keyboard.d.ts.map +1 -0
  322. package/dist/esm/utils/keyboard.js +162 -0
  323. package/dist/types/api/BotsApi.d.ts +17 -0
  324. package/dist/types/api/BotsApi.d.ts.map +1 -0
  325. package/dist/types/api/ChatsApi.d.ts +87 -0
  326. package/dist/types/api/ChatsApi.d.ts.map +1 -0
  327. package/dist/types/api/MessagesApi.d.ts +41 -0
  328. package/dist/types/api/MessagesApi.d.ts.map +1 -0
  329. package/dist/types/api/SubscriptionsApi.d.ts +45 -0
  330. package/dist/types/api/SubscriptionsApi.d.ts.map +1 -0
  331. package/dist/types/api/UploadsApi.d.ts +45 -0
  332. package/dist/types/api/UploadsApi.d.ts.map +1 -0
  333. package/dist/types/api/index.d.ts +7 -0
  334. package/dist/types/api/index.d.ts.map +1 -0
  335. package/dist/types/api/interfaces.d.ts +108 -0
  336. package/dist/types/api/interfaces.d.ts.map +1 -0
  337. package/dist/types/bot/Bot.d.ts +380 -0
  338. package/dist/types/bot/Bot.d.ts.map +1 -0
  339. package/dist/types/bot/Composer.d.ts +131 -0
  340. package/dist/types/bot/Composer.d.ts.map +1 -0
  341. package/dist/types/bot/context/BotStartedContext.d.ts +83 -0
  342. package/dist/types/bot/context/BotStartedContext.d.ts.map +1 -0
  343. package/dist/types/bot/context/CallbackContext.d.ts +107 -0
  344. package/dist/types/bot/context/CallbackContext.d.ts.map +1 -0
  345. package/dist/types/bot/context/ChatContext.d.ts +35 -0
  346. package/dist/types/bot/context/ChatContext.d.ts.map +1 -0
  347. package/dist/types/bot/context/MessageContext.d.ts +149 -0
  348. package/dist/types/bot/context/MessageContext.d.ts.map +1 -0
  349. package/dist/types/bot/context/guards.d.ts +69 -0
  350. package/dist/types/bot/context/guards.d.ts.map +1 -0
  351. package/dist/types/bot/context/index.d.ts +6 -0
  352. package/dist/types/bot/context/index.d.ts.map +1 -0
  353. package/dist/types/bot/dispatch.d.ts +51 -0
  354. package/dist/types/bot/dispatch.d.ts.map +1 -0
  355. package/dist/types/bot/index.d.ts +10 -0
  356. package/dist/types/bot/index.d.ts.map +1 -0
  357. package/dist/types/bot/lifecycle.d.ts +85 -0
  358. package/dist/types/bot/lifecycle.d.ts.map +1 -0
  359. package/dist/types/bot/metrics.d.ts +18 -0
  360. package/dist/types/bot/metrics.d.ts.map +1 -0
  361. package/dist/types/bot/routing.d.ts +131 -0
  362. package/dist/types/bot/routing.d.ts.map +1 -0
  363. package/dist/types/bot/triggers.d.ts +61 -0
  364. package/dist/types/bot/triggers.d.ts.map +1 -0
  365. package/dist/types/core/errors/MaxError.d.ts +11 -0
  366. package/dist/types/core/errors/MaxError.d.ts.map +1 -0
  367. package/dist/types/core/errors/errors.d.ts +59 -0
  368. package/dist/types/core/errors/errors.d.ts.map +1 -0
  369. package/dist/types/core/errors/index.d.ts +3 -0
  370. package/dist/types/core/errors/index.d.ts.map +1 -0
  371. package/dist/types/core/http/HttpClient.d.ts +28 -0
  372. package/dist/types/core/http/HttpClient.d.ts.map +1 -0
  373. package/dist/types/core/http/index.d.ts +3 -0
  374. package/dist/types/core/http/index.d.ts.map +1 -0
  375. package/dist/types/core/http/interfaces.d.ts +42 -0
  376. package/dist/types/core/http/interfaces.d.ts.map +1 -0
  377. package/dist/types/core/rate-limiter/RateLimiter.d.ts +46 -0
  378. package/dist/types/core/rate-limiter/RateLimiter.d.ts.map +1 -0
  379. package/dist/types/core/rate-limiter/index.d.ts +3 -0
  380. package/dist/types/core/rate-limiter/index.d.ts.map +1 -0
  381. package/dist/types/filters/index.d.ts +2 -0
  382. package/dist/types/filters/index.d.ts.map +1 -0
  383. package/dist/types/filters/predicates.d.ts +85 -0
  384. package/dist/types/filters/predicates.d.ts.map +1 -0
  385. package/dist/types/index.d.ts +11 -0
  386. package/dist/types/index.d.ts.map +1 -0
  387. package/dist/types/middleware/compose.d.ts +28 -0
  388. package/dist/types/middleware/compose.d.ts.map +1 -0
  389. package/dist/types/middleware/index.d.ts +3 -0
  390. package/dist/types/middleware/index.d.ts.map +1 -0
  391. package/dist/types/middleware/types.d.ts +17 -0
  392. package/dist/types/middleware/types.d.ts.map +1 -0
  393. package/dist/types/transport/LongPollingTransport.d.ts +33 -0
  394. package/dist/types/transport/LongPollingTransport.d.ts.map +1 -0
  395. package/dist/types/transport/WebhookTransport.d.ts +40 -0
  396. package/dist/types/transport/WebhookTransport.d.ts.map +1 -0
  397. package/dist/types/transport/index.d.ts +4 -0
  398. package/dist/types/transport/index.d.ts.map +1 -0
  399. package/dist/types/transport/interfaces.d.ts +74 -0
  400. package/dist/types/transport/interfaces.d.ts.map +1 -0
  401. package/dist/types/types/bot.d.ts +19 -0
  402. package/dist/types/types/bot.d.ts.map +1 -0
  403. package/dist/types/types/chat.d.ts +94 -0
  404. package/dist/types/types/chat.d.ts.map +1 -0
  405. package/dist/types/types/common.d.ts +38 -0
  406. package/dist/types/types/common.d.ts.map +1 -0
  407. package/dist/types/types/index.d.ts +9 -0
  408. package/dist/types/types/index.d.ts.map +1 -0
  409. package/dist/types/types/keyboard.d.ts +97 -0
  410. package/dist/types/types/keyboard.d.ts.map +1 -0
  411. package/dist/types/types/message.d.ts +162 -0
  412. package/dist/types/types/message.d.ts.map +1 -0
  413. package/dist/types/types/subscription.d.ts +23 -0
  414. package/dist/types/types/subscription.d.ts.map +1 -0
  415. package/dist/types/types/update.d.ts +99 -0
  416. package/dist/types/types/update.d.ts.map +1 -0
  417. package/dist/types/types/upload.d.ts +29 -0
  418. package/dist/types/types/upload.d.ts.map +1 -0
  419. package/dist/types/utils/Histogram.d.ts +93 -0
  420. package/dist/types/utils/Histogram.d.ts.map +1 -0
  421. package/dist/types/utils/assertNever.d.ts +19 -0
  422. package/dist/types/utils/assertNever.d.ts.map +1 -0
  423. package/dist/types/utils/format.d.ts +22 -0
  424. package/dist/types/utils/format.d.ts.map +1 -0
  425. package/dist/types/utils/index.d.ts +6 -0
  426. package/dist/types/utils/index.d.ts.map +1 -0
  427. package/dist/types/utils/keyboard.d.ts +70 -0
  428. package/dist/types/utils/keyboard.d.ts.map +1 -0
  429. package/package.json +84 -0
@@ -0,0 +1,131 @@
1
+ import type { Middleware } from "../middleware/types.js";
2
+ import type { Context } from "./Bot.js";
3
+ import type { UpdateType } from "../types/update.js";
4
+ import { type HearsTrigger } from "./triggers.js";
5
+ /**
6
+ * Тип предиката-фильтра, уточняющего тип контекста.
7
+ *
8
+ * @example
9
+ * const isAdmin: Filter<Context, MessageContext> = (ctx) =>
10
+ * isMessageContext(ctx) && ctx.senderId === ADMIN_ID;
11
+ */
12
+ export type Filter<Ctx, Narrowed extends Ctx> = (ctx: Ctx) => ctx is Narrowed;
13
+ /**
14
+ * Composer — независимый суб-роутер, совместимый с `bot.use()`.
15
+ *
16
+ * Собирает маршруты (`command`, `hears`, `action`, `on`, `filter`) в изолированную
17
+ * цепочку middleware и подключается к боту через `bot.use(composer.middleware())`.
18
+ *
19
+ * Позволяет разбить логику бота на независимые модули с явными границами:
20
+ * - `adminRouter` — команды только для администраторов
21
+ * - `shopRouter` — весь шоппинг-флоу
22
+ * - `notificationRouter` — обработка системных событий
23
+ *
24
+ * @example Суб-роутер для администраторов
25
+ * ```ts
26
+ * const adminRouter = new Composer<Context>();
27
+ *
28
+ * adminRouter.use(onlyAdminMiddleware);
29
+ * adminRouter.command('stats', async (ctx) => { ... });
30
+ * adminRouter.hears(/^админ/i, async (ctx) => { ... });
31
+ *
32
+ * bot.use(adminRouter.middleware());
33
+ * ```
34
+ *
35
+ * @example bot.filter() + Composer
36
+ * ```ts
37
+ * const privateRouter = new Composer<Context>();
38
+ * privateRouter.command('start', async (ctx) => { ... });
39
+ *
40
+ * // Подключаем только для приватных диалогов
41
+ * bot.filter(isPrivateChat, privateRouter.middleware());
42
+ * ```
43
+ */
44
+ export declare class Composer<Ctx extends Context = Context> {
45
+ private readonly fns;
46
+ /**
47
+ * Добавить middleware в цепочку.
48
+ *
49
+ * Middleware получает контекст и функцию `next` для перехода к следующему звену.
50
+ *
51
+ * @example
52
+ * composer.use(async (ctx, next) => {
53
+ * console.log('before');
54
+ * await next();
55
+ * console.log('after');
56
+ * });
57
+ */
58
+ use(middleware: Middleware<Ctx>): this;
59
+ /**
60
+ * Подписаться на конкретный тип обновления.
61
+ *
62
+ * @example
63
+ * composer.on('bot_added', async (ctx, next) => {
64
+ * await ctx.reply('Бот добавлен!');
65
+ * });
66
+ */
67
+ on(event: UpdateType, ...fns: Middleware<Ctx>[]): this;
68
+ /**
69
+ * Подписаться на команду (`/name`).
70
+ *
71
+ * @example
72
+ * composer.command('help', async (ctx) => { ... });
73
+ * composer.command('pay', authMw, async (ctx) => { ... });
74
+ */
75
+ command(name: string, ...fns: Middleware<Ctx>[]): this;
76
+ /**
77
+ * Подписаться на текст сообщения.
78
+ *
79
+ * `pattern` может быть строкой, RegExp или массивом — срабатывает на первое совпадение.
80
+ * При совпадении RegExp устанавливает `ctx.match` с capture-группами.
81
+ *
82
+ * @example
83
+ * composer.hears(/(\d+)\+(\d+)/, async (ctx) => {
84
+ * const [, a, b] = ctx.match!;
85
+ * });
86
+ * composer.hears([/^\d+$/, 'помощь'], handler); // массив паттернов
87
+ */
88
+ hears(pattern: HearsTrigger, ...fns: Middleware<Ctx>[]): this;
89
+ /**
90
+ * Подписаться на callback payload.
91
+ *
92
+ * `pattern` может быть строкой, RegExp или массивом — срабатывает на первое совпадение.
93
+ * При совпадении RegExp устанавливает `ctx.match` с capture-группами.
94
+ *
95
+ * @example
96
+ * composer.action(/^buy:(\d+)$/, async (ctx) => {
97
+ * const [, id] = ctx.match!;
98
+ * });
99
+ * composer.action(['confirm', 'ok'], handler); // несколько payload
100
+ */
101
+ action(pattern: HearsTrigger, ...fns: Middleware<Ctx>[]): this;
102
+ /**
103
+ * Фильтровать контекст по предикату с сужением типа.
104
+ *
105
+ * Если предикат возвращает `true` — выполняются handlers с суженным типом.
106
+ * Если `false` — вызывается `next()` (передаётся наружу).
107
+ *
108
+ * @example Только авторизованные пользователи
109
+ * composer.filter(isAdmin, async (ctx) => {
110
+ * await ctx.reply('Привет, администратор!');
111
+ * });
112
+ *
113
+ * @example Только сообщения с текстом
114
+ * composer.filter(hasText, async (ctx) => {
115
+ * console.log(ctx.text.toUpperCase()); // ctx.text: string
116
+ * });
117
+ */
118
+ filter<Narrowed extends Ctx>(predicate: (ctx: Ctx) => ctx is Narrowed, ...fns: Middleware<Narrowed>[]): this;
119
+ /**
120
+ * Вернуть этот Composer как один `Middleware` для подключения к боту или другому Composer.
121
+ *
122
+ * @example
123
+ * const router = new Composer();
124
+ * router.command('start', handler);
125
+ * bot.use(router.middleware());
126
+ */
127
+ middleware(): Middleware<Ctx>;
128
+ /** Сборка цепочки из нескольких fns в единый терминальный обработчик (без next). */
129
+ private pipe;
130
+ }
131
+ //# sourceMappingURL=Composer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../../src/bot/Composer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,MAAM,MAAM,CAAC,GAAG,EAAE,QAAQ,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,QAAQ,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,QAAQ,CAAC,GAAG,SAAS,OAAO,GAAG,OAAO;IACjD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAyB;IAE7C;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI;IAKtC;;;;;;;OAOG;IACH,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAatD;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAkBtD;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAkB7D;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAkB9D;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,QAAQ,SAAS,GAAG,EACzB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,QAAQ,EACxC,GAAG,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,GAC7B,IAAI;IAWP;;;;;;;OAOG;IACH,UAAU,IAAI,UAAU,CAAC,GAAG,CAAC;IAU7B,oFAAoF;IACpF,OAAO,CAAC,IAAI;CAOb"}
@@ -0,0 +1,214 @@
1
+ import { compose } from "../middleware/compose.js";
2
+ import { isMessageContext, isCallbackContext } from "./context/guards.js";
3
+ import { matchTrigger } from "./triggers.js";
4
+ /**
5
+ * Composer — независимый суб-роутер, совместимый с `bot.use()`.
6
+ *
7
+ * Собирает маршруты (`command`, `hears`, `action`, `on`, `filter`) в изолированную
8
+ * цепочку middleware и подключается к боту через `bot.use(composer.middleware())`.
9
+ *
10
+ * Позволяет разбить логику бота на независимые модули с явными границами:
11
+ * - `adminRouter` — команды только для администраторов
12
+ * - `shopRouter` — весь шоппинг-флоу
13
+ * - `notificationRouter` — обработка системных событий
14
+ *
15
+ * @example Суб-роутер для администраторов
16
+ * ```ts
17
+ * const adminRouter = new Composer<Context>();
18
+ *
19
+ * adminRouter.use(onlyAdminMiddleware);
20
+ * adminRouter.command('stats', async (ctx) => { ... });
21
+ * adminRouter.hears(/^админ/i, async (ctx) => { ... });
22
+ *
23
+ * bot.use(adminRouter.middleware());
24
+ * ```
25
+ *
26
+ * @example bot.filter() + Composer
27
+ * ```ts
28
+ * const privateRouter = new Composer<Context>();
29
+ * privateRouter.command('start', async (ctx) => { ... });
30
+ *
31
+ * // Подключаем только для приватных диалогов
32
+ * bot.filter(isPrivateChat, privateRouter.middleware());
33
+ * ```
34
+ */
35
+ export class Composer {
36
+ fns = [];
37
+ /**
38
+ * Добавить middleware в цепочку.
39
+ *
40
+ * Middleware получает контекст и функцию `next` для перехода к следующему звену.
41
+ *
42
+ * @example
43
+ * composer.use(async (ctx, next) => {
44
+ * console.log('before');
45
+ * await next();
46
+ * console.log('after');
47
+ * });
48
+ */
49
+ use(middleware) {
50
+ this.fns.push(middleware);
51
+ return this;
52
+ }
53
+ /**
54
+ * Подписаться на конкретный тип обновления.
55
+ *
56
+ * @example
57
+ * composer.on('bot_added', async (ctx, next) => {
58
+ * await ctx.reply('Бот добавлен!');
59
+ * });
60
+ */
61
+ on(event, ...fns) {
62
+ const composed = this.pipe(...fns);
63
+ this.fns.push(async (ctx, next) => {
64
+ // ctx as Context — безопасно: Ctx extends Context, все .raw содержат update_type
65
+ if (ctx.raw.update_type === event) {
66
+ await composed(ctx);
67
+ }
68
+ else {
69
+ await next();
70
+ }
71
+ });
72
+ return this;
73
+ }
74
+ /**
75
+ * Подписаться на команду (`/name`).
76
+ *
77
+ * @example
78
+ * composer.command('help', async (ctx) => { ... });
79
+ * composer.command('pay', authMw, async (ctx) => { ... });
80
+ */
81
+ command(name, ...fns) {
82
+ const composed = this.pipe(...fns);
83
+ this.fns.push(async (ctx, next) => {
84
+ if (!isMessageContext(ctx)) {
85
+ await next();
86
+ return;
87
+ }
88
+ const text = ctx.text ?? "";
89
+ const normalized = name.startsWith("/") ? name : `/${name}`;
90
+ if (text === normalized || text.startsWith(`${normalized} `)) {
91
+ await composed(ctx);
92
+ }
93
+ else {
94
+ await next();
95
+ }
96
+ });
97
+ return this;
98
+ }
99
+ /**
100
+ * Подписаться на текст сообщения.
101
+ *
102
+ * `pattern` может быть строкой, RegExp или массивом — срабатывает на первое совпадение.
103
+ * При совпадении RegExp устанавливает `ctx.match` с capture-группами.
104
+ *
105
+ * @example
106
+ * composer.hears(/(\d+)\+(\d+)/, async (ctx) => {
107
+ * const [, a, b] = ctx.match!;
108
+ * });
109
+ * composer.hears([/^\d+$/, 'помощь'], handler); // массив паттернов
110
+ */
111
+ hears(pattern, ...fns) {
112
+ const composed = this.pipe(...fns);
113
+ this.fns.push(async (ctx, next) => {
114
+ if (!isMessageContext(ctx)) {
115
+ await next();
116
+ return;
117
+ }
118
+ const result = matchTrigger(pattern, ctx.text ?? "");
119
+ if (result !== null) {
120
+ if (result !== true)
121
+ ctx.match = result;
122
+ await composed(ctx);
123
+ }
124
+ else {
125
+ await next();
126
+ }
127
+ });
128
+ return this;
129
+ }
130
+ /**
131
+ * Подписаться на callback payload.
132
+ *
133
+ * `pattern` может быть строкой, RegExp или массивом — срабатывает на первое совпадение.
134
+ * При совпадении RegExp устанавливает `ctx.match` с capture-группами.
135
+ *
136
+ * @example
137
+ * composer.action(/^buy:(\d+)$/, async (ctx) => {
138
+ * const [, id] = ctx.match!;
139
+ * });
140
+ * composer.action(['confirm', 'ok'], handler); // несколько payload
141
+ */
142
+ action(pattern, ...fns) {
143
+ const composed = this.pipe(...fns);
144
+ this.fns.push(async (ctx, next) => {
145
+ if (!isCallbackContext(ctx)) {
146
+ await next();
147
+ return;
148
+ }
149
+ const result = matchTrigger(pattern, ctx.data);
150
+ if (result !== null) {
151
+ if (result !== true)
152
+ ctx.match = result;
153
+ await composed(ctx);
154
+ }
155
+ else {
156
+ await next();
157
+ }
158
+ });
159
+ return this;
160
+ }
161
+ /**
162
+ * Фильтровать контекст по предикату с сужением типа.
163
+ *
164
+ * Если предикат возвращает `true` — выполняются handlers с суженным типом.
165
+ * Если `false` — вызывается `next()` (передаётся наружу).
166
+ *
167
+ * @example Только авторизованные пользователи
168
+ * composer.filter(isAdmin, async (ctx) => {
169
+ * await ctx.reply('Привет, администратор!');
170
+ * });
171
+ *
172
+ * @example Только сообщения с текстом
173
+ * composer.filter(hasText, async (ctx) => {
174
+ * console.log(ctx.text.toUpperCase()); // ctx.text: string
175
+ * });
176
+ */
177
+ filter(predicate, ...fns) {
178
+ this.fns.push(async (ctx, next) => {
179
+ if (predicate(ctx)) {
180
+ await compose(fns, async () => { })(ctx);
181
+ }
182
+ else {
183
+ await next();
184
+ }
185
+ });
186
+ return this;
187
+ }
188
+ /**
189
+ * Вернуть этот Composer как один `Middleware` для подключения к боту или другому Composer.
190
+ *
191
+ * @example
192
+ * const router = new Composer();
193
+ * router.command('start', handler);
194
+ * bot.use(router.middleware());
195
+ */
196
+ middleware() {
197
+ if (this.fns.length === 0) {
198
+ return async (_ctx, next) => next();
199
+ }
200
+ return async (ctx, next) => {
201
+ // Запускаем внутреннюю цепочку; в конце вызываем внешний next — fall-through
202
+ await compose(this.fns, async () => next())(ctx);
203
+ };
204
+ }
205
+ /** Сборка цепочки из нескольких fns в единый терминальный обработчик (без next). */
206
+ pipe(...fns) {
207
+ if (fns.length === 1) {
208
+ const fn = fns[0];
209
+ return (ctx) => Promise.resolve(fn(ctx, async () => { }));
210
+ }
211
+ return compose(fns, async () => { });
212
+ }
213
+ }
214
+ //# sourceMappingURL=Composer.js.map
@@ -0,0 +1,83 @@
1
+ import type { ContextApi, SendOptions } from "./MessageContext.js";
2
+ import type { Message } from "../../types/message.js";
3
+ import type { User } from "../../types/common.js";
4
+ import type { BotStartedUpdate } from "../../types/update.js";
5
+ import type { Context } from "../Bot.js";
6
+ /**
7
+ * Контекст события bot_started.
8
+ *
9
+ * Возникает когда пользователь нажимает кнопку Start в диалоге с ботом
10
+ * или переходит по deep link вида `https://max.ru/...?start=<payload>`.
11
+ *
12
+ * Используйте `ctx.startPayload` для чтения payload из deep link:
13
+ * реферальные программы, onboarding-флоу, контекстный запуск бота.
14
+ *
15
+ * @example Реферальная ссылка
16
+ * bot.onStart(async (ctx) => {
17
+ * if (ctx.startPayload) {
18
+ * await ctx.reply(`Вы пришли по ссылке: ref=${ctx.startPayload}`);
19
+ * } else {
20
+ * await ctx.reply("Добро пожаловать!");
21
+ * }
22
+ * });
23
+ */
24
+ export declare class BotStartedContext {
25
+ private readonly update;
26
+ private readonly api;
27
+ constructor(update: BotStartedUpdate, api: ContextApi);
28
+ /** Исходное обновление */
29
+ get raw(): BotStartedUpdate;
30
+ /** ID чата (диалога), в котором произошло событие */
31
+ get chatId(): number;
32
+ /** Пользователь, нажавший Start */
33
+ get user(): User;
34
+ /** ID пользователя */
35
+ get userId(): number;
36
+ /**
37
+ * Payload из deep link.
38
+ *
39
+ * `null` или `undefined` если Start нажат без параметра (обычный запуск).
40
+ * Непустая строка — значение параметра `start` из ссылки.
41
+ *
42
+ * @example
43
+ * // Ссылка: https://max.ru/...?start=ref_123
44
+ * bot.onStart(async (ctx) => {
45
+ * const ref = ctx.startPayload; // "ref_123" | null | undefined
46
+ * });
47
+ */
48
+ get startPayload(): string | null | undefined;
49
+ /**
50
+ * Отправить сообщение в диалог пользователю.
51
+ *
52
+ * @example
53
+ * bot.onStart(async (ctx) => {
54
+ * if (isBotStartedContext(ctx)) await ctx.reply('Добро пожаловать!');
55
+ * });
56
+ */
57
+ reply(text: string, options?: SendOptions): Promise<Message>;
58
+ /**
59
+ * Отправить произвольное действие в чат (диалог пользователя).
60
+ *
61
+ * Распространённые значения: `"typing_on"`, `"sending_photo"`,
62
+ * `"sending_video"`, `"sending_audio"`, `"sending_file"`, `"mark_seen"`.
63
+ *
64
+ * @example
65
+ * bot.onStart(async (ctx) => {
66
+ * await ctx.sendAction('typing_on');
67
+ * await ctx.reply('Добро пожаловать!');
68
+ * });
69
+ */
70
+ sendAction(action: string): Promise<void>;
71
+ /**
72
+ * Проверить тип контекста с сужением типа (type narrowing).
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * bot.onStart(async (ctx) => {
77
+ * if (ctx.has(isPrivateChat)) { ... }
78
+ * });
79
+ * ```
80
+ */
81
+ has<R extends Context>(filter: (ctx: Context) => ctx is R): this is R;
82
+ }
83
+ //# sourceMappingURL=BotStartedContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BotStartedContext.d.ts","sourceRoot":"","sources":["../../../../src/bot/context/BotStartedContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,iBAAiB;IAG1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBADH,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,UAAU;IAGlC,0BAA0B;IAC1B,IAAI,GAAG,IAAI,gBAAgB,CAE1B;IAED,qDAAqD;IACrD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,mCAAmC;IACnC,IAAI,IAAI,IAAI,IAAI,CAEf;IAED,sBAAsB;IACtB,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;;;;;;;;;OAWG;IACH,IAAI,YAAY,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,CAE5C;IAED;;;;;;;OAOG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBlE;;;;;;;;;;;OAWG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;;;;;;;;OASG;IACH,GAAG,CAAC,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC;CAGtE"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Контекст события bot_started.
3
+ *
4
+ * Возникает когда пользователь нажимает кнопку Start в диалоге с ботом
5
+ * или переходит по deep link вида `https://max.ru/...?start=<payload>`.
6
+ *
7
+ * Используйте `ctx.startPayload` для чтения payload из deep link:
8
+ * реферальные программы, onboarding-флоу, контекстный запуск бота.
9
+ *
10
+ * @example Реферальная ссылка
11
+ * bot.onStart(async (ctx) => {
12
+ * if (ctx.startPayload) {
13
+ * await ctx.reply(`Вы пришли по ссылке: ref=${ctx.startPayload}`);
14
+ * } else {
15
+ * await ctx.reply("Добро пожаловать!");
16
+ * }
17
+ * });
18
+ */
19
+ export class BotStartedContext {
20
+ update;
21
+ api;
22
+ constructor(
23
+ // BotStartedUpdate — не общий Update: типизация гарантирует chat_id, user, payload
24
+ update, api) {
25
+ this.update = update;
26
+ this.api = api;
27
+ }
28
+ /** Исходное обновление */
29
+ get raw() {
30
+ return this.update;
31
+ }
32
+ /** ID чата (диалога), в котором произошло событие */
33
+ get chatId() {
34
+ return this.update.chat_id;
35
+ }
36
+ /** Пользователь, нажавший Start */
37
+ get user() {
38
+ return this.update.user;
39
+ }
40
+ /** ID пользователя */
41
+ get userId() {
42
+ return this.update.user.user_id;
43
+ }
44
+ /**
45
+ * Payload из deep link.
46
+ *
47
+ * `null` или `undefined` если Start нажат без параметра (обычный запуск).
48
+ * Непустая строка — значение параметра `start` из ссылки.
49
+ *
50
+ * @example
51
+ * // Ссылка: https://max.ru/...?start=ref_123
52
+ * bot.onStart(async (ctx) => {
53
+ * const ref = ctx.startPayload; // "ref_123" | null | undefined
54
+ * });
55
+ */
56
+ get startPayload() {
57
+ return this.update.payload;
58
+ }
59
+ /**
60
+ * Отправить сообщение в диалог пользователю.
61
+ *
62
+ * @example
63
+ * bot.onStart(async (ctx) => {
64
+ * if (isBotStartedContext(ctx)) await ctx.reply('Добро пожаловать!');
65
+ * });
66
+ */
67
+ async reply(text, options) {
68
+ const body = {
69
+ text,
70
+ format: options?.format,
71
+ attachments: options?.attachments,
72
+ notify: options?.notify,
73
+ };
74
+ const response = await this.api.messages.sendMessage({
75
+ chat_id: this.chatId,
76
+ disable_link_preview: options?.disable_link_preview,
77
+ }, body);
78
+ return response.message;
79
+ }
80
+ /**
81
+ * Отправить произвольное действие в чат (диалог пользователя).
82
+ *
83
+ * Распространённые значения: `"typing_on"`, `"sending_photo"`,
84
+ * `"sending_video"`, `"sending_audio"`, `"sending_file"`, `"mark_seen"`.
85
+ *
86
+ * @example
87
+ * bot.onStart(async (ctx) => {
88
+ * await ctx.sendAction('typing_on');
89
+ * await ctx.reply('Добро пожаловать!');
90
+ * });
91
+ */
92
+ async sendAction(action) {
93
+ await this.api.chats.sendAction(this.chatId, action);
94
+ }
95
+ /**
96
+ * Проверить тип контекста с сужением типа (type narrowing).
97
+ *
98
+ * @example
99
+ * ```ts
100
+ * bot.onStart(async (ctx) => {
101
+ * if (ctx.has(isPrivateChat)) { ... }
102
+ * });
103
+ * ```
104
+ */
105
+ has(filter) {
106
+ return filter(this);
107
+ }
108
+ }
109
+ //# sourceMappingURL=BotStartedContext.js.map
@@ -0,0 +1,107 @@
1
+ import type { ContextApi, SendOptions } from "./MessageContext.js";
2
+ import type { User } from "../../types/common.js";
3
+ import type { Message, NewMessageBody } from "../../types/message.js";
4
+ import type { CallbackUpdate } from "../../types/update.js";
5
+ import type { Context } from "../Bot.js";
6
+ /**
7
+ * Опции ответа на callback
8
+ */
9
+ export interface AnswerOptions {
10
+ /** Обновить текущее сообщение */
11
+ message?: NewMessageBody;
12
+ /** Одноразовое уведомление пользователю */
13
+ notification?: string;
14
+ }
15
+ /**
16
+ * Контекст callback-запроса (нажатие на inline-кнопку).
17
+ */
18
+ export declare class CallbackContext {
19
+ private readonly update;
20
+ private readonly api;
21
+ /**
22
+ * Результат совпадения RegExp из `bot.action()`.
23
+ *
24
+ * Доступен только внутри обработчика `action()` с RegExp-паттерном.
25
+ * Содержит полный `RegExpExecArray`: `ctx.match[0]` — полное совпадение,
26
+ * `ctx.match[1]`, `ctx.match[2]`, ... — группы захвата.
27
+ *
28
+ * `null` если обработчик вызван не через `action()` или паттерн — строка.
29
+ *
30
+ * @example
31
+ * bot.action(/^buy:(\d+)$/, async (ctx) => {
32
+ * if (isCallbackContext(ctx)) console.log(ctx.match?.[1]); // id товара
33
+ * });
34
+ */
35
+ match: RegExpExecArray | null;
36
+ constructor(update: CallbackUpdate, api: ContextApi);
37
+ /** Исходное обновление */
38
+ get raw(): CallbackUpdate;
39
+ /** ID callback-запроса */
40
+ get callbackId(): string;
41
+ /** Данные callback (payload кнопки) */
42
+ get data(): string;
43
+ /**
44
+ * Сообщение, к которому была прикреплена кнопка.
45
+ * Может отсутствовать, если сообщение было удалено к моменту callback.
46
+ */
47
+ get message(): Message | null;
48
+ /** ID чата */
49
+ get chatId(): number | null;
50
+ /** Пользователь, нажавший кнопку — гарантировано присутствие API */
51
+ get callbackUser(): User;
52
+ /** ID пользователя, нажавшего кнопку */
53
+ get userId(): number;
54
+ /** Локаль пользователя */
55
+ get locale(): string | null;
56
+ /**
57
+ * Ответить на callback.
58
+ *
59
+ * Закрывает "часики" на кнопке и опционально показывает уведомление.
60
+ */
61
+ answer(options?: AnswerOptions): Promise<void>;
62
+ /**
63
+ * Ответить сообщением в чат.
64
+ *
65
+ * Бросает ошибку, если chat_id недоступен — сообщение было удалено.
66
+ */
67
+ reply(text: string, options?: SendOptions): Promise<Message>;
68
+ /**
69
+ * Редактировать сообщение с кнопкой.
70
+ */
71
+ editMessage(text: string, options?: SendOptions): Promise<void>;
72
+ /**
73
+ * Удалить сообщение с кнопкой.
74
+ *
75
+ * Бросает ошибку, если сообщение было удалено до callback.
76
+ *
77
+ * @example
78
+ * await ctx.deleteMessage();
79
+ */
80
+ deleteMessage(): Promise<void>;
81
+ /**
82
+ * Отправить произвольное действие в чат.
83
+ *
84
+ * Распространённые значения: `"typing_on"`, `"sending_photo"`,
85
+ * `"sending_video"`, `"sending_audio"`, `"sending_file"`, `"mark_seen"`.
86
+ *
87
+ * Бросает ошибку, если chat_id недоступен — сообщение удалено.
88
+ *
89
+ * @example
90
+ * await ctx.sendAction('typing_on');
91
+ */
92
+ sendAction(action: string): Promise<void>;
93
+ /**
94
+ * Проверить тип контекста с сужением типа (type narrowing).
95
+ *
96
+ * @example
97
+ * ```ts
98
+ * bot.on('callback', async (ctx) => {
99
+ * if (ctx.has(hasCallbackPayload('confirm'))) {
100
+ * await ctx.answer({ notification: 'Подтверждено!' });
101
+ * }
102
+ * });
103
+ * ```
104
+ */
105
+ has<R extends Context>(filter: (ctx: Context) => ctx is R): this is R;
106
+ }
107
+ //# sourceMappingURL=CallbackContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallbackContext.d.ts","sourceRoot":"","sources":["../../../../src/bot/context/CallbackContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,eAAe;IAmBxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAnBtB;;;;;;;;;;;;;OAaG;IACH,KAAK,EAAE,eAAe,GAAG,IAAI,CAAQ;gBAIlB,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,UAAU;IAGlC,0BAA0B;IAC1B,IAAI,GAAG,IAAI,cAAc,CAExB;IAED,0BAA0B;IAC1B,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,uCAAuC;IACvC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;OAGG;IACH,IAAI,OAAO,IAAI,OAAO,GAAG,IAAI,CAE5B;IAED,cAAc;IACd,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED,oEAAoE;IACpE,IAAI,YAAY,IAAI,IAAI,CAEvB;IAED,wCAAwC;IACxC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,0BAA0B;IAC1B,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED;;;;OAIG;IACG,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD;;;;OAIG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBlE;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAerE;;;;;;;OAOG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAUpC;;;;;;;;;;OAUG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/C;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC;CAGtE"}