@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,380 @@
1
+ import type { IBotsApi, IChatsApi, IMessagesApi, ISubscriptionsApi, IUploadsApi } from "../api/interfaces.js";
2
+ import { type IRateLimiter } from "../core/rate-limiter/RateLimiter.js";
3
+ import type { LongPollingConfig, WebhookConfig } from "../transport/interfaces.js";
4
+ import type { BotInfo } from "../types/bot.js";
5
+ import type { Message } from "../types/message.js";
6
+ import type { SubscriptionInfo } from "../types/subscription.js";
7
+ import type { UpdateType } from "../types/update.js";
8
+ import { CallbackContext } from "./context/CallbackContext.js";
9
+ import { ChatContext } from "./context/ChatContext.js";
10
+ import { BotStartedContext } from "./context/BotStartedContext.js";
11
+ import { MessageContext, type SendOptions } from "./context/MessageContext.js";
12
+ import type { Middleware } from "../middleware/types.js";
13
+ import { type HearsTrigger, type CommandTrigger } from "./triggers.js";
14
+ import type { BotMetrics } from "./metrics.js";
15
+ /**
16
+ * Конфигурация бота.
17
+ *
18
+ * Параметр `Ctx` позволяет задать расширенный тип контекста.
19
+ * По умолчанию используется базовый `Context`.
20
+ *
21
+ * @example Расширенный контекст
22
+ * interface MyCtx extends MessageContext { session: Record<string, unknown> }
23
+ * const bot = new Bot<MyCtx>({
24
+ * token: '...',
25
+ * transport: 'polling',
26
+ * contextFactory: (base) => Object.assign(base as MyCtx, { session: {} }),
27
+ * });
28
+ */
29
+ export interface BotConfig<Ctx extends Context = Context> {
30
+ /** Токен бота */
31
+ token: string;
32
+ /** Режим получения обновлений */
33
+ transport: "polling" | "webhook";
34
+ /** Настройки long polling */
35
+ polling?: LongPollingConfig;
36
+ /** Настройки webhook */
37
+ webhook?: WebhookConfig;
38
+ /** Кастомный rate limiter (опционально) */
39
+ rateLimiter?: IRateLimiter;
40
+ /** Базовый URL API (опционально, для тестирования) */
41
+ baseUrl?: string;
42
+ /**
43
+ * Максимальное число одновременно обрабатываемых обновлений (по умолчанию 10).
44
+ *
45
+ * При burst-нагрузке без этого ограничения каждое входящее обновление
46
+ * немедленно запускает новые промисы — их количество не ограничено.
47
+ * Семафор гарантирует не более `concurrency` активных обработчиков;
48
+ * остальные обновления встают в очередь и обрабатываются по мере освобождения.
49
+ *
50
+ * Установите `Infinity` чтобы отключить ограничение (поведение до этой версии).
51
+ */
52
+ concurrency?: number;
53
+ /**
54
+ * Фабрика контекста — позволяет расширить базовый контекст своими полями.
55
+ *
56
+ * Вызывается для каждого обновления после создания базового контекста.
57
+ * Возвращаемое значение передаётся во все middleware и handlers вместо базового.
58
+ *
59
+ * Если не задана — используется базовый контекст без изменений.
60
+ *
61
+ * @example Добавить поле `session` к каждому контексту
62
+ * contextFactory: (base) => Object.assign(base as MyCtx, { session: {} })
63
+ */
64
+ contextFactory?: (base: Context) => Ctx;
65
+ /**
66
+ * Обработчик неизвестных типов обновлений в рантайме.
67
+ *
68
+ * На практике этот колбэк нужен при работе c версией платформы, которая
69
+ * распознаёт update_type, ещё не описанный в текущей версии SDK.
70
+ *
71
+ * Если колбэк не задан — неизвестный update_type передаётся в `errorHandler`
72
+ * как `Error("Неизвестный тип обновления: <type>")`.
73
+ *
74
+ * @example Логировать неизвестные типы, не падая с ошибкой
75
+ * onUnknownUpdate: (raw) => console.warn("unknown update_type:", raw.update_type)
76
+ */
77
+ onUnknownUpdate?: (raw: Record<string, unknown>) => void;
78
+ /**
79
+ * Колбэк метрик производительности — вызывается после каждого обработанного update.
80
+ *
81
+ * Получает {@link BotMetrics}: суммарное время, размер очереди на момент захвата
82
+ * слота, число ошибок handlers и время каждого middleware по отдельности.
83
+ *
84
+ * Не влияет на производительность если не задан (нет накладных расходов на замер).
85
+ *
86
+ * @example
87
+ * bot.onMetrics((m) => {
88
+ * if (m.totalMs > 500) console.warn('slow', m);
89
+ * if (m.handlerErrors > 0) metrics.increment('bot.handler_errors');
90
+ * });
91
+ */
92
+ onMetrics?: (metrics: BotMetrics) => void;
93
+ }
94
+ /**
95
+ * Контекст обновления (может быть разного типа)
96
+ */
97
+ export type Context = MessageContext | CallbackContext | ChatContext | BotStartedContext;
98
+ /**
99
+ * Обработчик событий
100
+ */
101
+ export type EventHandler<T = Context> = (ctx: T) => void | Promise<void>;
102
+ /**
103
+ * Главный класс бота.
104
+ *
105
+ * Параметр `Ctx` задаёт тип контекста, передаваемого в middleware и handlers.
106
+ * По умолчанию — базовый `Context = MessageContext | CallbackContext | ChatContext`.
107
+ * Используй `contextFactory` в конфиге чтобы расширить контекст своими полями.
108
+ *
109
+ * @example Базовое использование
110
+ * const bot = new Bot({ token: '...', transport: 'polling' });
111
+ *
112
+ * @example Расширенный контекст
113
+ * const bot = new Bot<MyCtx>({ token: '...', transport: 'polling', contextFactory: buildCtx });
114
+ */
115
+ export declare class Bot<Ctx extends Context = Context> {
116
+ /** Доступ к низкоуровневым API для продвинутых сценариев */
117
+ readonly api: {
118
+ readonly bots: IBotsApi;
119
+ readonly chats: IChatsApi;
120
+ readonly messages: IMessagesApi;
121
+ readonly subscriptions: ISubscriptionsApi;
122
+ readonly uploads: IUploadsApi;
123
+ };
124
+ private readonly http;
125
+ private readonly transport;
126
+ private readonly contextApi;
127
+ private readonly _contextFactory;
128
+ private readonly handlers;
129
+ private readonly middlewares;
130
+ private errorHandler;
131
+ private slowHandler;
132
+ private slowThresholdMs;
133
+ private unknownUpdateHandler;
134
+ private metricsHandler;
135
+ private readonly concurrency;
136
+ private activeCount;
137
+ private readonly waitQueue;
138
+ private startPromise;
139
+ constructor(config: BotConfig<Ctx>);
140
+ /**
141
+ * Установить URL для webhook.
142
+ */
143
+ setWebhookUrl(url: string): Promise<void>;
144
+ /**
145
+ * Удалить webhook.
146
+ */
147
+ deleteWebhook(): Promise<void>;
148
+ /**
149
+ * Получить информацию о текущем webhook.
150
+ */
151
+ getWebhookInfo(): Promise<SubscriptionInfo>;
152
+ /**
153
+ * Зарегистрировать один или несколько обработчиков для события message_created.
154
+ *
155
+ * При нескольких аргументах промежуточные middleware должны вызывать `next()`;
156
+ * последний аргумент — финальный обработчик (next не нужен).
157
+ *
158
+ * @example С промежуточным middleware
159
+ * bot.onMessage(authMw, async (ctx) => { await ctx.reply('OK'); });
160
+ */
161
+ onMessage(...fns: Middleware<Ctx>[]): this;
162
+ /**
163
+ * Зарегистрировать один или несколько обработчиков для callback-запросов.
164
+ *
165
+ * При нескольких аргументах промежуточные middleware должны вызывать `next()`.
166
+ *
167
+ * @example
168
+ * bot.onCallback(logMw, async (ctx) => { ... });
169
+ */
170
+ onCallback(...fns: Middleware<Ctx>[]): this;
171
+ /**
172
+ * Зарегистрировать обработчик для события `bot_started`.
173
+ *
174
+ * Срабатывает когда пользователь нажимает Start в диалоге или переходит по deep link.
175
+ *
176
+ * @example Onboarding с deep link
177
+ * bot.onStart(async (ctx) => {
178
+ * if (isBotStartedContext(ctx) && ctx.startPayload) {
179
+ * await ctx.reply(`Вы пришли по реферальной ссылке: ${ctx.startPayload}`);
180
+ * } else {
181
+ * await ctx.reply('Добро пожаловать!');
182
+ * }
183
+ * });
184
+ */
185
+ onStart(...fns: Middleware<Ctx>[]): this;
186
+ /**
187
+ * Зарегистрировать один или несколько обработчиков для любого типа обновления.
188
+ *
189
+ * При нескольких аргументах промежуточные middleware должны вызывать `next()`;
190
+ * последний аргумент — финальный обработчик.
191
+ *
192
+ * @example Один обработчик (прежнее поведение)
193
+ * bot.on('message_created', async (ctx) => { ... });
194
+ *
195
+ * @example Несколько middleware + обработчик
196
+ * bot.on('message_created', authMw, rateLimitMw, async (ctx) => { ... });
197
+ */
198
+ on(event: UpdateType, ...fns: Middleware<Ctx>[]): this;
199
+ /** Цепочка из middleware: возвращает единый EventHandler, вызывающий каждый fn по очереди. */
200
+ private pipe;
201
+ /**
202
+ * Зарегистрировать обработчик команды.
203
+ *
204
+ * Срабатывает на `message_created`, если текст сообщения начинается с `/<name>` (с аргументами или без).
205
+ * Обработчик получает полный `Ctx` — для сужения до `MessageContext` используй `isMessageContext(ctx)`.
206
+ *
207
+ * @param name - Имя команды без слеша (`start`, `help`, и т.\u0434.)
208
+ * @param fns - Один или несколько middleware/обработчиков. Промежуточные должны вызывать `next()`.
209
+ *
210
+ * @example Один обработчик
211
+ * bot.command('start', async (ctx) => {
212
+ * if (isMessageContext(ctx)) await ctx.reply('Добро пожаловать!');
213
+ * });
214
+ *
215
+ * @example Массив команд
216
+ * bot.command(['start', 'begin'], async (ctx) => {
217
+ * await ctx.reply('Добро пожаловать!');
218
+ * });
219
+ *
220
+ * @example С промежуточными middleware
221
+ * bot.command('pay', authMw, checkBalanceMw, async (ctx) => {
222
+ * await ctx.reply('Оплата выполнена');
223
+ * });
224
+ */
225
+ command(name: CommandTrigger, ...fns: Middleware<Ctx>[]): this;
226
+ /**
227
+ * Зарегистрировать обработчик по regexp- или строковому фильтру текста сообщения.
228
+ *
229
+ * Срабатывает на `message_created`, если `ctx.text` совпадает с `pattern`.
230
+ *
231
+ * @param pattern - Строка (точное совпадение) или `RegExp`
232
+ * @param fns - Один или несколько middleware/обработчиков. Промежуточные должны вызывать `next()`.
233
+ *
234
+ * @example Один обработчик
235
+ * bot.hears('привет', async (ctx) => { ... });
236
+ * bot.hears(/^\u043fр/i, async (ctx) => { ... });
237
+ * bot.hears(/(\d+)/, async (ctx) => {
238
+ * if (isMessageContext(ctx)) console.log(ctx.match?.[1]); // группа захвата
239
+ * });
240
+ *
241
+ * @example С промежуточными middleware
242
+ * bot.hears(/^\u043fоплата/, authMw, async (ctx) => { ... });
243
+ */
244
+ hears(pattern: HearsTrigger, ...fns: Middleware<Ctx>[]): this;
245
+ /**
246
+ * Зарегистрировать обработчик по `callback.payload`.
247
+ *
248
+ * Срабатывает на `message_callback`, если `ctx.data` совпадает с `pattern`.
249
+ *
250
+ * @param pattern - Строка (точное совпадение) или `RegExp`
251
+ * @param fns - Один или несколько middleware/обработчиков. Промежуточные должны вызывать `next()`.
252
+ *
253
+ * @example Один обработчик
254
+ * bot.action('buy', async (ctx) => { ... });
255
+ * bot.action(/^action:/, async (ctx) => { ... });
256
+ * bot.action(/^buy:(\d+)$/, async (ctx) => {
257
+ * if (isCallbackContext(ctx)) console.log(ctx.match?.[1]); // id из payload
258
+ * });
259
+ *
260
+ * @example С промежуточными middleware
261
+ * bot.action(/^buy:/, authMw, checkStockMw, async (ctx) => { ... });
262
+ */
263
+ action(pattern: HearsTrigger, ...fns: Middleware<Ctx>[]): this;
264
+ /**
265
+ * Зарегистрировать middleware, выполняемый перед обработчиками события.
266
+ *
267
+ * Middleware выполняется **внутри** семафорного слота — backpressure применяется
268
+ * ко всему пайплайну целиком, а не только к финальным хендлерам.
269
+ *
270
+ * @example
271
+ * bot.use(async (ctx, next) => {
272
+ * console.log('before handlers');
273
+ * await next();
274
+ * console.log('after handlers');
275
+ * });
276
+ */
277
+ use(middleware: Middleware<Ctx>): this;
278
+ /**
279
+ * Подключить middleware только если предикат возвращает `true`.
280
+ *
281
+ * Сочетается с предикатами из модуля `filters` и с `ctx.has()` для type narrowing.
282
+ * Если предикат не сработал — обновление прозрачно перетекает к следующим middleware.
283
+ *
284
+ * @example Только сообщения с текстом
285
+ * ```ts
286
+ * bot.filter(hasText, async (ctx) => {
287
+ * console.log(ctx.text.toUpperCase()); // ctx.text: string
288
+ * });
289
+ * ```
290
+ *
291
+ * @example Комбинация с Composer
292
+ * ```ts
293
+ * const privateRouter = new Composer();
294
+ * privateRouter.command('start', handler);
295
+ * bot.filter(isPrivateChat, privateRouter.middleware());
296
+ * ```
297
+ */
298
+ filter<Narrowed extends Ctx>(predicate: (ctx: Ctx) => ctx is Narrowed, ...fns: Middleware<Narrowed>[]): this;
299
+ /**
300
+ * Зарегистрировать обработчик ошибок.
301
+ */
302
+ onError(handler: (error: Error) => void): this;
303
+ /**
304
+ * Назначить коллбэк для медленных обработчиков.
305
+ *
306
+ * Если обработка обновления (включая middleware и handlers) заняла больше `thresholdMs` мс,
307
+ * вызывается `cb` с фактическим временем выполнения и типом обновления.
308
+ *
309
+ * Используйте для SLO-мониторинга и диагностики производительности.
310
+ *
311
+ * @param thresholdMs - Пороговое значение в миллисекундах
312
+ * @param cb - Коллбэк, получающий фактическое время выполнения (ms) и тип обновления
313
+ *
314
+ * @example
315
+ * bot.onSlowHandler(500, (ms, type) => {
316
+ * log.warn({ ms, type }, 'slow handler detected');
317
+ * });
318
+ */
319
+ onSlowHandler(thresholdMs: number, cb: (ms: number, updateType: string) => void): this;
320
+ /**
321
+ * Получить информацию о боте.
322
+ */
323
+ getMe(): Promise<BotInfo>;
324
+ /**
325
+ * Отправить сообщение в чат.
326
+ */
327
+ sendMessage(chatId: number, text: string, options?: SendOptions): Promise<Message>;
328
+ /**
329
+ * Отправить личное сообщение пользователю.
330
+ */
331
+ sendPrivateMessage(userId: number, text: string, options?: SendOptions): Promise<Message>;
332
+ /**
333
+ * Запустить бота.
334
+ */
335
+ start(): Promise<void>;
336
+ private _doStart;
337
+ /**
338
+ * Остановить бота.
339
+ */
340
+ stop(): Promise<void>;
341
+ private handleUpdate;
342
+ private runHandlersWithSemaphore;
343
+ /**
344
+ * Захватить слот семафора.
345
+ * Если свободных слотов нет — ждём в очереди.
346
+ */
347
+ private acquireSemaphore;
348
+ /**
349
+ * Освободить слот семафора и разбудить следующего в очереди.
350
+ */
351
+ private releaseSemaphore;
352
+ private handleError;
353
+ /**
354
+ * Создаёт типизированный контекст из сырого обновления.
355
+ *
356
+ * Возвращает `null` если `update_type` неизвестен SDK **и** задан хук
357
+ * {@link BotConfig.onUnknownUpdate} — хук уже вызван, update нужно пропустить.
358
+ * Если хук не задан — бросает ошибку через {@link assertNever} → `errorHandler`.
359
+ *
360
+ * ### Обработка неизвестных update_type
361
+ *
362
+ * TypeScript гарантирует exhaustiveness: если появится новый `update_type`
363
+ * в типах `Update`, компилятор выдаст ошибку в `default`-ветке через
364
+ * {@link assertNever}. Это предотвращает рантайм-краши при изменении типов.
365
+ *
366
+ * **Рантайм-сценарий**: Если платформа присылает `update_type`, которого
367
+ * **нет в типах SDK** (например, новая версия API), используй
368
+ * {@link BotConfig.onUnknownUpdate} для явного контроля:
369
+ *
370
+ * ```typescript
371
+ * const bot = new Bot({
372
+ * token: '...',
373
+ * transport: 'polling',
374
+ * onUnknownUpdate: (raw) => console.warn('unknown update_type:', raw.update_type),
375
+ * });
376
+ * ```
377
+ */
378
+ private createContext;
379
+ }
380
+ //# sourceMappingURL=Bot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bot.d.ts","sourceRoot":"","sources":["../../../src/bot/Bot.ts"],"names":[],"mappings":"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"}
@@ -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,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"}