-
Notifications
You must be signed in to change notification settings - Fork 4
/
Types.js
3317 lines (3027 loc) · 207 KB
/
Types.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/**
* TypeScript Definitions for Telesun Library
* ==============================================================
* These type definitions are designed to provide enhanced code completion and
* IntelliSense support within the Google Apps Script environment. They adhere
* to the limitations and conventions of Google Apps Script to ensure a seamless
* development experience.
*
* Important Notes:
* - The types are structured to complement the unique characteristics of Google
* Apps Script. Users familiar with TypeScript and Google Apps Script will find
* these types intuitive and helpful for developing robust applications.
* - Modifications to these types should be made cautiously. Deep understanding
* of both the Telesun library's API and Google Apps Script's capabilities is
* essential to maintain the integrity and usefulness of these definitions.
*
* Contributions:
* Contributions to improve or extend these type definitions are highly welcome.
* If you have suggestions or improvements, please feel free to submit a pull
* request or open an issue on the project's GitHub repository. Your input is
* valuable in making Telesun more accessible and enjoyable for the developer
* community.
*
* Credits:
* These type definitions were created by `Abd Urgessa` to enhance the development
* experience with the Telesun library in Google Apps Script. Special thanks to
* everyone who contributes to refining and expanding these types.
*
* ==============================================================================
* Unless you have a good understanding of the Telesun API and the limitations
* imposed by Google Apps Script, it is recommended not to modify the types
* provided here. This ensures that you can take full advantage of the library's
* capabilities without encountering unexpected issues.
*/
/**
* main telesun class
* @typedef {Object} telesun
* @property {function(string): telesun} connectToSpreadSheet - Connects to a Google Spreadsheet using `spreadsheet ID`.
* @property {function(Object): telesun} temporaryMemory - Configures temporary memory for the bot, including cache and session.
* @property {function(Object): telesun} permanentMemory - Configures permanent memory for the bot, including cache and session.
* @property {function(Update): telesun} handleUpdate - Handles incoming updates from Telegram.
* @property {function(function(ctx, next): void): telesun} use - Registers a middleware function to be used by the bot.
*
* @property {function(UpdateType, function(ctx, next): void): telesun} on - Registers a middleware for a specific update type. The first parameter is one of [`message`, `edited_message`, `channel_post`, `edited_channel_post`, `inline_query`, `chosen_inline_result`, `callback_query`, `shipping_query`, `pre_checkout_query`, `poll`, `poll_answer`, `my_chat_member`, `chat_member`, `chat_join_request`, `message_reaction`, `message_reaction_count`, `chat_boost`, `removed_chat_boost`].
*
* @property {function(string|string[]|RegExp, function(ctx, next): void): telesun} action - Registers a middleware for a specific action.
* @property {function(string|string[]|RegExp, function(ctx, next): void): telesun} stage - Registers a middleware for a specific stage.
* @property {function(function(ctx, next): void): telesun} start - Registers a start command middleware.
* @property {function(function(ctx, next): void): telesun} help - Registers a help command middleware.
* @property {function(string|string[]|RegExp, function(ctx, next): void): telesun} hears - Registers a middleware that triggers on matching text.
* @property {function(function(ctx, next): void): telesun} contact - Registers a middleware for contact updates.
* @property {function(function(ctx, next): void): telesun} photo - Registers a middleware for photo updates.
* @property {function(function(ctx, next): void): telesun} video - Registers a middleware for video updates.
* @property {function(function(ctx, next): void): telesun} voice - Registers a middleware for voice message updates.
* @property {function(function(ctx, next): void): telesun} document - Registers a middleware for document updates.
* @property {function(function(ctx, next): void): telesun} audio - Registers a middleware for audio updates.
* @property {function(function(ctx, next): void): telesun} text - Registers a middleware for text message updates.
* @property {function(function(ctx, next): void): telesun} sticker - Registers a middleware for sticker updates.
* @property {function(function(ctx, next): void): telesun} commands - Registers a middleware for any command.
* @property {function(string|string[]|RegExp, function(ctx, next): void): telesun} command - Registers a middleware for a specific command.
* @property {function(Object, UpdateConfig): void} handleWebhook Handles webhook updates.
* @property {function(LongPollingOptions): void} longPolling Initiates long polling.
* @property {function(PollingOptions): void} polling Initiates simple polling.
* @property {function(Object, DevHookOptions): void} devHook Sets up a development webhook.
* @property {function(SetWebhookOptions): Object} setWebhook Configures the webhook for the bot.
* @property {function(DeleteWebhookOptions): Object} deleteWebhook Deletes the configured webhook.
*/
/**
* Options for initiating long polling.
* @typedef {Object} LongPollingOptions
* @property {number} [sleep=1000] The delay between polling requests in milliseconds.
* @property {number} [timeout=60] Timeout in seconds for long polling.
*/
/**
* Options for initiating simple polling.
* @typedef {Object} PollingOptions
* @property {number} [limit=100] The maximum number of updates to receive.
* @property {number} [timeout=60] Timeout in seconds for polling.
*/
/**
* Options for setting up a development webhook.
* @typedef {Object} DevHookOptions
* @property {InputFile} [certificate] Your public key certificate file.
* @property {string} [ip_address] The IP address of the server.
* @property {number} [max_connections] Maximum allowed number of simultaneous HTTPS connections to the webhook.
* @property {string[]} [drop_pending_updates] List of types of updates to drop.
* @property {string} [secret_token] A secret token to authenticate the webhook.
* @property {Server} [server] The server configuration for the webhook.
*/
/**
* Options for configuring the webhook.
* @typedef {Object} SetWebhookOptions
* @property {string} url The HTTPS URL to send updates to.
* @property {InputFile} [certificate] Your public key certificate file.
* @property {string} [ip_address] The IP address of the server.
* @property {number} [max_connections] Maximum allowed number of simultaneous HTTPS connections to the webhook.
* @property {string[]} [drop_pending_updates] List of types of updates to drop.
* @property {string} [secret_token] A secret token to authenticate the webhook.
*/
/**
* Options for deleting the configured webhook.
* @typedef {Object} DeleteWebhookOptions
* @property {boolean} drop_pending_updates Whether to drop pending updates.
*/
/**
* Update types for the 'on' method.
* @typedef {"message" | "edited_message" | "channel_post" | "edited_channel_post" | "inline_query" | "chosen_inline_result" | "callback_query" | "shipping_query" | "pre_checkout_query" | "poll" | "poll_answer" | "my_chat_member" | "chat_member" | "chat_join_request" | "message_reaction" | "message_reaction_count" | "chat_boost" | "removed_chat_boost"} UpdateType
*/
/**
* Formatting options.
* @typedef {"HTML" | "MarkdownV2"} Format
*/
/**
* config options for devHook.
* @typedef {"webhook" | "polling"} UpdateConfig
*/
/**
* server config options for devHook.
* @typedef {"GAS" | "VERCEL" |"RENDER"} Server
*/
/**
* @typedef {Object} Update
* @property {Message} [message] - New incoming message of any kind - text, photo, sticker, etc.
* @property {Message} [edited_message] - Message edit notification for known messages.
* @property {Message} [channel_post] - New incoming channel post of any kind - text, photo, sticker, etc.
* @property {Message} [edited_channel_post] - Channel post edit notification for known posts.
* @property {MessageReactionUpdated} [message_reaction] - User changed a message reaction; requires bot as admin.
* @property {MessageReactionCountUpdated} [message_reaction_count] - Grouped anonymous message reaction changes.
* @property {InlineQuery} [inline_query] - New incoming inline query update.
* @property {ChosenInlineResult} [chosen_inline_result] - User's choice from an inline query sent to chat.
* @property {CallbackQuery} [callback_query] - New incoming callback query.
* @property {ShippingQuery} [shipping_query] - New incoming shipping query. Only for invoices with flexible price.
* @property {PreCheckoutQuery} [pre_checkout_query] - New incoming pre-checkout query. Contains full information about checkout.
* @property {Poll} [poll] - Notification of new poll state; for stopped polls and those sent by the bot.
* @property {PollAnswer} [poll_answer] - User changed their vote in a non-anonymous poll sent by the bot.
* @property {ChatMemberUpdated} [my_chat_member] - Bot's chat member status updated in a chat.
* @property {ChatMemberUpdated} [chat_member] - Chat member's status updated; requires bot admin.
* @property {ChatJoinRequest} [chat_join_request] - Chat join request sent; requires bot's `can_invite_users` right.
* @property {ChatBoostUpdated} [chat_boost] - Chat boost added or changed; requires bot admin.
* @property {ChatBoostRemoved} [removed_chat_boost] - Chat boost removed; requires bot admin.
*
*/
/**
* Options for forwarding a single message from one chat to another.
* @typedef {Object} ForwardMessageOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_thread_id] Unique identifier for the target message thread, only for messages in threads.
* @property {(number|string)} from_chat_id Unique identifier for the chat where the original message was sent (or channel username in the format `@channelusername`)
* @property {number} message_id Unique message identifier to forward.
* @property {boolean} [disable_notification] Sends the message silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the forwarded message from forwarding and saving.
*/
/**
* Options for forwarding multiple messages from one chat to another.
* @typedef {Object} ForwardMessagesOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username of the target channel (in the format `@channelusername`).
* @property {number} [message_thread_id] Unique identifier for the target message thread, only for messages in threads.
* @property {(number|string)} from_chat_id Unique identifier for the chat where the original messages were sent (or channel username in the format `@channelusername`).
* @property {number[]} message_ids Array of unique message identifiers to forward.
* @property {boolean} [disable_notification] Sends the messages silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the forwarded messages from forwarding and saving.
*/
/**
* Options for copying a single message from one chat to another, potentially with a new caption.
* @typedef {Object} CopyMessageOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_thread_id] Unique identifier for the target message thread, only for messages in threads.
* @property {(number|string)} from_chat_id Unique identifier for the chat where the original message was sent (or channel username in the format `@channelusername`).
* @property {number} message_id Unique message identifier to copy.
* @property {string} [caption] New caption for the message.
* @property {Format} [parse_mode] Formatting options for the caption, Markdown or HTML.
* @property {MessageEntity[]} [caption_entities] List of special entities that appear in the new caption, which can be specified instead of parse_mode.
* @property {boolean} [disable_notification] Sends the message silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the copied message from forwarding and saving.
* @property {ReplyParameters} [reply_parameters] Additional parameters for replying to messages.
* @property {(InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply)} [reply_markup] Additional interface options for the message.
*/
/**
* Options for copying multiple messages from one chat to another without changing the caption.
* @typedef {Object} CopyMessagesOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_thread_id] Unique identifier for the target message thread, only for messages in threads.
* @property {(number|string)} from_chat_id Unique identifier for the chat where the original messages were sent (or channel username in the format `@channelusername`).
* @property {number[]} message_ids Array of unique message identifiers to copy.
* @property {boolean} [disable_notification] Sends the messages silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the copied messages from forwarding and saving.
* @property {boolean} [remove_caption] Indicates whether to remove the captions of the copied messages.
*/
/**
* Options for sending a photo.
* @typedef {Object} SendPhotoOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_thread_id] Unique identifier for the target message thread, only for messages in threads.
* @property {(InputFile|string)} photo Photo to send.
* @property {string} [caption] Photo caption, may also be used when resending photos by file_id.
* @property {Format} [parse_mode] Format of the caption text: Markdown or HTML.
* @property {MessageEntity[]} [caption_entities] List of special entities that appear in the caption, which can be specified instead of parse_mode.
* @property {boolean} [has_spoiler] Marks the caption as containing a spoiler.
* @property {boolean} [disable_notification] Sends the photo silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the sent photo from forwarding and saving.
* @property {ReplyParameters} [reply_parameters] Additional parameters for replying to messages.
* @property {(InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply)} [reply_markup] Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove the reply keyboard, or to force a reply from the user.
*/
/**
* Options for sending an audio file.
* @typedef {Object} SendAudioOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username of the target channel.
* @property {number} [message_thread_id] Unique identifier for the target message thread.
* @property {(InputFile|string)} audio Audio file to send.
* @property {string} [caption] Audio caption, 0-1024 characters after entities parsing.
* @property {Format} [parse_mode] Format of the caption text: Markdown or HTML.
* @property {MessageEntity[]} [caption_entities] List of special entities that appear in the caption, which can be specified instead of parse_mode.
* @property {number} [duration] Duration of the audio in seconds.
* @property {string} [performer] Performer of the audio.
* @property {string} [title] Title of the audio.
* @property {(InputFile|string)} [thumbnail] Thumbnail of the file to send.
* @property {boolean} [disable_notification] Sends the audio silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the sent audio from forwarding and saving.
* @property {ReplyParameters} [reply_parameters] Additional parameters for replying to messages.
* @property {(InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply)} [reply_markup] Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove the reply keyboard, or to force a reply from the user.
*/
/**
* Options for sending a document.
* @typedef {Object} SendDocumentOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username of the target channel.
* @property {number} [message_thread_id] Unique identifier for the target message thread.
* @property {(InputFile|string)} document File to send.
* @property {(InputFile|string)} [thumbnail] Thumbnail of the file to send.
* @property {string} [caption] Document caption, may also be used when resending documents by file_id, 0-1024 characters after entities parsing.
* @property {Format} [parse_mode] Format of the caption text: Markdown or HTML.
* @property {MessageEntity[]} [caption_entities] List of special entities that appear in the caption, which can be specified instead of parse_mode.
* @property {boolean} [disable_content_type_detection] Disables automatic server-side content type detection for files uploaded using multipart/form-data.
* @property {boolean} [disable_notification] Sends the document silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the sent document from forwarding and saving.
* @property {ReplyParameters} [reply_parameters] Additional parameters for replying to messages.
* @property {(InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply)} [reply_markup] Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove the reply keyboard, or to force a reply from the user.
*/
/**
* Options for sending a video.
* @typedef {Object} SendVideoOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username of the target channel.
* @property {number} [message_thread_id] Unique identifier for the target message thread.
* @property {(InputFile|string)} video Video to send.
* @property {number} [duration] Duration of sent video in seconds.
* @property {number} [width] Video width.
* @property {number} [height] Video height.
* @property {(InputFile|string)} [thumbnail] Thumbnail of the file to send.
* @property {string} [caption] Video caption, may also be used when resending videos by file_id, 0-1024 characters after entities parsing.
* @property {Format} [parse_mode] Format of the caption text: Markdown or HTML.
* @property {MessageEntity[]} [caption_entities] List of special entities that appear in the caption, which can be specified instead of parse_mode.
* @property {boolean} [has_spoiler] Marks the caption as containing a spoiler.
* @property {boolean} [supports_streaming] If the video is suitable for streaming.
* @property {boolean} [disable_notification] Sends the video silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the sent video from forwarding and saving.
* @property {ReplyParameters} [reply_parameters] Additional parameters for replying to messages.
* @property {(InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply)} [reply_markup] Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove the reply keyboard, or to force a reply from the user.
*/
/**
* Options for sending an animation.
* @typedef {Object} SendAnimationOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_thread_id] Unique identifier for the target message thread, only for messages in threads.
* @property {(InputFile|string)} animation Animation to send.
* @property {number} [duration] Duration of sent animation in seconds.
* @property {number} [width] Animation width.
* @property {number} [height] Animation height.
* @property {(InputFile|string)} [thumbnail] Thumbnail of the file to send.
* @property {string} [caption] Caption for the animation, 0-1024 characters after entities parsing.
* @property {Format} [parse_mode] Format of the caption text: Markdown or HTML.
* @property {MessageEntity[]} [caption_entities] List of special entities that appear in the caption, which can be specified instead of parse_mode.
* @property {boolean} [has_spoiler] Marks the caption as containing a spoiler.
* @property {boolean} [disable_notification] Sends the message silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the sent message from forwarding and saving.
* @property {ReplyParameters} [reply_parameters] Additional parameters for replying to messages.
* @property {(InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply)} [reply_markup] Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove the reply keyboard, or to force a reply from the user.
*/
/**
* Options for sending a voice message.
* @typedef {Object} SendVoiceOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_thread_id] Unique identifier for the target message thread, only for messages in threads.
* @property {(InputFile|string)} voice Audio file to send as a voice message.
* @property {string} [caption] Caption for the voice message, 0-1024 characters after entities parsing.
* @property {Format} [parse_mode] Format of the caption text: Markdown or HTML.
* @property {MessageEntity[]} [caption_entities] List of special entities that appear in the caption, which can be specified instead of parse_mode.
* @property {number} [duration] Duration of the voice message in seconds.
* @property {boolean} [disable_notification] Sends the message silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the sent message from forwarding and saving.
* @property {ReplyParameters} [reply_parameters] Additional parameters for replying to messages.
* @property {(InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply)} [reply_markup] Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove the reply keyboard, or to force a reply from the user.
*/
/**
* Options for sending a video note.
* @typedef {Object} SendVideoNoteOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_thread_id] Unique identifier for the target message thread, only for messages in threads.
* @property {(InputFile|string)} video_note Video note to send.
* @property {number} [duration] Duration of the video note in seconds.
* @property {number} [length] Video width and height, since video notes are square-shaped.
* @property {(InputFile|string)} [thumbnail] Thumbnail of the file to send.
* @property {boolean} [disable_notification] Sends the message silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the sent message from forwarding and saving.
* @property {ReplyParameters} [reply_parameters] Additional parameters for replying to messages.
* @property {(InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply)} [reply_markup] Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove the reply keyboard, or to force a reply from the user.
*/
/**
* Options for sending a media group.
* @typedef {Object} SendMediaGroupOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_thread_id] Unique identifier for the target message thread, only for messages in threads.
* @property {(InputMediaAudio[]|InputMediaDocument[]|InputMediaPhoto[]|InputMediaVideo[])} media A JSON-serialized array describing photos, videos, documents, or audios to be sent, making up a media group.
* @property {boolean} [disable_notification] Sends the messages silently. Users will receive notifications with no sound.
* @property {boolean} [protect_content] Protects the content of the sent messages from forwarding and saving.
* @property {ReplyParameters} [reply_parameters] Additional parameters for replying to messages.
*/
/**
* Options for sending a location message.
* @typedef {Object} SendLocationOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_thread_id] Unique identifier for the target message thread, only for messages in threads.
* @property {number} latitude Latitude of the location.
* @property {number} longitude Longitude of the location.
* @property {number} [horizontal_accuracy] The radius of uncertainty for the location, measured in meters; 0-1500.
* @property {number} [live_period] Time in seconds for which the location will be live, ranging from 60 to 86400.
* @property {number} [heading] For live locations, a direction in which the user is moving, in degrees. Must be between 1 and 360 if specified.
* @property {number} [proximity_alert_radius] For live locations, a maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified.
* @property {boolean} [disable_notification] Sends the message silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the sent message from forwarding and saving.
* @property {ReplyParameters} [reply_parameters] Additional parameters for replying to messages.
* @property {(InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply)} [reply_markup] Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove the reply keyboard, or to force a reply from the user.
*/
/**
* Options for sending a venue message.
* @typedef {Object} SendVenueOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_thread_id] Unique identifier for the target message thread, only for messages in threads.
* @property {number} latitude Latitude of the venue.
* @property {number} longitude Longitude of the venue.
* @property {string} title Name of the venue.
* @property {string} address Address of the venue.
* @property {string} [foursquare_id] Foursquare identifier of the venue.
* @property {string} [foursquare_type] Foursquare type of the venue., For example, `arts_entertainment/default`, `arts_entertainment/aquarium` or `food/icecream`.)
* @property {string} [google_place_id] Google Places identifier of the venue.
* @property {string} [google_place_type] Google Places type of the venue., See [Google Places API](https://developers.google.com/places/web-service/supported_types) for supported types.)
* @property {boolean} [disable_notification] Sends the message silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the sent message from forwarding and saving.
* @property {ReplyParameters} [reply_parameters] Additional parameters for replying to messages.
* @property {(InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply)} [reply_markup] Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove the reply keyboard, or to force a reply from the user.
*/
/**
* Options for sending a contact message.
* @typedef {Object} SendContactOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_thread_id] Unique identifier for the target message thread, only for messages in threads.
* @property {string} phone_number Contact's phone number.
* @property {string} first_name Contact's first name.
* @property {string} [last_name] Contact's last name.
* @property {string} [vcard] Additional data about the contact in the form of a vCard, 0-2048 bytes.
* @property {boolean} [disable_notification] Sends the message silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the sent message from forwarding and saving.
* @property {ReplyParameters} [reply_parameters] Additional parameters for replying to messages.
* @property {(InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply)} [reply_markup] Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove the reply keyboard, or to force a reply from the user.
*/
/**
* Options for sending a poll.
* @typedef {Object} SendPollOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_thread_id] Unique identifier for the target message thread, only for messages in threads.
* @property {string} question Poll question, 1-300 characters.
* @property {string[]} options List of answer options, 2-10 strings 1-100 characters each.
* @property {boolean} [is_anonymous] True, if the poll needs to be anonymous.
* @property {string} [type] Poll type, “quiz” or “regular”, defaults to “regular”.
* @property {boolean} [allows_multiple_answers] True, if the poll allows multiple answers, ignored for quizzes.
* @property {number} [correct_option_id] 0-based identifier of the correct answer option, required for quizzes.
* @property {string} [explanation] Text that is shown when a user chooses an incorrect answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with the possibility to include entities.
* @property {Format} [explanation_parse_mode] Mode for parsing entities in the explanation. See formatting options for more details.
* @property {MessageEntity[]} [explanation_entities] List of special entities that appear in the explanation, which can be specified instead of parse_mode.
* @property {number} [open_period] Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with close_date.
* @property {number} [close_date] Point in time, Unix timestamp) when the poll will be automatically closed. Can't be used together with open_period.
* @property {boolean} [is_closed] Pass True, if the poll needs to be immediately closed. This can be useful for poll preview.
* @property {boolean} [disable_notification] Sends the message silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the sent message from forwarding and saving.
* @property {ReplyParameters} [reply_parameters] Additional parameters for replying to messages.
* @property {(InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply)} [reply_markup] Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove the reply keyboard, or to force a reply from the user.
*/
/**
* Options for sending a dice message.
* @typedef {Object} SendDiceOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_thread_id] Unique identifier for the target message thread, only for messages in threads.
* @property {string} [emoji] Emoji on which the dice throw animation is based.
* @property {boolean} [disable_notification] Sends the message silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the sent message from forwarding and saving.
* @property {ReplyParameters} [reply_parameters] Additional parameters for replying to messages.
* @property {(InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply)} [reply_markup] Additional interface options for the message.
*/
/**
* Options for sending chat action.
* @typedef {Object} SendChatActionOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_thread_id] Unique identifier for the target message thread, only for messages in threads.
* @property {string} action Type of action to broadcast.
*/
/**
* Options for setting message reaction.
* @typedef {Object} SetMessageReactionOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} message_id Identifier of the message to add the reaction to.
* @property {ReactionType[]} [reaction] Types of reactions to set on the message.
* @property {boolean} [is_big] Whether the reaction should be displayed in a larger format.
*/
/**
* Options for getting a user's profile photos.
* @typedef {Object} GetUserProfilePhotosOptions
* @property {number} user_id Unique identifier of the target user.
* @property {number} [offset] Sequential number of the first photo to be returned.
* @property {number} [limit] Limits the number of photos to be retrieved.
*/
/**
* Options for getting file information.
* @typedef {Object} GetFileOptions
* @property {string} file_id File identifier to get info about.
*/
/**
* Options for banning a chat member.
* @typedef {Object} BanChatMemberOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} user_id Unique identifier of the target user to be banned.
* @property {number} [until_date] Date when the ban will be lifted. Unix time.
* @property {boolean} [revoke_messages] Pass True to delete all messages from the chat for the user that is being removed.
*/
/**
* Options for unbanning a previously banned user in a supergroup or channel.
* @typedef {Object} UnbanChatMemberOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} user_id Unique identifier of the target user.
* @property {boolean} [only_if_banned] Do the unban action only if the user is currently banned.
*/
/**
* Options for restricting a user in a supergroup.
* @typedef {Object} RestrictChatMemberOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} user_id Unique identifier of the target user to restrict.
* @property {ChatPermissions} permissions Permissions to be set for the restricted user.
* @property {boolean} [use_independent_chat_permissions] Use independent permissions for the chat.
* @property {number} [until_date] Date when restrictions will be lifted for the user, unix time.
*/
/**
* Options for promoting or demoting a user in a supergroup or channel.
* @typedef {Object} PromoteChatMemberOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} user_id Unique identifier of the target user to promote or demote.
* @property {boolean} [is_anonymous] The user's presence in chat is hidden.
* @property {boolean} [can_manage_chat] The user can access the chat event log, chat statistics, message statistics in channels, see channel members, manage voice chats.
* @property {boolean} [can_delete_messages] The user can delete messages of other users.
* @property {boolean} [can_manage_video_chats] The user can manage video chats.
* @property {boolean} [can_restrict_members] The user can restrict, ban or unban chat members.
* @property {boolean} [can_promote_members] The user can add new administrators with a subset of their own privileges or demote administrators that he has promoted, directly or indirectly, promoted by administrators that were appointed by the user.
* @property {boolean} [can_change_info] The user can change the chat title, photo, and other settings.
* @property {boolean} [can_invite_users] The user can invite new users to the chat.
* @property {boolean} [can_post_messages] The user can post in the channel.
* @property {boolean} [can_edit_messages] The user can edit messages of others and can pin messages.
* @property {boolean} [can_pin_messages] The user can pin messages.
*
/**
* Options for setting a custom title for an administrator in a supergroup.
* @typedef {Object} SetChatAdministratorCustomTitleOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} user_id Unique identifier of the target user to set a custom title.
* @property {string} custom_title New custom title for the administrator; 0-16 characters, emoji are not allowed.
*/
/**
* Options for banning a channel chat in a supergroup or channel.
* @typedef {Object} BanChatSenderChatOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} sender_chat_id Unique identifier of the target sender chat to ban.
*/
/**
* Options for unbanning a previously banned channel chat.
* @typedef {Object} UnbanChatSenderChatOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} sender_chat_id Unique identifier of the target sender chat to unban.
*/
/**
* Options for setting default chat permissions for all members.
* @typedef {Object} SetChatPermissionsOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {ChatPermissions} permissions New default chat permissions to set.
* @property {boolean} [use_independent_chat_permissions] Specifies whether the chat supports independent default chat permissions for channels and supergroups.
*/
/**
* Options for generating a new primary invite link for a chat.
* @typedef {Object} ExportChatInviteLinkOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
*/
/**
* Options for creating an additional invite link for a chat.
* @typedef {Object} CreateChatInviteLinkOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {string} [name] Invite link name.
* @property {number} [expire_date] Date when the link will expire.
* @property {number} [member_limit] Maximum number of users that can be invited.
* @property {boolean} [creates_join_request] True, if the link should create a join request instead of immediately joining the chat.
*/
/**
* Options for editing a non-primary invite link created by the bot.
* @typedef {Object} EditChatInviteLinkOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {string} invite_link The invite link to edit.
* @property {string} [name] New name for the invite link.
* @property {number} [expire_date] New expiration date for the invite link.
* @property {number} [member_limit] New maximum number of users that can be invited with the link.
* @property {boolean} [creates_join_request] True, if the link should now create a join request instead of immediately joining the chat.
*/
/**
* Options for revoking an invite link created by the bot.
* @typedef {Object} RevokeChatInviteLinkOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {string} invite_link The invite link to revoke.
*/
/**
* Options for managing a chat join request.
* @typedef {Object} ChatJoinRequestOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} user_id Unique identifier of the target user.
*/
/**
* Options for setting a new chat photo.
* @typedef {Object} SetChatPhotoOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {InputFile} photo New chat photo.
*/
/**
* Basic options for operations on a chat.
* @typedef {Object} deleteChatPhotoOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
*/
/**
* Options for changing the title of a chat.
* @typedef {Object} SetChatTitleOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {string} title New chat title.
*/
/**
* Options for changing the description of a chat.
* @typedef {Object} SetChatDescriptionOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {string} [description] New chat description.
*/
/**
* Options for pinning a message in a chat.
* @typedef {Object} PinChatMessageOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} message_id Identifier of a message to pin.
* @property {boolean} [disable_notification] If true, the message will be pinned silently. This means users will not receive a notification.
*/
/**
* Options for unpinning a chat message.
* @typedef {Object} UnpinChatMessageOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_id] Identifier of a message to unpin. If not specified, the most recent pinned message, by sending date) will be unpinned.
*/
/**
* Options requiring only a chat ID.
* @typedef {Object} ChatIdOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
*/
/**
* Options for getting information about a chat member.
* @typedef {Object} GetChatMemberOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} user_id Unique identifier of the target user.
*/
/**
* Options for getting information about a member of a chat.
* @typedef {Object} GetChatMemberOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} user_id Unique identifier of the target user.
*/
/**
* Options for setting a new group sticker set for a supergroup.
* @typedef {Object} SetChatStickerSetOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {string} sticker_set_name Name of the sticker set to be set as the group sticker set.
*/
/**
* Options for creating a topic in a forum supergroup chat.
* @typedef {Object} CreateForumTopicOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {string} name Name of the forum topic.
* @property {number} [icon_color] Color of the forum topic icon.
* @property {string} [icon_custom_emoji_id] Custom emoji identifier to be used as the icon of the forum topic.
*/
/**
* Options for editing the name and icon of a forum topic.
* @typedef {Object} EditForumTopicOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} message_thread_id Unique identifier for the target message thread.
* @property {string} [name] New name for the forum topic.
* @property {string} [icon_custom_emoji_id] Custom emoji identifier to be used as the new icon of the forum topic.
*/
/**
* Options for closing or reopening a topic in a forum supergroup chat.
* @typedef {Object} ForumTopicManagementOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} message_thread_id Unique identifier for the target message thread.
*/
/**
* Options for editing the name of the 'General' topic in a forum supergroup chat.
* @typedef {Object} EditGeneralForumTopicOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {string} name New name for the 'General' topic.
*/
/**
* Options for sending answers to callback queries sent from inline keyboards.
* @typedef {Object} AnswerCallbackQueryOptions
* @property {string} callback_query_id Unique identifier for the query to be answered.
* @property {string} [text] Text of the notification. If not specified, nothing will be shown to the user.
* @property {boolean} [show_alert] If true, an alert will be shown by the client instead of a notification at the top of the chat screen. Defaults to false.
* @property {string} [url] URL that will be opened by the user's client.
* @property {number} [cache_time] The maximum amount of time in seconds that the result of the callback query may be cached client-side.
*/
/**
* Options for getting the list of boosts added to a chat by a user.
* @typedef {Object} GetUserChatBoostsOptions
* @property {(number|string)} chat_id The unique identifier for the target chat or username of the target channel.
* @property {number} user_id Unique identifier of the user whose boosts are being requested.
*/
/**
* Options for changing the list of the bot's commands.
* @typedef {Object} SetMyCommandsOptions
* @property {BotCommand[]} commands An array of bot commands to be set.
* @property {BotCommandScope} [scope] A JSON-serialized object defining the scope of commands. If not specified, defaults to all private chats.
* @property {string} [language_code] A two-letter ISO 639-1 language code. If not specified, commands will be applied to all languages.
*/
/**
* Options for deleting the bot's commands for a given scope and language.
* @typedef {Object} DeleteMyCommandsOptions
* @property {BotCommandScope} [scope] A JSON-serialized object defining the scope of commands to be deleted. If not specified, commands will be deleted in all private chats.
* @property {string} [language_code] A two-letter ISO 639-1 language code. If not specified, commands will be deleted for all languages.
*/
/**
* Options for getting the list of the bot's commands.
* @typedef {Object} GetMyCommandsOptions
* @property {BotCommandScope} [scope] The scope of commands to retrieve. If not specified, defaults to all commands.
* @property {string} [language_code] A language code to specify which language's commands to retrieve. If not specified, defaults to all languages.
*/
/**
* Options for setting the bot's name.
* @typedef {Object} SetMyNameOptions
* @property {string} name The new name to set for the bot.
* @property {string} [language_code] A language code. If specified, sets the name for that specific language.
*/
/**
* Options for getting the bot's name.
* @typedef {Object} GetMyNameOptions
* @property {string} [language_code] A language code to specify which language's name to retrieve. If not specified, gets the default name.
*/
/**
* Options for getting the bot's description.
* @typedef {Object} GetMyDescriptionOptions
* @property {string} [language_code] A language code to specify which language's description to retrieve. If not specified, gets the default description.
*/
/**
* Options for setting the bot's description.
* @typedef {Object} SetMyDescriptionOptions
* @property {string} [description] The new description to set for the bot.
* @property {string} [language_code] A language code. If specified, sets the description for that specific language.
*/
/**
* Options for getting the bot's short description.
* @typedef {Object} GetMyShortDescriptionOptions
* @property {string} [language_code] A language code to specify which language's short description to retrieve. If not specified, gets the default short description.
*/
/**
* Options for setting the chat menu button.
* @typedef {Object} SetChatMenuButtonOptions
* @property {number} [chat_id] Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {MenuButton} [menu_button] The menu button to be set. If not specified, the button is removed.
*/
/**
* Options for getting the chat menu button.
* @typedef {Object} GetChatMenuButtonOptions
* @property {number} [chat_id] Unique identifier for the target chat or username (in the format `@channelusername`).
*/
/**
* Options for setting the bot's default administrator rights.
* @typedef {Object} SetMyDefaultAdministratorRightsOptions
* @property {ChatAdministratorRights} [rights] The default administrator rights to be set.
* @property {boolean} [for_channels] Specifies whether the rights are for channels. Defaults to false, for groups.
*/
/**
* Options for getting the bot's default administrator rights.
* @typedef {Object} GetMyDefaultAdministratorRightsOptions
* @property {boolean} [for_channels] Specifies whether to get the rights for channels. Defaults to false, for groups.
*/
/**
* Options for editing the text of messages.
* @typedef {Object} EditMessageTextOptions
* @property {(number|string)} [chat_id] Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_id] Identifier of the message to edit.
* @property {string} [inline_message_id] Identifier of the inline message to edit.
* @property {string} text New text of the message.
* @property {Format} [parse_mode] Format of the text: Markdown or HTML.
* @property {MessageEntity[]} [entities] List of special entities that appear in the message text, which can be specified instead of parse_mode.
* @property {LinkPreviewOptions} [link_preview_options] Options for how links in the message should be previewed.
* @property {InlineKeyboardMarkup} [reply_markup] Additional interface options. A JSON-serialized object for an inline keyboard.
*/
/**
* Options for editing the caption of a message.
* @typedef {Object} EditMessageCaptionOptions
* @property {(number|string)} [chat_id] Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_id] Identifier of the message to edit.
* @property {string} [inline_message_id] Identifier of the inline message.
* @property {string} [caption] New caption of the message.
* @property {Format} [parse_mode] Format of the caption text: Markdown or HTML.
* @property {MessageEntity[]} [caption_entities] List of special entities that appear in the caption, which can be specified instead of parse_mode.
* @property {InlineKeyboardMarkup} [reply_markup] A JSON-serialized object for an inline keyboard.
*/
/**
* Options for editing the media content of messages.
* @typedef {Object} EditMessageMediaOptions
* @property {(number|string)} [chat_id] Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_id] Identifier of the message to edit.
* @property {string} [inline_message_id] Identifier of the inline message.
* @property {InputMedia} media New media content of the message.
* @property {InlineKeyboardMarkup} [reply_markup] A JSON-serialized object for an inline keyboard.
*/
/**
* Options for editing the live location of a message.
* @typedef {Object} EditMessageLiveLocationOptions
* @property {(number|string)} [chat_id] Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_id] Identifier of the message to edit.
* @property {string} [inline_message_id] Identifier of the inline message.
* @property {number} latitude Latitude of new location.
* @property {number} longitude Longitude of new location.
* @property {number} [horizontal_accuracy] The radius of uncertainty for the location, measured in meters; 0-1500.
* @property {number} [heading] Direction in which the user is moving, in degrees. Must be between 1 and 360 if specified.
* @property {number} [proximity_alert_radius] Maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified.
* @property {InlineKeyboardMarkup} [reply_markup] A JSON-serialized object for an inline keyboard.
*/
/**
* Options for stopping a live location message.
* @typedef {Object} StopMessageLiveLocationOptions
* @property {(number|string)} [chat_id] Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_id] Identifier of the message to stop showing the live location.
* @property {string} [inline_message_id] Identifier of the inline message to stop showing the live location.
* @property {InlineKeyboardMarkup} [reply_markup] A JSON-serialized object for an inline keyboard.
*/
/**
* Options for stopping a live location message.
* @typedef {Object} StopMessageLiveLocationOptions
* @property {(number|string)} [chat_id] Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_id] Identifier of the message with live location to stop.
* @property {string} [inline_message_id] Identifier of the inline message with live location to stop.
* @property {InlineKeyboardMarkup} [reply_markup] A JSON-serialized object for a new inline keyboard.
*/
/**
* Options for editing the reply markup of messages.
* @typedef {Object} EditMessageReplyMarkupOptions
* @property {(number|string)} [chat_id] Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_id] Identifier of the message to edit.
* @property {string} [inline_message_id] Identifier of the inline message to edit.
* @property {InlineKeyboardMarkup} [reply_markup] A JSON-serialized object for a new inline keyboard.
*/
/**
* Options for stopping a poll.
* @typedef {Object} StopPollOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} message_id Identifier of the original message with the poll.
* @property {InlineKeyboardMarkup} [reply_markup] A JSON-serialized object for a new inline keyboard.
*/
/**
* Options for deleting a message.
* @typedef {Object} DeleteMessageOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} message_id Identifier of the message to delete.
*/
/**
* Options for deleting multiple messages.
* @typedef {Object} DeleteMessagesOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number[]} message_ids Array of message identifiers to delete.
*/
/**
* Options for sending a sticker.
* @typedef {Object} SendStickerOptions
* @property {(number|string)} chat_id Unique identifier for the target chat or username (in the format `@channelusername`).
* @property {number} [message_thread_id] Unique identifier for the target message thread, only for messages in threads.
* @property {(InputFile|string)} sticker Sticker to send. Can be a file_id as String to send a sticker that exists on the Telegram servers, or a file from the filesystem.
* @property {string} [emoji] Emoji associated with the sticker.
* @property {boolean} [disable_notification] Sends the sticker silently. Users will receive a notification with no sound.
* @property {boolean} [protect_content] Protects the content of the sent sticker from forwarding and saving.
* @property {ReplyParameters} [reply_parameters] Additional parameters for replying to messages.
* @property {(InlineKeyboardMarkup|ReplyKeyboardMarkup|ReplyKeyboardRemove|ForceReply)} [reply_markup] Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard, or to force a reply from the user.
*/
/**
* Options for getting a sticker set.
* @typedef {Object} GetStickerSetOptions
* @property {string} name Name of the sticker set.
*/
/**
* Options for getting custom emoji stickers.
* @typedef {Object} GetCustomEmojiStickersOptions
* @property {string[]} custom_emoji_ids List of custom emoji identifiers to get stickers for.
*/
/**
* Options for uploading a sticker file.
* @typedef {Object} UploadStickerFileOptions
* @property {number} user_id User identifier of the sticker file owner.
* @property {InputFile} sticker Sticker file to upload.
* @property {string} sticker_format Format of the sticker file, e.g., `webp`.
*/
/**
* Options for creating a new sticker set.
* @typedef {Object} CreateNewStickerSetOptions
* @property {number} user_id User identifier of the sticker set owner.
* @property {string} name Unique name of the sticker set.
* @property {string} title Sticker set title, 1-64 characters.
* @property {InputSticker[]} stickers Array of stickers to be added to the set.
* @property {string} sticker_format Format of the stickers in the set, e.g., `webp`.
* @property {string} [sticker_type] Type of the stickers in the set.
* @property {boolean} [needs_repainting] True if the sticker set needs repainting.
*/
/**
* Options for adding a new sticker to a set.
* @typedef {Object} AddStickerToSetOptions
* @property {number} user_id Unique identifier of the target user.
* @property {string} name Name of the sticker set to which the sticker will be added.
* @property {InputSticker} sticker The sticker to be added to the set.
*/
/**
* Options for setting the position of a sticker in the set.
* @typedef {Object} SetStickerPositionInSetOptions
* @property {string} sticker File identifier of the sticker.
* @property {number} position New sticker position in the set, zero-based.
*/
/**
* Options for deleting a sticker from a set.
* @typedef {Object} DeleteStickerFromSetOptions
* @property {string} sticker File identifier of the sticker to be deleted.
*/
/**
* Options for setting the emoji list for a sticker.
* @typedef {Object} SetStickerEmojiListOptions
* @property {string} sticker File identifier of the sticker.
* @property {string[]} emoji_list A list of emojis associated with the sticker.
*/
/**
* Options for setting keywords for a sticker.
* @typedef {Object} SetStickerKeywordsOptions
* @property {string} sticker File identifier of the sticker.
* @property {string[]} [keywords] A list of keywords associated with the sticker.
*/
/**
* Options for setting the mask position of a sticker.
* @typedef {Object} SetStickerMaskPositionOptions
* @property {string} sticker File identifier of the sticker.
* @property {MaskPosition} [mask_position] The mask position to be set for the sticker.
*/
/**
* Options for setting the title of a sticker set.
* @typedef {Object} SetStickerSetTitleOptions
* @property {string} name The name of the sticker set.
* @property {string} title The new title of the sticker set.
*/
/**
* Options for setting the thumbnail of a sticker set.
* @typedef {Object} SetStickerSetThumbnailOptions
* @property {string} name The name of the sticker set.
* @property {number} user_id The user ID of the sticker set owner.
* @property {(InputFile|string)} [thumbnail] The new thumbnail of the sticker set. Can be a file ID or an actual file.
*/
/**
* Options for setting the thumbnail of a custom emoji sticker set.
* @typedef {Object} SetCustomEmojiStickerSetThumbnailOptions
* @property {string} name The name of the custom emoji sticker set.
* @property {string} [custom_emoji_id] The ID of the custom emoji to be used as the new thumbnail.
*/
/**
* Options for deleting a sticker set.
* @typedef {Object} DeleteStickerSetOptions
* @property {string} name The name of the sticker set to be deleted.
*/
/**
* Options for answering an inline query.
* @typedef {Object} AnswerInlineQueryOptions
* @property {string} inline_query_id Unique identifier for the answered query.
* @property {InlineQueryResult[]} results A JSON-serialized array of results for the inline query.
* @property {number} [cache_time] The maximum amount of time in seconds that the result of the inline query may be cached on the server.
* @property {boolean} [is_personal] Pass true if results may be cached on the server side only for the user that sent the query.
* @property {string} [next_offset] Pass the offset that a client should send in the next query with the same text to receive more results.
* @property {InlineQueryResultsButton} [button] An optional button that will be shown to the user in the results.
*/
/**
* Options for answering a Web App query.
* @typedef {Object} AnswerWebAppQueryOptions
* @property {string} web_app_query_id Unique identifier for the query to be answered.
* @property {InlineQueryResult} result The result for the query.
*/