@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,218 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Composer = void 0;
4
+ const compose_js_1 = require("../middleware/compose.js");
5
+ const guards_js_1 = require("./context/guards.js");
6
+ const triggers_js_1 = require("./triggers.js");
7
+ /**
8
+ * Composer — независимый суб-роутер, совместимый с `bot.use()`.
9
+ *
10
+ * Собирает маршруты (`command`, `hears`, `action`, `on`, `filter`) в изолированную
11
+ * цепочку middleware и подключается к боту через `bot.use(composer.middleware())`.
12
+ *
13
+ * Позволяет разбить логику бота на независимые модули с явными границами:
14
+ * - `adminRouter` — команды только для администраторов
15
+ * - `shopRouter` — весь шоппинг-флоу
16
+ * - `notificationRouter` — обработка системных событий
17
+ *
18
+ * @example Суб-роутер для администраторов
19
+ * ```ts
20
+ * const adminRouter = new Composer<Context>();
21
+ *
22
+ * adminRouter.use(onlyAdminMiddleware);
23
+ * adminRouter.command('stats', async (ctx) => { ... });
24
+ * adminRouter.hears(/^админ/i, async (ctx) => { ... });
25
+ *
26
+ * bot.use(adminRouter.middleware());
27
+ * ```
28
+ *
29
+ * @example bot.filter() + Composer
30
+ * ```ts
31
+ * const privateRouter = new Composer<Context>();
32
+ * privateRouter.command('start', async (ctx) => { ... });
33
+ *
34
+ * // Подключаем только для приватных диалогов
35
+ * bot.filter(isPrivateChat, privateRouter.middleware());
36
+ * ```
37
+ */
38
+ class Composer {
39
+ fns = [];
40
+ /**
41
+ * Добавить middleware в цепочку.
42
+ *
43
+ * Middleware получает контекст и функцию `next` для перехода к следующему звену.
44
+ *
45
+ * @example
46
+ * composer.use(async (ctx, next) => {
47
+ * console.log('before');
48
+ * await next();
49
+ * console.log('after');
50
+ * });
51
+ */
52
+ use(middleware) {
53
+ this.fns.push(middleware);
54
+ return this;
55
+ }
56
+ /**
57
+ * Подписаться на конкретный тип обновления.
58
+ *
59
+ * @example
60
+ * composer.on('bot_added', async (ctx, next) => {
61
+ * await ctx.reply('Бот добавлен!');
62
+ * });
63
+ */
64
+ on(event, ...fns) {
65
+ const composed = this.pipe(...fns);
66
+ this.fns.push(async (ctx, next) => {
67
+ // ctx as Context — безопасно: Ctx extends Context, все .raw содержат update_type
68
+ if (ctx.raw.update_type === event) {
69
+ await composed(ctx);
70
+ }
71
+ else {
72
+ await next();
73
+ }
74
+ });
75
+ return this;
76
+ }
77
+ /**
78
+ * Подписаться на команду (`/name`).
79
+ *
80
+ * @example
81
+ * composer.command('help', async (ctx) => { ... });
82
+ * composer.command('pay', authMw, async (ctx) => { ... });
83
+ */
84
+ command(name, ...fns) {
85
+ const composed = this.pipe(...fns);
86
+ this.fns.push(async (ctx, next) => {
87
+ if (!(0, guards_js_1.isMessageContext)(ctx)) {
88
+ await next();
89
+ return;
90
+ }
91
+ const text = ctx.text ?? "";
92
+ const normalized = name.startsWith("/") ? name : `/${name}`;
93
+ if (text === normalized || text.startsWith(`${normalized} `)) {
94
+ await composed(ctx);
95
+ }
96
+ else {
97
+ await next();
98
+ }
99
+ });
100
+ return this;
101
+ }
102
+ /**
103
+ * Подписаться на текст сообщения.
104
+ *
105
+ * `pattern` может быть строкой, RegExp или массивом — срабатывает на первое совпадение.
106
+ * При совпадении RegExp устанавливает `ctx.match` с capture-группами.
107
+ *
108
+ * @example
109
+ * composer.hears(/(\d+)\+(\d+)/, async (ctx) => {
110
+ * const [, a, b] = ctx.match!;
111
+ * });
112
+ * composer.hears([/^\d+$/, 'помощь'], handler); // массив паттернов
113
+ */
114
+ hears(pattern, ...fns) {
115
+ const composed = this.pipe(...fns);
116
+ this.fns.push(async (ctx, next) => {
117
+ if (!(0, guards_js_1.isMessageContext)(ctx)) {
118
+ await next();
119
+ return;
120
+ }
121
+ const result = (0, triggers_js_1.matchTrigger)(pattern, ctx.text ?? "");
122
+ if (result !== null) {
123
+ if (result !== true)
124
+ ctx.match = result;
125
+ await composed(ctx);
126
+ }
127
+ else {
128
+ await next();
129
+ }
130
+ });
131
+ return this;
132
+ }
133
+ /**
134
+ * Подписаться на callback payload.
135
+ *
136
+ * `pattern` может быть строкой, RegExp или массивом — срабатывает на первое совпадение.
137
+ * При совпадении RegExp устанавливает `ctx.match` с capture-группами.
138
+ *
139
+ * @example
140
+ * composer.action(/^buy:(\d+)$/, async (ctx) => {
141
+ * const [, id] = ctx.match!;
142
+ * });
143
+ * composer.action(['confirm', 'ok'], handler); // несколько payload
144
+ */
145
+ action(pattern, ...fns) {
146
+ const composed = this.pipe(...fns);
147
+ this.fns.push(async (ctx, next) => {
148
+ if (!(0, guards_js_1.isCallbackContext)(ctx)) {
149
+ await next();
150
+ return;
151
+ }
152
+ const result = (0, triggers_js_1.matchTrigger)(pattern, ctx.data);
153
+ if (result !== null) {
154
+ if (result !== true)
155
+ ctx.match = result;
156
+ await composed(ctx);
157
+ }
158
+ else {
159
+ await next();
160
+ }
161
+ });
162
+ return this;
163
+ }
164
+ /**
165
+ * Фильтровать контекст по предикату с сужением типа.
166
+ *
167
+ * Если предикат возвращает `true` — выполняются handlers с суженным типом.
168
+ * Если `false` — вызывается `next()` (передаётся наружу).
169
+ *
170
+ * @example Только авторизованные пользователи
171
+ * composer.filter(isAdmin, async (ctx) => {
172
+ * await ctx.reply('Привет, администратор!');
173
+ * });
174
+ *
175
+ * @example Только сообщения с текстом
176
+ * composer.filter(hasText, async (ctx) => {
177
+ * console.log(ctx.text.toUpperCase()); // ctx.text: string
178
+ * });
179
+ */
180
+ filter(predicate, ...fns) {
181
+ this.fns.push(async (ctx, next) => {
182
+ if (predicate(ctx)) {
183
+ await (0, compose_js_1.compose)(fns, async () => { })(ctx);
184
+ }
185
+ else {
186
+ await next();
187
+ }
188
+ });
189
+ return this;
190
+ }
191
+ /**
192
+ * Вернуть этот Composer как один `Middleware` для подключения к боту или другому Composer.
193
+ *
194
+ * @example
195
+ * const router = new Composer();
196
+ * router.command('start', handler);
197
+ * bot.use(router.middleware());
198
+ */
199
+ middleware() {
200
+ if (this.fns.length === 0) {
201
+ return async (_ctx, next) => next();
202
+ }
203
+ return async (ctx, next) => {
204
+ // Запускаем внутреннюю цепочку; в конце вызываем внешний next — fall-through
205
+ await (0, compose_js_1.compose)(this.fns, async () => next())(ctx);
206
+ };
207
+ }
208
+ /** Сборка цепочки из нескольких fns в единый терминальный обработчик (без next). */
209
+ pipe(...fns) {
210
+ if (fns.length === 1) {
211
+ const fn = fns[0];
212
+ return (ctx) => Promise.resolve(fn(ctx, async () => { }));
213
+ }
214
+ return (0, compose_js_1.compose)(fns, async () => { });
215
+ }
216
+ }
217
+ exports.Composer = Composer;
218
+ //# 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,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BotStartedContext = void 0;
4
+ /**
5
+ * Контекст события bot_started.
6
+ *
7
+ * Возникает когда пользователь нажимает кнопку Start в диалоге с ботом
8
+ * или переходит по deep link вида `https://max.ru/...?start=<payload>`.
9
+ *
10
+ * Используйте `ctx.startPayload` для чтения payload из deep link:
11
+ * реферальные программы, onboarding-флоу, контекстный запуск бота.
12
+ *
13
+ * @example Реферальная ссылка
14
+ * bot.onStart(async (ctx) => {
15
+ * if (ctx.startPayload) {
16
+ * await ctx.reply(`Вы пришли по ссылке: ref=${ctx.startPayload}`);
17
+ * } else {
18
+ * await ctx.reply("Добро пожаловать!");
19
+ * }
20
+ * });
21
+ */
22
+ class BotStartedContext {
23
+ update;
24
+ api;
25
+ constructor(
26
+ // BotStartedUpdate — не общий Update: типизация гарантирует chat_id, user, payload
27
+ update, api) {
28
+ this.update = update;
29
+ this.api = api;
30
+ }
31
+ /** Исходное обновление */
32
+ get raw() {
33
+ return this.update;
34
+ }
35
+ /** ID чата (диалога), в котором произошло событие */
36
+ get chatId() {
37
+ return this.update.chat_id;
38
+ }
39
+ /** Пользователь, нажавший Start */
40
+ get user() {
41
+ return this.update.user;
42
+ }
43
+ /** ID пользователя */
44
+ get userId() {
45
+ return this.update.user.user_id;
46
+ }
47
+ /**
48
+ * Payload из deep link.
49
+ *
50
+ * `null` или `undefined` если Start нажат без параметра (обычный запуск).
51
+ * Непустая строка — значение параметра `start` из ссылки.
52
+ *
53
+ * @example
54
+ * // Ссылка: https://max.ru/...?start=ref_123
55
+ * bot.onStart(async (ctx) => {
56
+ * const ref = ctx.startPayload; // "ref_123" | null | undefined
57
+ * });
58
+ */
59
+ get startPayload() {
60
+ return this.update.payload;
61
+ }
62
+ /**
63
+ * Отправить сообщение в диалог пользователю.
64
+ *
65
+ * @example
66
+ * bot.onStart(async (ctx) => {
67
+ * if (isBotStartedContext(ctx)) await ctx.reply('Добро пожаловать!');
68
+ * });
69
+ */
70
+ async reply(text, options) {
71
+ const body = {
72
+ text,
73
+ format: options?.format,
74
+ attachments: options?.attachments,
75
+ notify: options?.notify,
76
+ };
77
+ const response = await this.api.messages.sendMessage({
78
+ chat_id: this.chatId,
79
+ disable_link_preview: options?.disable_link_preview,
80
+ }, body);
81
+ return response.message;
82
+ }
83
+ /**
84
+ * Отправить произвольное действие в чат (диалог пользователя).
85
+ *
86
+ * Распространённые значения: `"typing_on"`, `"sending_photo"`,
87
+ * `"sending_video"`, `"sending_audio"`, `"sending_file"`, `"mark_seen"`.
88
+ *
89
+ * @example
90
+ * bot.onStart(async (ctx) => {
91
+ * await ctx.sendAction('typing_on');
92
+ * await ctx.reply('Добро пожаловать!');
93
+ * });
94
+ */
95
+ async sendAction(action) {
96
+ await this.api.chats.sendAction(this.chatId, action);
97
+ }
98
+ /**
99
+ * Проверить тип контекста с сужением типа (type narrowing).
100
+ *
101
+ * @example
102
+ * ```ts
103
+ * bot.onStart(async (ctx) => {
104
+ * if (ctx.has(isPrivateChat)) { ... }
105
+ * });
106
+ * ```
107
+ */
108
+ has(filter) {
109
+ return filter(this);
110
+ }
111
+ }
112
+ exports.BotStartedContext = BotStartedContext;
113
+ //# 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"}