@mtcute/dispatcher 0.17.2 → 0.18.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 (111) hide show
  1. package/callback-data-builder.cjs +126 -0
  2. package/callback-data-builder.d.cts +49 -0
  3. package/callback-data-builder.js +121 -0
  4. package/callback-data-builder.test.d.cts +1 -0
  5. package/context/base.d.cts +9 -0
  6. package/context/business-message.cjs +143 -0
  7. package/context/business-message.d.cts +60 -0
  8. package/context/business-message.js +138 -0
  9. package/context/callback-query.cjs +92 -0
  10. package/context/callback-query.d.cts +62 -0
  11. package/context/callback-query.js +87 -0
  12. package/context/chat-join-request.cjs +32 -0
  13. package/context/chat-join-request.d.cts +17 -0
  14. package/context/chat-join-request.d.ts +1 -1
  15. package/context/chat-join-request.js +27 -0
  16. package/context/chosen-inline-result.cjs +30 -0
  17. package/context/chosen-inline-result.d.cts +22 -0
  18. package/context/chosen-inline-result.d.ts +1 -1
  19. package/context/chosen-inline-result.js +25 -0
  20. package/context/index.d.cts +9 -0
  21. package/context/inline-query.cjs +20 -0
  22. package/context/inline-query.d.cts +15 -0
  23. package/context/inline-query.js +15 -0
  24. package/context/message.cjs +182 -0
  25. package/context/message.d.cts +82 -0
  26. package/context/message.d.ts +2 -2
  27. package/context/message.js +177 -0
  28. package/context/parse.cjs +45 -0
  29. package/context/parse.d.cts +13 -0
  30. package/context/parse.js +40 -0
  31. package/context/pre-checkout-query.cjs +24 -0
  32. package/context/pre-checkout-query.d.cts +17 -0
  33. package/context/pre-checkout-query.d.ts +1 -1
  34. package/context/pre-checkout-query.js +19 -0
  35. package/context/scene-transition.cjs +52 -0
  36. package/context/scene-transition.d.cts +24 -0
  37. package/context/scene-transition.d.ts +1 -1
  38. package/context/scene-transition.js +47 -0
  39. package/dispatcher.cjs +860 -0
  40. package/dispatcher.d.cts +880 -0
  41. package/dispatcher.d.ts +4 -4
  42. package/dispatcher.js +855 -0
  43. package/filters/bots.cjs +94 -0
  44. package/filters/bots.d.cts +62 -0
  45. package/filters/bots.d.ts +2 -4
  46. package/filters/bots.js +89 -0
  47. package/filters/bots.test.d.cts +1 -0
  48. package/filters/bundle.cjs +79 -0
  49. package/filters/bundle.d.cts +10 -0
  50. package/filters/bundle.js +74 -0
  51. package/filters/chat.cjs +43 -0
  52. package/filters/chat.d.cts +29 -0
  53. package/filters/chat.d.ts +8 -6
  54. package/filters/chat.js +38 -0
  55. package/filters/group.cjs +49 -0
  56. package/filters/group.d.cts +26 -0
  57. package/filters/group.js +44 -0
  58. package/filters/index.d.cts +4 -0
  59. package/filters/logic.cjs +57 -0
  60. package/filters/logic.d.cts +29 -0
  61. package/filters/logic.js +52 -0
  62. package/filters/logic.test.d.cts +1 -0
  63. package/filters/message.cjs +130 -0
  64. package/filters/message.d.cts +223 -0
  65. package/filters/message.d.ts +5 -1
  66. package/filters/message.js +125 -0
  67. package/filters/state.cjs +21 -0
  68. package/filters/state.d.cts +15 -0
  69. package/filters/state.js +16 -0
  70. package/filters/text.cjs +87 -0
  71. package/filters/text.d.cts +64 -0
  72. package/filters/text.d.ts +2 -2
  73. package/filters/text.js +82 -0
  74. package/filters/types.d.cts +91 -0
  75. package/filters/updates.cjs +27 -0
  76. package/filters/updates.d.cts +39 -0
  77. package/filters/updates.js +22 -0
  78. package/filters/user.cjs +57 -0
  79. package/filters/user.d.cts +24 -0
  80. package/filters/user.js +52 -0
  81. package/handler.d.cts +41 -0
  82. package/handler.d.ts +1 -1
  83. package/index.cjs +37 -2528
  84. package/index.js +16 -2507
  85. package/package.json +10 -9
  86. package/propagation.cjs +15 -0
  87. package/propagation.d.cts +22 -0
  88. package/propagation.js +10 -0
  89. package/state/index.d.cts +5 -0
  90. package/state/key.cjs +32 -0
  91. package/state/key.d.cts +24 -0
  92. package/state/key.js +27 -0
  93. package/state/provider.d.cts +5 -0
  94. package/state/providers/index.d.cts +2 -0
  95. package/state/providers/memory.cjs +79 -0
  96. package/state/providers/memory.d.cts +29 -0
  97. package/state/providers/memory.js +74 -0
  98. package/state/providers/sqlite.cjs +99 -0
  99. package/state/providers/sqlite.d.cts +28 -0
  100. package/state/providers/sqlite.js +94 -0
  101. package/state/repository.d.cts +62 -0
  102. package/state/service.cjs +69 -0
  103. package/state/service.d.cts +20 -0
  104. package/state/service.js +64 -0
  105. package/state/update-state.cjs +206 -0
  106. package/state/update-state.d.cts +151 -0
  107. package/state/update-state.d.ts +1 -1
  108. package/state/update-state.js +201 -0
  109. package/wizard.cjs +90 -0
  110. package/wizard.d.cts +64 -0
  111. package/wizard.js +85 -0
@@ -0,0 +1,880 @@
1
+ import { BotReactionCountUpdate, BotReactionUpdate, BotStoppedUpdate, BusinessConnection, ChatJoinRequestUpdate, ChatMemberUpdate, DeleteBusinessMessageUpdate, DeleteMessageUpdate, DeleteStoryUpdate, HistoryReadUpdate, MaybePromise, ParsedUpdate, PeersIndex, PollUpdate, PollVoteUpdate, RawUpdateInfo, StoryUpdate, tl, UserStatusUpdate, UserTypingUpdate } from '@mtcute/core';
2
+ import { TelegramClient } from '@mtcute/core/client.js';
3
+ import { UpdateContext } from './context/base.js';
4
+ import { BusinessMessageContext } from './context/business-message.js';
5
+ import { BusinessCallbackQueryContext, CallbackQueryContext, ChatJoinRequestUpdateContext, ChosenInlineResultContext, InlineCallbackQueryContext, InlineQueryContext, MessageContext, PreCheckoutQueryContext } from './context/index.js';
6
+ import { filters, UpdateFilter } from './filters/index.js';
7
+ import { BotChatJoinRequestHandler, BotReactionCountUpdateHandler, BotReactionUpdateHandler, BotStoppedHandler, BusinessCallbackQueryHandler, BusinessConnectionUpdateHandler, BusinessMessageGroupHandler, CallbackQueryHandler, ChatJoinRequestHandler, ChatMemberUpdateHandler, ChosenInlineResultHandler, DeleteBusinessMessageHandler, DeleteMessageHandler, DeleteStoryHandler, EditBusinessMessageHandler, EditMessageHandler, HistoryReadHandler, InlineCallbackQueryHandler, InlineQueryHandler, MessageGroupHandler, NewBusinessMessageHandler, NewMessageHandler, PollUpdateHandler, PollVoteHandler, PreCheckoutQueryHandler, RawUpdateHandler, StoryUpdateHandler, UpdateHandler, UserStatusUpdateHandler, UserTypingHandler } from './handler.js';
8
+ import { PropagationAction } from './propagation.js';
9
+ import { IStateStorageProvider, StateKeyDelegate, UpdateState } from './state/index.js';
10
+ import { SceneTransitionContext } from './context/scene-transition.js';
11
+ export interface DispatcherParams {
12
+ /**
13
+ * If this dispatcher can be used as a scene, its unique name.
14
+ *
15
+ * Should not be set manually, use {@link Dispatcher.scene} instead
16
+ */
17
+ sceneName?: string;
18
+ /**
19
+ * Custom storage for this dispatcher and its children.
20
+ *
21
+ * @default Client's storage
22
+ */
23
+ storage?: IStateStorageProvider;
24
+ /**
25
+ * Custom key delegate for the dispatcher.
26
+ */
27
+ key?: StateKeyDelegate;
28
+ }
29
+ export interface DispatcherDependencies {
30
+ }
31
+ /**
32
+ * Updates dispatcher
33
+ */
34
+ export declare class Dispatcher<State extends object = never> {
35
+ private _groups;
36
+ private _groupsOrder;
37
+ private _client?;
38
+ private _parent?;
39
+ private _children;
40
+ private _scenes?;
41
+ private _scene?;
42
+ private _sceneScoped?;
43
+ private _storage?;
44
+ private _stateKeyDelegate?;
45
+ private _customStateKeyDelegate?;
46
+ private _customStorage?;
47
+ private _deps;
48
+ private _errorHandler?;
49
+ private _preUpdateHandler?;
50
+ private _postUpdateHandler?;
51
+ private _sceneTransitionHandler?;
52
+ protected constructor(client?: TelegramClient, params?: DispatcherParams);
53
+ /**
54
+ * Create a new dispatcher and bind it to the client.
55
+ */
56
+ static for<State extends object = never>(client: TelegramClient, ...args: [State] extends [never] ? [params?: DispatcherParams] : [params: DispatcherParams & {
57
+ storage: IStateStorageProvider;
58
+ }]): Dispatcher<State>;
59
+ /**
60
+ * Create a new child dispatcher.
61
+ */
62
+ static child<State extends object = never>(params?: DispatcherParams): Dispatcher<State>;
63
+ /**
64
+ * Create a new scene dispatcher
65
+ */
66
+ static scene<State extends object = Record<never, never>>(name: string, params?: Omit<DispatcherParams, 'sceneName'>): Dispatcher<State>;
67
+ /** For scene dispatchers, name of the scene */
68
+ get sceneName(): string | undefined;
69
+ /**
70
+ * Inject a dependency to be available in this dispatcher and all its children.
71
+ *
72
+ * **Note**: This is only available for the root dispatcher.
73
+ */
74
+ inject<Name extends keyof DispatcherDependencies>(name: Name, value: DispatcherDependencies[Name]): void;
75
+ /**
76
+ * Inject dependencies to be available in this dispatcher and all its children.
77
+ *
78
+ * **Note**: This is only available for the root dispatcher.
79
+ */
80
+ inject(deps: Partial<DispatcherDependencies>): void;
81
+ /**
82
+ * Get the dependencies injected into this dispatcher.
83
+ */
84
+ get deps(): DispatcherDependencies;
85
+ /**
86
+ * Bind the dispatcher to the client.
87
+ * Called by the constructor automatically if
88
+ * `client` was passed.
89
+ *
90
+ * Dispatcher also uses bound client to throw errors
91
+ */
92
+ bindToClient(client: TelegramClient): void;
93
+ /**
94
+ * Unbind a dispatcher from the client.
95
+ */
96
+ unbind(): void;
97
+ /**
98
+ * Destroy the dispatcher and all its children.
99
+ *
100
+ * When destroying, all the registered handlers are removed,
101
+ * and the underlying storage is freed.
102
+ */
103
+ destroy(): Promise<void>;
104
+ /**
105
+ * Process a raw update with this dispatcher.
106
+ * Calling this method without bound client will not work.
107
+ *
108
+ * Under the hood asynchronously calls {@link dispatchRawUpdateNow}
109
+ * with error handler set to client's one.
110
+ *
111
+ * @param update Update to process
112
+ * @param peers Peers index
113
+ */
114
+ dispatchRawUpdate({ update, peers }: RawUpdateInfo): void;
115
+ /**
116
+ * Process a raw update right now in the current stack.
117
+ *
118
+ * Unlike {@link dispatchRawUpdate}, this does not schedule
119
+ * the update to be dispatched, but dispatches it immediately,
120
+ * and after `await`ing this method you can be certain that the update
121
+ * was fully processed by all the registered handlers, including children.
122
+ *
123
+ * @param update Update to process
124
+ * @param peers Peers map
125
+ * @returns Whether the update was handled
126
+ */
127
+ dispatchRawUpdateNow(update: tl.TypeUpdate | tl.TypeMessage, peers: PeersIndex): Promise<boolean>;
128
+ /**
129
+ * Process an update with this dispatcher.
130
+ * Calling this method without bound client will not work.
131
+ *
132
+ * Under the hood asynchronously calls {@link dispatchUpdateNow}
133
+ * with error handler set to client's one.
134
+ *
135
+ * @param update Update to process
136
+ */
137
+ dispatchUpdate(update: ParsedUpdate): void;
138
+ /**
139
+ * Process an update right now in the current stack.
140
+ *
141
+ * Unlike {@link dispatchUpdate}, this does not schedule
142
+ * the update to be dispatched, but dispatches it immediately,
143
+ * and after `await`ing this method you can be certain that the update
144
+ * was fully processed by all the registered handlers, including children.
145
+ *
146
+ * @param update Update to process
147
+ * @returns Whether the update was handled
148
+ */
149
+ dispatchUpdateNow(update: ParsedUpdate): Promise<boolean>;
150
+ private _dispatchUpdateNowImpl;
151
+ /**
152
+ * Add an update handler to a given handlers group
153
+ *
154
+ * @param handler Update handler
155
+ * @param group Handler group index
156
+ */
157
+ addUpdateHandler(handler: UpdateHandler, group?: number): void;
158
+ /**
159
+ * Remove an update handler (or handlers) from a given
160
+ * handler group.
161
+ *
162
+ * @param handler Update handler to remove, its name or `'all'` to remove all
163
+ * @param group Handler group index (null to affect all groups)
164
+ */
165
+ removeUpdateHandler(handler: UpdateHandler | UpdateHandler['name'] | 'all', group?: number | null): void;
166
+ /**
167
+ * Register an error handler.
168
+ *
169
+ * This is used locally within this dispatcher
170
+ * (does not affect children/parent) whenever
171
+ * an error is thrown inside an update handler.
172
+ * Not used for raw update handlers
173
+ *
174
+ * When an error is thrown, but there is no error
175
+ * handler, it is propagated to `TelegramClient`.
176
+ *
177
+ * There can be at most one error handler.
178
+ * Pass `null` to remove it.
179
+ *
180
+ * @param handler Error handler
181
+ */
182
+ onError<T = {}>(handler: ((err: Error, update: ParsedUpdate & T, state?: UpdateState<State>) => MaybePromise<boolean>) | null): void;
183
+ /**
184
+ * Register pre-update middleware.
185
+ *
186
+ * This is used locally within this dispatcher
187
+ * (does not affect children/parent) before processing
188
+ * an update, and can be used to skip this update.
189
+ *
190
+ * There can be at most one pre-update middleware.
191
+ * Pass `null` to remove it.
192
+ *
193
+ * @param handler Pre-update middleware
194
+ */
195
+ onPreUpdate<T = {}>(handler: ((update: ParsedUpdate & T, state?: UpdateState<State>) => MaybePromise<PropagationAction | void>) | null): void;
196
+ /**
197
+ * Register post-update middleware.
198
+ *
199
+ * This is used locally within this dispatcher
200
+ * (does not affect children/parent) after successfully
201
+ * processing an update, and can be used for stats.
202
+ *
203
+ * There can be at most one post-update middleware.
204
+ * Pass `null` to remove it.
205
+ *
206
+ * @param handler Pre-update middleware
207
+ */
208
+ onPostUpdate<T = {}>(handler: ((handled: boolean, update: ParsedUpdate & T, state?: UpdateState<State>) => MaybePromise<void>) | null): void;
209
+ /**
210
+ * Set error handler that will propagate
211
+ * the error to the parent dispatcher
212
+ */
213
+ propagateErrorToParent(err: Error, update: ParsedUpdate, state?: UpdateState<State>): MaybePromise<boolean>;
214
+ /**
215
+ * Get parent dispatcher if current dispatcher is a child.
216
+ * Otherwise, return `null`
217
+ */
218
+ get parent(): Dispatcher<any> | null;
219
+ private _prepareChild;
220
+ /**
221
+ * Add a child dispatcher.
222
+ *
223
+ * Child dispatchers are called when dispatching updates
224
+ * just like normal, except they can be controlled
225
+ * externally. Additionally, child dispatcher have their own
226
+ * independent handler grouping that does not interfere with parent's,
227
+ * including `StopPropagation` (i.e. returning `StopPropagation` will
228
+ * still call children. To entirely stop, use `StopChildrenPropagation`)
229
+ *
230
+ * Note that child dispatchers share the same TelegramClient and
231
+ * storage binding as the parent, don't bind them manually.
232
+ *
233
+ * @param child Other dispatcher
234
+ */
235
+ addChild(child: Dispatcher<State>): void;
236
+ /**
237
+ * Add a dispatcher as a scene with a non-scoped state.
238
+ *
239
+ * Scoped storage for a scene means that the scene will
240
+ * have its own storage, that is only available within
241
+ * the scene and does not interfere with global state.
242
+ * Non-scoped, on the other hand, is the same state as
243
+ * the one used for the root dispatcher
244
+ *
245
+ * @param uid UID of the scene
246
+ * @param scene Dispatcher representing the scene
247
+ * @param scoped Whether to use scoped FSM storage for the scene
248
+ */
249
+ addScene(scene: Dispatcher<State>, scoped: false): void;
250
+ /**
251
+ * Add a dispatcher as a scene with a scoped state
252
+ *
253
+ * Scoped storage for a scene means that the scene will
254
+ * have its own storage, that is only available within
255
+ * the scene and does not interfere with global state.
256
+ * Non-scoped, on the other hand, is the same state as
257
+ * the one used for the root dispatcher
258
+ *
259
+ * @param uid UID of the scene
260
+ * @param scene Dispatcher representing the scene
261
+ * @param scoped Whether to use scoped FSM storage for the scene (defaults to `true`)
262
+ */
263
+ addScene(scene: Dispatcher<any>, scoped?: true): void;
264
+ /**
265
+ * Remove a child dispatcher.
266
+ *
267
+ * Removing child dispatcher will also remove
268
+ * child dispatcher's client binding.
269
+ *
270
+ * If the provided dispatcher is not a child of current,
271
+ * this function will silently fail.
272
+ *
273
+ * @param child Other dispatcher
274
+ */
275
+ removeChild(child: Dispatcher<any>): void;
276
+ private _unparent;
277
+ /**
278
+ * Extend current dispatcher by copying other dispatcher's
279
+ * handlers and children to the current.
280
+ *
281
+ * This might be more efficient for simple cases, but do note that the handler
282
+ * groups, children and scenes will get merged (unlike {@link addChild},
283
+ * where they are independent). Also note that unlike with children,
284
+ * when adding handlers to `other` *after* you extended
285
+ * the current dispatcher, changes will not be applied.
286
+ *
287
+ * @param other Other dispatcher
288
+ */
289
+ extend(other: Dispatcher<State>): void;
290
+ /**
291
+ * Create a clone of this dispatcher, that has the same handlers,
292
+ * but is not bound to a client or to a parent dispatcher.
293
+ *
294
+ * Custom Storage and key delegate are copied too.
295
+ *
296
+ * By default, child dispatchers (and scenes) are ignored, since
297
+ * that requires cloning every single one of them recursively
298
+ * and then binding them back.
299
+ *
300
+ * @param children Whether to also clone children and scenes
301
+ */
302
+ clone(children?: boolean): Dispatcher<State>;
303
+ /**
304
+ * Get update state object for the given key.
305
+ *
306
+ * For custom keys, use prefix starting with `$` to avoid
307
+ * clashing with other keys (scene name can't start with `$`)
308
+ *
309
+ * @param key State storage key
310
+ * @template S State type, defaults to dispatcher's state type. Only checked at compile-time
311
+ */
312
+ getState<S extends object = State>(key: string): UpdateState<S>;
313
+ /**
314
+ * Get update state object for the given object.
315
+ *
316
+ * Equivalent to `getState(string)`, but derives
317
+ * the key with the registered {@link StateKeyDelegate},
318
+ * and since it could be async, this method is async too.
319
+ *
320
+ * @param object Object for which the state should be fetched
321
+ * @template S State type, defaults to dispatcher's state type. Only checked at compile-time
322
+ */
323
+ getState<S extends object = State>(object: Parameters<StateKeyDelegate>[0]): Promise<UpdateState<S>>;
324
+ /**
325
+ * Get global state.
326
+ *
327
+ * This will load the state for the given object
328
+ * ignoring local custom storage, key delegate and scene scope.
329
+ */
330
+ getGlobalState<T extends object>(object: Parameters<StateKeyDelegate>[0]): Promise<UpdateState<T>>;
331
+ private _addKnownHandler;
332
+ /**
333
+ * Register a raw update handler without any filters
334
+ *
335
+ * @param handler Raw update handler
336
+ * @param group Handler group index
337
+ */
338
+ onRawUpdate(handler: RawUpdateHandler['callback'], group?: number): void;
339
+ /**
340
+ * Register a raw update handler without any filters
341
+ *
342
+ * @param filter Update filter
343
+ * @param handler Raw update handler
344
+ * @param group Handler group index
345
+ */
346
+ onRawUpdate(filter: RawUpdateHandler['check'], handler: RawUpdateHandler['callback'], group?: number): void;
347
+ /**
348
+ * Register a scene transition handler
349
+ *
350
+ * This handler is called whenever a scene transition occurs
351
+ * in the context of the scene that is being entered,
352
+ * and before any of the its own handlers are called,
353
+ * and can be used to customize the transition behavior:
354
+ * - `Stop` to prevent dispatching the update any further **even if ToScene/ToRoot was used**
355
+ * - `Continue` same as Stop, but still dispatch the update to children
356
+ * - `ToScene` to prevent the transition and dispatch the update to the scene entered in the transition handler
357
+ *
358
+ * > **Note**: if multiple `state.enter()` calls were made within the same update,
359
+ * > this handler will only be called for the last one.
360
+ *
361
+ * @param handler Raw update handler
362
+ * @param group Handler group index
363
+ */
364
+ onSceneTransition(handler: ((ctx: SceneTransitionContext, state: UpdateState<State>) => MaybePromise<PropagationAction | void>) | null): void;
365
+ /**
366
+ * Register a callback query (both inline and non-inline) handler without any filters
367
+ *
368
+ * @param handler Callback query handler
369
+ * @param group Handler group index
370
+ */
371
+ onAnyCallbackQuery(handler: CallbackQueryHandler<CallbackQueryContext | InlineCallbackQueryContext | BusinessCallbackQueryContext, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
372
+ /**
373
+ * Register a callback query (both inline and non-inline) handler with a filter
374
+ *
375
+ * @param filter Update filter
376
+ * @param handler Callback query handler
377
+ * @param group Handler group index
378
+ */
379
+ onAnyCallbackQuery<Mod>(filter: UpdateFilter<CallbackQueryContext | InlineCallbackQueryContext | BusinessCallbackQueryContext, Mod, State>, handler: CallbackQueryHandler<filters.Modify<CallbackQueryContext | InlineCallbackQueryContext | BusinessCallbackQueryContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
380
+ /**
381
+ * Register a callback query (both inline and non-inline) handler with a filter
382
+ *
383
+ * @param filter Update filter
384
+ * @param handler Callback query handler
385
+ * @param group Handler group index
386
+ */
387
+ onAnyCallbackQuery<Mod>(filter: UpdateFilter<CallbackQueryContext | InlineCallbackQueryContext | BusinessCallbackQueryContext, Mod>, handler: CallbackQueryHandler<filters.Modify<CallbackQueryContext | InlineCallbackQueryContext | BusinessCallbackQueryContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
388
+ /**
389
+ * Register a new message handler without any filters
390
+ *
391
+ * @param handler New message handler
392
+ * @param group Handler group index
393
+ */
394
+ onNewMessage(handler: NewMessageHandler<MessageContext, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
395
+ /**
396
+ * Register a new message handler with a filter
397
+ *
398
+ * @param filter Update filter
399
+ * @param handler New message handler
400
+ * @param group Handler group index
401
+ */
402
+ onNewMessage<Mod>(filter: UpdateFilter<MessageContext, Mod, State>, handler: NewMessageHandler<filters.Modify<MessageContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
403
+ /**
404
+ * Register a new message handler with a filter
405
+ *
406
+ * @param filter Update filter
407
+ * @param handler New message handler
408
+ * @param group Handler group index
409
+ */
410
+ onNewMessage<Mod>(filter: UpdateFilter<MessageContext, Mod>, handler: NewMessageHandler<filters.Modify<MessageContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
411
+ /**
412
+ * Register an edit message handler without any filters
413
+ *
414
+ * @param handler Edit message handler
415
+ * @param group Handler group index
416
+ */
417
+ onEditMessage(handler: EditMessageHandler<MessageContext, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
418
+ /**
419
+ * Register an edit message handler with a filter
420
+ *
421
+ * @param filter Update filter
422
+ * @param handler Edit message handler
423
+ * @param group Handler group index
424
+ */
425
+ onEditMessage<Mod>(filter: UpdateFilter<MessageContext, Mod, State>, handler: EditMessageHandler<filters.Modify<MessageContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
426
+ /**
427
+ * Register an edit message handler with a filter
428
+ *
429
+ * @param filter Update filter
430
+ * @param handler Edit message handler
431
+ * @param group Handler group index
432
+ */
433
+ onEditMessage<Mod>(filter: UpdateFilter<MessageContext, Mod>, handler: EditMessageHandler<filters.Modify<MessageContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
434
+ /**
435
+ * Register a message group handler without any filters
436
+ *
437
+ * @param handler Message group handler
438
+ * @param group Handler group index
439
+ */
440
+ onMessageGroup(handler: MessageGroupHandler<MessageContext, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
441
+ /**
442
+ * Register a message group handler with a filter
443
+ *
444
+ * @param filter Update filter
445
+ * @param handler Message group handler
446
+ * @param group Handler group index
447
+ */
448
+ onMessageGroup<Mod>(filter: UpdateFilter<MessageContext, Mod, State>, handler: MessageGroupHandler<filters.Modify<MessageContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
449
+ /**
450
+ * Register a message group handler with a filter
451
+ *
452
+ * @param filter Update filter
453
+ * @param handler Message group handler
454
+ * @param group Handler group index
455
+ */
456
+ onMessageGroup<Mod>(filter: UpdateFilter<MessageContext, Mod>, handler: MessageGroupHandler<filters.Modify<MessageContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
457
+ /**
458
+ * Register a delete message handler without any filters
459
+ *
460
+ * @param handler Delete message handler
461
+ * @param group Handler group index
462
+ */
463
+ onDeleteMessage(handler: DeleteMessageHandler['callback'], group?: number): void;
464
+ /**
465
+ * Register a delete message handler with a filter
466
+ *
467
+ * @param filter Update filter
468
+ * @param handler Delete message handler
469
+ * @param group Handler group index
470
+ */
471
+ onDeleteMessage<Mod>(filter: UpdateFilter<UpdateContext<DeleteMessageUpdate>, Mod>, handler: DeleteMessageHandler<filters.Modify<UpdateContext<DeleteMessageUpdate>, Mod>>['callback'], group?: number): void;
472
+ /**
473
+ * Register a chat member update handler without any filters
474
+ *
475
+ * @param handler Chat member update handler
476
+ * @param group Handler group index
477
+ */
478
+ onChatMemberUpdate(handler: ChatMemberUpdateHandler['callback'], group?: number): void;
479
+ /**
480
+ * Register a chat member update handler with a filter
481
+ *
482
+ * @param filter Update filter
483
+ * @param handler Chat member update handler
484
+ * @param group Handler group index
485
+ */
486
+ onChatMemberUpdate<Mod>(filter: UpdateFilter<UpdateContext<ChatMemberUpdate>, Mod>, handler: ChatMemberUpdateHandler<filters.Modify<UpdateContext<ChatMemberUpdate>, Mod>>['callback'], group?: number): void;
487
+ /**
488
+ * Register an inline query handler without any filters
489
+ *
490
+ * @param handler Inline query handler
491
+ * @param group Handler group index
492
+ */
493
+ onInlineQuery(handler: InlineQueryHandler['callback'], group?: number): void;
494
+ /**
495
+ * Register an inline query handler with a filter
496
+ *
497
+ * @param filter Update filter
498
+ * @param handler Inline query handler
499
+ * @param group Handler group index
500
+ */
501
+ onInlineQuery<Mod>(filter: UpdateFilter<InlineQueryContext, Mod>, handler: InlineQueryHandler<filters.Modify<InlineQueryContext, Mod>>['callback'], group?: number): void;
502
+ /**
503
+ * Register a chosen inline result handler without any filters
504
+ *
505
+ * @param handler Chosen inline result handler
506
+ * @param group Handler group index
507
+ */
508
+ onChosenInlineResult(handler: ChosenInlineResultHandler['callback'], group?: number): void;
509
+ /**
510
+ * Register a chosen inline result handler with a filter
511
+ *
512
+ * @param filter Update filter
513
+ * @param handler Chosen inline result handler
514
+ * @param group Handler group index
515
+ */
516
+ onChosenInlineResult<Mod>(filter: UpdateFilter<ChosenInlineResultContext, Mod>, handler: ChosenInlineResultHandler<filters.Modify<ChosenInlineResultContext, Mod>>['callback'], group?: number): void;
517
+ /**
518
+ * Register a callback query handler without any filters
519
+ *
520
+ * @param handler Callback query handler
521
+ * @param group Handler group index
522
+ */
523
+ onCallbackQuery(handler: CallbackQueryHandler<CallbackQueryContext, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
524
+ /**
525
+ * Register a callback query handler with a filter
526
+ *
527
+ * @param filter Update filter
528
+ * @param handler Callback query handler
529
+ * @param group Handler group index
530
+ */
531
+ onCallbackQuery<Mod>(filter: UpdateFilter<CallbackQueryContext, Mod, State>, handler: CallbackQueryHandler<filters.Modify<CallbackQueryContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
532
+ /**
533
+ * Register a callback query handler with a filter
534
+ *
535
+ * @param filter Update filter
536
+ * @param handler Callback query handler
537
+ * @param group Handler group index
538
+ */
539
+ onCallbackQuery<Mod>(filter: UpdateFilter<CallbackQueryContext, Mod>, handler: CallbackQueryHandler<filters.Modify<CallbackQueryContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
540
+ /**
541
+ * Register an inline callback query handler without any filters
542
+ *
543
+ * @param handler Inline callback query handler
544
+ * @param group Handler group index
545
+ */
546
+ onInlineCallbackQuery(handler: InlineCallbackQueryHandler<InlineCallbackQueryContext, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
547
+ /**
548
+ * Register an inline callback query handler with a filter
549
+ *
550
+ * @param filter Update filter
551
+ * @param handler Inline callback query handler
552
+ * @param group Handler group index
553
+ */
554
+ onInlineCallbackQuery<Mod>(filter: UpdateFilter<InlineCallbackQueryContext, Mod, State>, handler: InlineCallbackQueryHandler<filters.Modify<InlineCallbackQueryContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
555
+ /**
556
+ * Register an inline callback query handler with a filter
557
+ *
558
+ * @param filter Update filter
559
+ * @param handler Inline callback query handler
560
+ * @param group Handler group index
561
+ */
562
+ onInlineCallbackQuery<Mod>(filter: UpdateFilter<InlineCallbackQueryContext, Mod>, handler: InlineCallbackQueryHandler<filters.Modify<InlineCallbackQueryContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
563
+ /**
564
+ * Register a business callback query handler without any filters
565
+ *
566
+ * @param handler Business callback query handler
567
+ * @param group Handler group index
568
+ */
569
+ onBusinessCallbackQuery(handler: BusinessCallbackQueryHandler<BusinessCallbackQueryContext, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
570
+ /**
571
+ * Register a business callback query handler with a filter
572
+ *
573
+ * @param filter Update filter
574
+ * @param handler Business callback query handler
575
+ * @param group Handler group index
576
+ */
577
+ onBusinessCallbackQuery<Mod>(filter: UpdateFilter<BusinessCallbackQueryContext, Mod, State>, handler: BusinessCallbackQueryHandler<filters.Modify<BusinessCallbackQueryContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
578
+ /**
579
+ * Register a business callback query handler with a filter
580
+ *
581
+ * @param filter Update filter
582
+ * @param handler Business callback query handler
583
+ * @param group Handler group index
584
+ */
585
+ onBusinessCallbackQuery<Mod>(filter: UpdateFilter<BusinessCallbackQueryContext, Mod>, handler: BusinessCallbackQueryHandler<filters.Modify<BusinessCallbackQueryContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
586
+ /**
587
+ * Register a poll update handler without any filters
588
+ *
589
+ * @param handler Poll update handler
590
+ * @param group Handler group index
591
+ */
592
+ onPollUpdate(handler: PollUpdateHandler['callback'], group?: number): void;
593
+ /**
594
+ * Register a poll update handler with a filter
595
+ *
596
+ * @param filter Update filter
597
+ * @param handler Poll update handler
598
+ * @param group Handler group index
599
+ */
600
+ onPollUpdate<Mod>(filter: UpdateFilter<UpdateContext<PollUpdate>, Mod>, handler: PollUpdateHandler<filters.Modify<UpdateContext<PollUpdate>, Mod>>['callback'], group?: number): void;
601
+ /**
602
+ * Register a poll vote handler without any filters
603
+ *
604
+ * @param handler Poll vote handler
605
+ * @param group Handler group index
606
+ */
607
+ onPollVote(handler: PollVoteHandler['callback'], group?: number): void;
608
+ /**
609
+ * Register a poll vote handler with a filter
610
+ *
611
+ * @param filter Update filter
612
+ * @param handler Poll vote handler
613
+ * @param group Handler group index
614
+ */
615
+ onPollVote<Mod>(filter: UpdateFilter<UpdateContext<PollVoteUpdate>, Mod>, handler: PollVoteHandler<filters.Modify<UpdateContext<PollVoteUpdate>, Mod>>['callback'], group?: number): void;
616
+ /**
617
+ * Register an user status update handler without any filters
618
+ *
619
+ * @param handler User status update handler
620
+ * @param group Handler group index
621
+ */
622
+ onUserStatusUpdate(handler: UserStatusUpdateHandler['callback'], group?: number): void;
623
+ /**
624
+ * Register an user status update handler with a filter
625
+ *
626
+ * @param filter Update filter
627
+ * @param handler User status update handler
628
+ * @param group Handler group index
629
+ */
630
+ onUserStatusUpdate<Mod>(filter: UpdateFilter<UpdateContext<UserStatusUpdate>, Mod>, handler: UserStatusUpdateHandler<filters.Modify<UpdateContext<UserStatusUpdate>, Mod>>['callback'], group?: number): void;
631
+ /**
632
+ * Register an user typing handler without any filters
633
+ *
634
+ * @param handler User typing handler
635
+ * @param group Handler group index
636
+ */
637
+ onUserTyping(handler: UserTypingHandler['callback'], group?: number): void;
638
+ /**
639
+ * Register an user typing handler with a filter
640
+ *
641
+ * @param filter Update filter
642
+ * @param handler User typing handler
643
+ * @param group Handler group index
644
+ */
645
+ onUserTyping<Mod>(filter: UpdateFilter<UpdateContext<UserTypingUpdate>, Mod>, handler: UserTypingHandler<filters.Modify<UpdateContext<UserTypingUpdate>, Mod>>['callback'], group?: number): void;
646
+ /**
647
+ * Register a history read handler without any filters
648
+ *
649
+ * @param handler History read handler
650
+ * @param group Handler group index
651
+ */
652
+ onHistoryRead(handler: HistoryReadHandler['callback'], group?: number): void;
653
+ /**
654
+ * Register a history read handler with a filter
655
+ *
656
+ * @param filter Update filter
657
+ * @param handler History read handler
658
+ * @param group Handler group index
659
+ */
660
+ onHistoryRead<Mod>(filter: UpdateFilter<UpdateContext<HistoryReadUpdate>, Mod>, handler: HistoryReadHandler<filters.Modify<UpdateContext<HistoryReadUpdate>, Mod>>['callback'], group?: number): void;
661
+ /**
662
+ * Register a bot stopped handler without any filters
663
+ *
664
+ * @param handler Bot stopped handler
665
+ * @param group Handler group index
666
+ */
667
+ onBotStopped(handler: BotStoppedHandler['callback'], group?: number): void;
668
+ /**
669
+ * Register a bot stopped handler with a filter
670
+ *
671
+ * @param filter Update filter
672
+ * @param handler Bot stopped handler
673
+ * @param group Handler group index
674
+ */
675
+ onBotStopped<Mod>(filter: UpdateFilter<UpdateContext<BotStoppedUpdate>, Mod>, handler: BotStoppedHandler<filters.Modify<UpdateContext<BotStoppedUpdate>, Mod>>['callback'], group?: number): void;
676
+ /**
677
+ * Register a bot chat join request handler without any filters
678
+ *
679
+ * @param handler Bot chat join request handler
680
+ * @param group Handler group index
681
+ */
682
+ onBotChatJoinRequest(handler: BotChatJoinRequestHandler['callback'], group?: number): void;
683
+ /**
684
+ * Register a bot chat join request handler with a filter
685
+ *
686
+ * @param filter Update filter
687
+ * @param handler Bot chat join request handler
688
+ * @param group Handler group index
689
+ */
690
+ onBotChatJoinRequest<Mod>(filter: UpdateFilter<ChatJoinRequestUpdateContext, Mod>, handler: BotChatJoinRequestHandler<filters.Modify<ChatJoinRequestUpdateContext, Mod>>['callback'], group?: number): void;
691
+ /**
692
+ * Register a chat join request handler without any filters
693
+ *
694
+ * @param handler Chat join request handler
695
+ * @param group Handler group index
696
+ */
697
+ onChatJoinRequest(handler: ChatJoinRequestHandler['callback'], group?: number): void;
698
+ /**
699
+ * Register a chat join request handler with a filter
700
+ *
701
+ * @param filter Update filter
702
+ * @param handler Chat join request handler
703
+ * @param group Handler group index
704
+ */
705
+ onChatJoinRequest<Mod>(filter: UpdateFilter<UpdateContext<ChatJoinRequestUpdate>, Mod>, handler: ChatJoinRequestHandler<filters.Modify<UpdateContext<ChatJoinRequestUpdate>, Mod>>['callback'], group?: number): void;
706
+ /**
707
+ * Register a pre checkout query handler without any filters
708
+ *
709
+ * @param handler Pre checkout query handler
710
+ * @param group Handler group index
711
+ */
712
+ onPreCheckoutQuery(handler: PreCheckoutQueryHandler['callback'], group?: number): void;
713
+ /**
714
+ * Register a pre checkout query handler with a filter
715
+ *
716
+ * @param filter Update filter
717
+ * @param handler Pre checkout query handler
718
+ * @param group Handler group index
719
+ */
720
+ onPreCheckoutQuery<Mod>(filter: UpdateFilter<PreCheckoutQueryContext, Mod>, handler: PreCheckoutQueryHandler<filters.Modify<PreCheckoutQueryContext, Mod>>['callback'], group?: number): void;
721
+ /**
722
+ * Register a story update handler without any filters
723
+ *
724
+ * @param handler Story update handler
725
+ * @param group Handler group index
726
+ */
727
+ onStoryUpdate(handler: StoryUpdateHandler['callback'], group?: number): void;
728
+ /**
729
+ * Register a story update handler with a filter
730
+ *
731
+ * @param filter Update filter
732
+ * @param handler Story update handler
733
+ * @param group Handler group index
734
+ */
735
+ onStoryUpdate<Mod>(filter: UpdateFilter<UpdateContext<StoryUpdate>, Mod>, handler: StoryUpdateHandler<filters.Modify<UpdateContext<StoryUpdate>, Mod>>['callback'], group?: number): void;
736
+ /**
737
+ * Register a delete story handler without any filters
738
+ *
739
+ * @param handler Delete story handler
740
+ * @param group Handler group index
741
+ */
742
+ onDeleteStory(handler: DeleteStoryHandler['callback'], group?: number): void;
743
+ /**
744
+ * Register a delete story handler with a filter
745
+ *
746
+ * @param filter Update filter
747
+ * @param handler Delete story handler
748
+ * @param group Handler group index
749
+ */
750
+ onDeleteStory<Mod>(filter: UpdateFilter<UpdateContext<DeleteStoryUpdate>, Mod>, handler: DeleteStoryHandler<filters.Modify<UpdateContext<DeleteStoryUpdate>, Mod>>['callback'], group?: number): void;
751
+ /**
752
+ * Register a bot reaction update handler without any filters
753
+ *
754
+ * @param handler Bot reaction update handler
755
+ * @param group Handler group index
756
+ */
757
+ onBotReactionUpdate(handler: BotReactionUpdateHandler['callback'], group?: number): void;
758
+ /**
759
+ * Register a bot reaction update handler with a filter
760
+ *
761
+ * @param filter Update filter
762
+ * @param handler Bot reaction update handler
763
+ * @param group Handler group index
764
+ */
765
+ onBotReactionUpdate<Mod>(filter: UpdateFilter<UpdateContext<BotReactionUpdate>, Mod>, handler: BotReactionUpdateHandler<filters.Modify<UpdateContext<BotReactionUpdate>, Mod>>['callback'], group?: number): void;
766
+ /**
767
+ * Register a bot reaction count update handler without any filters
768
+ *
769
+ * @param handler Bot reaction count update handler
770
+ * @param group Handler group index
771
+ */
772
+ onBotReactionCountUpdate(handler: BotReactionCountUpdateHandler['callback'], group?: number): void;
773
+ /**
774
+ * Register a bot reaction count update handler with a filter
775
+ *
776
+ * @param filter Update filter
777
+ * @param handler Bot reaction count update handler
778
+ * @param group Handler group index
779
+ */
780
+ onBotReactionCountUpdate<Mod>(filter: UpdateFilter<UpdateContext<BotReactionCountUpdate>, Mod>, handler: BotReactionCountUpdateHandler<filters.Modify<UpdateContext<BotReactionCountUpdate>, Mod>>['callback'], group?: number): void;
781
+ /**
782
+ * Register a business connection update handler without any filters
783
+ *
784
+ * @param handler Business connection update handler
785
+ * @param group Handler group index
786
+ */
787
+ onBusinessConnectionUpdate(handler: BusinessConnectionUpdateHandler['callback'], group?: number): void;
788
+ /**
789
+ * Register a business connection update handler with a filter
790
+ *
791
+ * @param filter Update filter
792
+ * @param handler Business connection update handler
793
+ * @param group Handler group index
794
+ */
795
+ onBusinessConnectionUpdate<Mod>(filter: UpdateFilter<UpdateContext<BusinessConnection>, Mod>, handler: BusinessConnectionUpdateHandler<filters.Modify<UpdateContext<BusinessConnection>, Mod>>['callback'], group?: number): void;
796
+ /**
797
+ * Register a new business message handler without any filters
798
+ *
799
+ * @param handler New business message handler
800
+ * @param group Handler group index
801
+ */
802
+ onNewBusinessMessage(handler: NewBusinessMessageHandler<BusinessMessageContext, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
803
+ /**
804
+ * Register a new business message handler with a filter
805
+ *
806
+ * @param filter Update filter
807
+ * @param handler New business message handler
808
+ * @param group Handler group index
809
+ */
810
+ onNewBusinessMessage<Mod>(filter: UpdateFilter<BusinessMessageContext, Mod, State>, handler: NewBusinessMessageHandler<filters.Modify<BusinessMessageContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
811
+ /**
812
+ * Register a new business message handler with a filter
813
+ *
814
+ * @param filter Update filter
815
+ * @param handler New business message handler
816
+ * @param group Handler group index
817
+ */
818
+ onNewBusinessMessage<Mod>(filter: UpdateFilter<BusinessMessageContext, Mod>, handler: NewBusinessMessageHandler<filters.Modify<BusinessMessageContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
819
+ /**
820
+ * Register an edit business message handler without any filters
821
+ *
822
+ * @param handler Edit business message handler
823
+ * @param group Handler group index
824
+ */
825
+ onEditBusinessMessage(handler: EditBusinessMessageHandler<BusinessMessageContext, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
826
+ /**
827
+ * Register an edit business message handler with a filter
828
+ *
829
+ * @param filter Update filter
830
+ * @param handler Edit business message handler
831
+ * @param group Handler group index
832
+ */
833
+ onEditBusinessMessage<Mod>(filter: UpdateFilter<BusinessMessageContext, Mod, State>, handler: EditBusinessMessageHandler<filters.Modify<BusinessMessageContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
834
+ /**
835
+ * Register an edit business message handler with a filter
836
+ *
837
+ * @param filter Update filter
838
+ * @param handler Edit business message handler
839
+ * @param group Handler group index
840
+ */
841
+ onEditBusinessMessage<Mod>(filter: UpdateFilter<BusinessMessageContext, Mod>, handler: EditBusinessMessageHandler<filters.Modify<BusinessMessageContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
842
+ /**
843
+ * Register a business message group handler without any filters
844
+ *
845
+ * @param handler Business message group handler
846
+ * @param group Handler group index
847
+ */
848
+ onBusinessMessageGroup(handler: BusinessMessageGroupHandler<BusinessMessageContext, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
849
+ /**
850
+ * Register a business message group handler with a filter
851
+ *
852
+ * @param filter Update filter
853
+ * @param handler Business message group handler
854
+ * @param group Handler group index
855
+ */
856
+ onBusinessMessageGroup<Mod>(filter: UpdateFilter<BusinessMessageContext, Mod, State>, handler: BusinessMessageGroupHandler<filters.Modify<BusinessMessageContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
857
+ /**
858
+ * Register a business message group handler with a filter
859
+ *
860
+ * @param filter Update filter
861
+ * @param handler Business message group handler
862
+ * @param group Handler group index
863
+ */
864
+ onBusinessMessageGroup<Mod>(filter: UpdateFilter<BusinessMessageContext, Mod>, handler: BusinessMessageGroupHandler<filters.Modify<BusinessMessageContext, Mod>, State extends never ? never : UpdateState<State>>['callback'], group?: number): void;
865
+ /**
866
+ * Register a delete business message handler without any filters
867
+ *
868
+ * @param handler Delete business message handler
869
+ * @param group Handler group index
870
+ */
871
+ onDeleteBusinessMessage(handler: DeleteBusinessMessageHandler['callback'], group?: number): void;
872
+ /**
873
+ * Register a delete business message handler with a filter
874
+ *
875
+ * @param filter Update filter
876
+ * @param handler Delete business message handler
877
+ * @param group Handler group index
878
+ */
879
+ onDeleteBusinessMessage<Mod>(filter: UpdateFilter<UpdateContext<DeleteBusinessMessageUpdate>, Mod>, handler: DeleteBusinessMessageHandler<filters.Modify<UpdateContext<DeleteBusinessMessageUpdate>, Mod>>['callback'], group?: number): void;
880
+ }