summaryrefslogtreecommitdiff
path: root/protocols/Telegram/tdlib/td/CHANGELOG.md
blob: 3543b504f861780beffbb261d6f9578c9e2f24c9 (plain)
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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
Changes in 1.8.0 (29 Dec 2021):

* Changed the type of user, basic group and supergroup identifiers from `int32` to `int53`.
* Simplified chat list loading and removed the ability to misuse the method `getChats`:
  - Renamed the method `getChats` to `loadChats`.
  - Removed the parameters `offset_order` and `offset_chat_id` from the method `loadChats`. Chats are now always loaded
    from the last known chat in the list.
  - Changed the type of the result in the method `loadChats` to `ok`. If no chats were loaded, a 404 error is returned.
    The order of chats in the list must be maintained using the updates `updateChatPosition`, `updateChatLastMessage`,
    and `updateChatDraftMessage`.
  - Added the convenience method `getChats`, which returns the requested number of chats from the beginning of a chat
    list and can be used if the list of chats doesn't need to be maintained in a consistent state.
* Added the ability to hook TDLib log messages:
  - Added the function `td_set_log_message_callback` to JSON interface.
  - Added the function `set_log_message_callback` to the class `ClientManager`.
  - Added the function `SetLogMessageCallback` to the UWP native wrapper through C++/CX.
  - Deprecated the function `td_set_log_fatal_error_callback` in JSON interface in favor of
    the function `td_set_log_message_callback`.
  - Deprecated the function `Log::set_fatal_error_callback` in favor of
    the function `ClientManager::set_log_message_callback`.
* Added support for sending messages on behalf of public channels owned by the user:
  - Added the field `message_sender_id` to the class `chat`, containing the identifier of the currently selected
    message sender.
  - Added the update `updateChatMessageSender`.
  - Added the method `getChatAvailableMessageSenders`, returning the list of available message senders for the chat.
  - Added the method `setChatMessageSender`, changing the currently selected message sender.
  - Added the field `need_another_sender` to the class `messageSendingStateFailed`. If it is true, an alert needs
    to be shown to the user that the message will be re-sent on behalf of another sender.
  - Replaced the method `deleteChatMessagesFromUser` with the method `deleteChatMessagesBySender`, expecting
    a `MessageSender` instead of a user identifier.
  - Replaced the update `updateUserChatAction` with the update `updateChatAction`, containing a `MessageSender`
    instead of a user identifier as a source of the chat action.
* Added the ability to ban supergroups and channels in other supergroups and channels:
  - Replaced the fields `user_id` with the fields `member_id` in the classes `chatMember` and
    `chatEventMemberRestricted`.
  - Replaced the parameters `user_id` with the parameters `member_id` in the methods `setChatMemberStatus` and
    `getChatMember`.
* Improved support for animated emoji:
  - Added the class `animatedEmoji`, containing information about an animated emoji.
  - Added the class `messageAnimatedEmoji` to the types of message content.
  - Added the method `clickAnimatedEmojiMessage` to be called when an animated emoji is clicked.
  - Added the update `updateAnimatedEmojiMessageClicked`, received when a big animated sticker must be played.
  - Added the class `chatActionWatchingAnimations` to the types of chat action.
  - Added the method `getAnimatedEmoji`, returning an animated emoji corresponding to a given emoji.
  - Added the writable option "disable_animated_emoji".
  - Removed the option "animated_emoji_sticker_set_name".
* Added support for automatic message deletion in all chat types:
  - Added the field `message_ttl` to the class `chat`.
  - Added the update `updateChatMessageTtl`.
  - Added the method `setChatMessageTtl`.
  - Added the class `chatEventMessageTtlChanged`, representing change of the field `message_ttl` in the chat event log.
  - Removed the field `ttl` from the class `secretChat` in favor of the field `message_ttl` in the class `chat`.
  - Removed the method `sendChatSetTtlMessage` in favor of the method `setChatMessageTtl`.
* Improved names of the fields of the type `MessageSender`:
  - Renamed the fields `sender` to `sender_id` in the classes `message` and `notificationTypeNewPushMessage`.
  - Renamed the parameter `sender` to `sender_id` in the methods `searchChatMessages`, `addLocalMessage`, and
    `toggleMessageSenderIsBlocked`.
  - Renamed the field `recent_repliers` to `recent_replier_ids` in the class `messageReplyInfo`.
  - Renamed the field `traveler` to `traveler_id` in the class `messageProximityAlertTriggered`.
  - Renamed the field `watcher` to `watcher_id` in the class `messageProximityAlertTriggered`.
* The field `formatted_phone_number` in the class `phoneNumberInfo` now contains the character '-' at the places of
  expected digits.
* Added the synchronous method `getPhoneNumberInfoSync` that can be used instead of the method `getPhoneNumberInfo`
  to synchronously receive information about a phone number by its prefix.
* Replaced the field `user_id` in the class `chatEvent` with the field `member_id` of the type `MessageSender`.
* Improved support for bot payments:
  - Allowed sending invoices as results of inline queries by allowing bots to use the class `inputMessageInvoice` as
    the value of the field `input_message_content` in the classes `inputInlineQueryResultAnimation`,
    `inputInlineQueryResultArticle`, `inputInlineQueryResultAudio`, `inputInlineQueryResultContact`,
    `inputInlineQueryResultDocument`, `inputInlineQueryResultLocation`, `inputInlineQueryResultPhoto`,
    `inputInlineQueryResultSticker`, `inputInlineQueryResultVenue`, `inputInlineQueryResultVideo`, and
    `inputInlineQueryResultVoiceNote`.
  - Allowed sending invoice messages to basic group, supergroup and channel chats.
  - Allowed bots to send forwardable invoices by specifying an empty field `start_parameter` in
    the class `inputMessageInvoice`.
  - Added the field `invoice_chat_id` to the class `messagePaymentSuccessful`.
  - Added the field `id` to the class `paymentForm`, containing a unique payment form identifier.
  - Added the parameter `payment_form_id` to the method `sendPaymentForm`.
  - Added the field `seller_bot_user_id` to the class `paymentForm`, containing the user identifier of the seller bot.
  - Added the field `payments_provider_user_id` to the class `paymentForm`, containing the user identifier of
    the payment provider bot.
  - Added the fields `title`, `description`, `photo`, and `seller_bot_user_id` to the class `paymentReceipt`.
  - Added the fields `max_tip_amount` and `suggested_tip_amounts` to the class `invoice`.
  - Added the parameter `tip_amount` to the method `sendPaymentForm`.
  - Added the field `tip_amount` to the class `paymentReceipt`.
  - Renamed the class `inputCredentialsAndroidPay` to `inputCredentialsGooglePay`.
  - Added the class `paymentFormTheme`, containing the desired colors for a payment form.
  - Added the parameter `theme` to the method `getPaymentForm`.
  - Removed the field `invoice_message_id` from the class `messagePaymentSuccessfulBot`.
* Added the method `deleteChat`, which can be used to completely delete a chat along with all messages.
* Removed the method `deleteSupergroup` in favor of the method `deleteChat`.
* Changed the type of the result in the method `getProxyLink` to the class `httpUrl` instead of the class `text`.
* Removed support for secret chat layers before 73.
* Added support for sponsored messages:
  - Added the class `sponsoredMessage`.
  - Added the method `getChatSponsoredMessage`.
  - Added the ability to pass identifiers of sponsored messages to `viewMessages`. The method must be called when
    the entire text of the sponsored message is shown on the screen (excluding the button).
* Added support for video chats:
  - Added the class `groupCall`, representing a group call.
  - Added the method `getGroupCall` for fetching information about a group call.
  - Added the update `updateGroupCall`.
  - Added the class `videoChat`, representing a video chat, i.e. group call bound to a chat.
  - Added the field `video_chat` to the class `chat`.
  - Added the update `updateChatVideoChat`.
  - Added the classes `messageVideoChatScheduled`, `messageVideoChatStarted`, and `messageVideoChatEnded` to
    the types of message content.
  - Added the class `messageInviteVideoChatParticipants` to the types of message content.
  - Added the field `can_manage_video_chats` to the class `chatMemberStatusAdministrator`.
  - Added the class `groupCallId`.
  - Added the method `createVideoChat` for video chat creation.
  - Added the method `startScheduledGroupCall`.
  - Added the method `toggleGroupCallEnabledStartNotification`.
  - Added the method `joinGroupCall`.
  - Added the method `leaveGroupCall`.
  - Added the method `endGroupCall`.
  - Added the method `toggleGroupCallIsMyVideoEnabled`.
  - Added the method `toggleGroupCallIsMyVideoPaused`.
  - Added the methods `startGroupCallScreenSharing`, `toggleGroupCallScreenSharingIsPaused`,
    `endGroupCallScreenSharing` for managing screen sharing during group calls.
  - Added the method `setGroupCallTitle`.
  - Added the method `toggleGroupCallMuteNewParticipants`.
  - Added the classes `groupCallVideoSourceGroup` and `groupCallParticipantVideoInfo`, describing available
    video streams.
  - Added the class `groupCallParticipant`.
  - Added the update `updateGroupCallParticipant`.
  - Added the method `loadGroupCallParticipants`.
  - Added the method `toggleGroupCallParticipantIsHandRaised`.
  - Added the method `setGroupCallParticipantIsSpeaking`.
  - Added the methods `toggleGroupCallParticipantIsMuted` and `setGroupCallParticipantVolumeLevel` for managing
    the volume level of group call participants.
  - Added the method `inviteGroupCallParticipants`.
  - Added the method `getGroupCallInviteLink` and `revokeGroupCallInviteLink` for managing group call invite links.
  - Added the methods `startGroupCallRecording` and `endGroupCallRecording` for managing group call recordings.
  - Added the method `getVideoChatAvailableParticipants`, returning the list of participants, on whose behalf
    a video chat in the chat can be joined.
  - Added the method `setVideoChatDefaultParticipant` for changing the default participant on whose behalf a video chat
    will be joined.
  - Added the class `GroupCallVideoQuality` and the method `getGroupCallStreamSegment` for downloading segments of
    live streams.
  - Added the class `groupCallRecentSpeaker`, representing a group call participant that was recently speaking.
  - Added the field `video_chat_changes` to the class `chatEventLogFilters`.
  - Added the class `chatEventVideoChatCreated`, representing a video chat being created in the chat event log.
  - Added the class `chatEventVideoChatEnded`, representing a video chat being ended in the chat event log.
  - Added the class `chatEventVideoChatMuteNewParticipantsToggled`, representing changes of
    the setting `mute_new_participants` of a video chat in the chat event log.
  - Added the class `chatEventVideoChatParticipantIsMutedToggled`, representing a video chat participant being muted or
    unmuted in the chat event log.
  - Added the class `chatEventVideoChatParticipantVolumeLevelChanged`, representing a video chat participant's
    volume level being changed in the chat event log.
* Added "; pass null" documentation for all TDLib method parameters, for which null is an expected value.
* Added support for link processing:
  - Added the method `getInternalLinkType`, which can parse internal links and return the exact link type and actions
    to be done when the link is clicked.
  - Added the classes `internalLinkTypeActiveSessions`, `internalLinkTypeAuthenticationCode`,
    `internalLinkTypeBackground`, `internalLinkTypeBotStart`, `internalLinkTypeBotStartInGroup`,
    `internalLinkTypeChangePhoneNumber`, `internalLinkTypeChatInvite`, `internalLinkTypeFilterSettings`,
    `internalLinkTypeGame`, `internalLinkTypeLanguagePack`, `internalLinkTypeMessage`, `internalLinkTypeMessageDraft`,
    `internalLinkTypePassportDataRequest`, `internalLinkTypePhoneNumberConfirmation`, `internalLinkTypeProxy`,
    `internalLinkTypePublicChat`, `internalLinkTypeQrCodeAuthentication`, `internalLinkTypeSettings`,
    `internalLinkTypeStickerSet`, `internalLinkTypeTheme`, `internalLinkTypeThemeSettings`,
    `internalLinkTypeUnknownDeepLink`, `internalLinkTypeUnsupportedProxy`, and `internalLinkTypeVideoChat` to represent
    different types of internal links.
  - Added the method `getExternalLinkInfo`, which needs to be called if the clicked link wasn't recognized as
    an internal link.
  - Added the method `getExternalLink`, which needs to be called after the method `getExternalLinkInfo` if the user
    confirms automatic authorization on the website.
* Added support for expiring chat invite links:
  - Added the field `is_primary` to the class `chatInviteLink`. The primary invite link can't have a name,
    expiration date, or usage limit. There is exactly one primary invite link for each administrator with
    the can_invite_users right at any given time.
  - Added the field `name` to the class `chatInviteLink`.
  - Added the field `creator_user_id` to the class `chatInviteLink`.
  - Added the field `date` to the class `chatInviteLink`, containing the link creation date.
  - Added the field `edit_date` to the class `chatInviteLink`, containing the date the link was last edited.
  - Added the fields `expiration_date` and `member_limit` to the class `chatInviteLink`, limiting link usage.
  - Added the field `member_count` to the class `chatInviteLink`.
  - Added the field `is_revoked` to the class `chatInviteLink`.
  - Changed the type of the fields `invite_link` in the classes `basicGroupFullInfo` and `supergroupFullInfo` to
    `chatInviteLink`.
  - Added the field `description` to the class `chatInviteLinkInfo`, containing the description of the chat.
  - Replaced the method `generateChatInviteLink` with the method `replacePrimaryChatInviteLink`.
  - Added the method `createChatInviteLink` for creating new invite links.
  - Added the method `editChatInviteLink` for editing non-primary invite links.
  - Added the method `revokeChatInviteLink`.
  - Added the method `deleteRevokedChatInviteLink`.
  - Added the method `deleteAllRevokedChatInviteLink`.
  - Added the method `getChatInviteLink`.
  - Added the class `chatInviteLinks`, containing a list of chat invite links.
  - Added the method `getChatInviteLinks`.
  - Added the classes `chatInviteLinkCount` and `chatInviteLinkCounts`.
  - Added the method `getChatInviteLinkCounts`, returning the number of invite links created by chat administrators.
  - Added the classes `chatInviteLinkMember` and `chatInviteLinkMembers`.
  - Added the method `getChatInviteLinkMembers`.
  - Added the field `invite_link_changes` to the class `chatEventLogFilters`.
  - Added the class `chatEventMemberJoinedByInviteLink`, representing a user joining the chat via invite link in
    the chat event log.
  - Added the class `chatEventInviteLinkEdited` to the types of chat event.
  - Added the class `chatEventInviteLinkRevoked` to the types of chat event.
  - Added the class `chatEventInviteLinkDeleted` to the types of chat event.
  - Added the class `chatActionBarInviteMembers` to the types of chat action bar.
* Added support for chat invite links that create join requests:
  - Added the class `messageChatJoinByRequest` to the types of message content.
  - Added the class `pushMessageContentChatJoinByRequest` to the types of push message content.
  - Added the field `pending_join_requests` to the class `chat`.
  - Added the class `chatJoinRequestsInfo`, containing basic information about pending join requests for the chat.
  - Added the update `updateChatPendingJoinRequests`.
  - Added the fields `creates_join_request` to the classes `chatInviteLink` and `chatInviteLinkInfo`.
  - Added the field `pending_join_request_count` to the class `chatInviteLink`.
  - Added the class `chatJoinRequest`, describing a user that sent a join request.
  - Added the class `chatJoinRequests`, containing a list of requests to join the chat.
  - Added the method `getChatJoinRequests`.
  - Added the method `processChatJoinRequest` for processing a request to join the chat.
  - Added the method `processChatJoinRequests` for processing all requests to join the chat.
  - Added the class `chatActionBarJoinRequest` to the types of chat action bar.
  - Added the class `chatEventMemberJoinedByRequest`, representing a user approved to join the chat after
    a join request in the chat event log.
  - Added the update `updateNewChatJoinRequest` for bots.
* Added the ability to see viewers of outgoing messages in small group chats:
  - Added the method `getMessageViewers`.
  - Added the field `can_get_viewers` to the class `message`.
* Added the parameter `only_preview` to the method `forwardMessages`, which can be used to receive a preview of
  forwarded messages.
* Added the method `getRecentlyOpenedChats`, returning the list of recently opened chats.
* Increased number of recently found chats that are stored to 50.
* Added the ability to get information about chat messages, which are split by days:
  - Added the class `messageCalendarDay`, representing found messages, sent on a specific day.
  - Added the class `messageCalendar`, representing found messages, split by days.
  - Added the writable option "utc_time_offset", which contains a UTC time offset used for splitting messages by days.
    The option is reset automatically on each TDLib instance launch, so it needs to be set manually only if
    the time offset is changed during execution.
  - Added the method `getChatMessageCalendar`, returning information about chat messages, which are split by days.
* Added the ability to get messages of the specified type in sparse positions for hyper-speed scrolling implementation:
  - Added the class `messagePosition`, containing an identifier and send date of a message in
    a specific chat history position.
  - Added the class `messagePositions`, containing a list of message positions.
  - Added the method `getChatSparseMessagePositions`.
* Added the field `can_manage_chat` to the class `chatMemberStatusAdministrator` to allow promoting chat administrators
  without additional rights.
* Improved support for bot commands:
  - Bot command entities in chats without bots are now automatically hidden.
  - Added the class `botCommands`, representing a list of bot commands.
  - Added the field `commands` to the class `userFullInfo`, containing the list of commands to be used in
    the private chat with the bot.
  - Added the fields `bot_commands` to the classes `basicGroupFullInfo` and `supergroupFullInfo`.
  - Removed the class `botInfo`.
  - Removed the fields `bot_info` from the classes `userFullInfo` and `chatMember`.
  - Added the class `BotCommandScope`.
  - Added the methods `setCommands`, `deleteCommands`, `getCommands` for bots.
* Added the read-only options "suggested_video_note_length", "suggested_video_note_video_bitrate", and
  "suggested_video_note_audio_bitrate", containing suggested video note encoding parameters.
* Added the read-only option "channel_bot_user_id", containing the identifier of the bot which is shown in
  outdated clients as the sender of messages sent on behalf of channels.
* Added the ability to fetch the actual value of the option "is_location_visible" using the method `getOption` in case
  the value of the option was changed from another device.
* Added the field `minithumbnail` to the class `profilePhoto`, representing a profile photo minithumbnail.
* Added the field `minithumbnail` to the class `chatPhotoInfo`, representing a chat photo minithumbnail.
* Added support for sticker outlines:
  - Added the field `outline` to the class `sticker`.
  - Added the fields `thumbnail_outline` to the classes `stickerSet` and `stickerSetInfo`.
  - Added the class `closedVectorPath`, representing a closed vector path.
  - Added the class `VectorPathCommand`, representing one edge of a closed vector path.
  - Added the class `point`, representing a point on a Cartesian plane.
* Added support for chats and messages with protected content:
  - Added the field `has_protected_content` to the class `chat`.
  - Added the update `updateChatHasProtectedContent`.
  - Added the method `toggleChatHasProtectedContent`.
  - Added the class `chatEventHasProtectedContentToggled`, representing a change of the setting `has_protected_content`
    in the chat event log.
  - Added the field `can_be_saved` to the class `message`.
* Added support for broadcast groups, i.e. supergroups without a limit on the number of members in which
  only administrators can send messages:
  - Added the field `is_broadcast_group` to the class `supergroup`.
  - Added the method `toggleSupergroupIsBroadcastGroup`. Conversion of a supergroup to a broadcast group
    can't be undone.
  - Added the class `suggestedActionConvertToBroadcastGroup`, representing a suggestion to convert a supergroup to
    a broadcast group.
* Improved chat reports:
  - Added the parameter `text` to the method `reportChat`, allowing to add additional details to all
    chat reporting reasons.
  - Removed the field `text` from the class `chatReportReasonCustom`.
  - Added the method `reportChatPhoto` for reporting chat photos.
* Added support for users and chats reported as fake:
  - Added the field `is_fake` to the class `user`.
  - Added the field `is_fake` to the class `supergroup`.
  - Added the class `chatReportReasonFake` to the types of chat reporting reasons.
* Added the class `inlineKeyboardButtonTypeUser` to the types of inline keyboard buttons.
* Added the field `input_field_placeholder` to the classes `replyMarkupForceReply` and `replyMarkupShowKeyboard`.
* Added support for media timestamp entities in messages:
  - Added the class `textEntityTypeMediaTimestamp` to the types of text entities.
  - Added the field `has_timestamped_media` to the class `message`, describing whether media timestamp entities refer
    to the message itself or to the replied message.
  - Added the parameter `media_timestamp` to the method `getMessageLink` to support creating message links with
    a given media timestamp.
  - Added the field `can_get_media_timestamp_links` to the class `message`.
  - Added the field `media_timestamp` to the class `messageLinkInfo` for handling of message links with
    a specified media timestamp.
* Added the ability to change properties of active sessions:
  - Added the field `can_accept_secret_chats` to the class `session`.
  - Added the method `toggleSessionCanAcceptSecretChats`.
  - Added the field `can_accept_calls` to the class `session`.
  - Added the method `toggleSessionCanAcceptCalls`.
  - Added the field `inactive_session_ttl_days` to the class `sessions`.
  - Added the method `setInactiveSessionTtl`.
* Added new ways for phone number verification:
  - Added the class `authenticationCodeTypeMissedCall`, describing an authentication code delivered by
    a canceled phone call to the given number. The last digits of the phone number that calls are the code that
    must be entered manually by the user.
  - Added the field `allow_missed_call` to the class `phoneNumberAuthenticationSettings`.
  - Added the read-only option "authentication_token", which can be received when logging out and contains
    an authentication token to be used on subsequent authorizations.
  - Added the field `authentication_tokens` to the class `phoneNumberAuthenticationSettings`.
* Added support for resetting the password from an active session:
  - Added the class `ResetPasswordResult` and the method `resetPassword`.
  - Added the method `cancelPasswordReset`, which can be used to cancel a pending password reset.
  - Added the field `pending_reset_date` to the class `passwordState`.
* Added the ability to set a new 2-step verification password after recovering a lost password using
  a recovery email address:
  - Added the parameters `new_password` and `new_hint` to the methods `recoverAuthenticationPassword` and
    `recoverPassword`.
  - Added the method `checkAuthenticationPasswordRecoveryCode`.
  - Added the method `checkPasswordRecoveryCode`.
* Added the class `chatActionChoosingSticker` to the types of chat action.
* Added the class `backgroundFillFreeformGradient` to the types of background fill.
* Added the field `is_inverted` to the class `backgroundTypePattern` for inverted patterns for dark themes.
* Added support for chat themes:
  - Added the field `theme_name` to the class `chat`.
  - Added the method `setChatTheme`.
  - Added the update `updateChatTheme`, received when a theme was changed in a chat.
  - Added the class `messageChatSetTheme` to the types of message content.
  - Added the class `pushMessageContentChatSetTheme` to the types of push message content.
  - Added the class `themeSettings`, representing basic theme settings.
  - Added the class `chatTheme`, representing a chat theme.
  - Added the update `updateChatThemes`, received when the list of available chat themes changes.
* Added the ability for regular users to create sticker sets:
  - Allowed to use the methods `uploadStickerFile` and `createNewStickerSet` as regular users.
  - Replaced the parameter `png_sticker` in the method `uploadStickerFile` with the parameter `sticker` of
    the type `InputSticker`.
  - Added the parameter `source` to the method `createNewStickerSet`.
  - Added the method `getSuggestedStickerSetName`.
  - Added the class `CheckStickerSetNameResult` and the method `checkStickerSetName` for checking a sticker set name
    before creating a sticker set.
* Added support for importing chat history from an external source:
  - Added the method `importMessages`.
  - Added the method `getMessageImportConfirmationText`.
  - Added the class `MessageFileType` and the method `getMessageFileType`, which can be used to check whether
    the format of a file with exported message history is supported.
  - Added the class `messageForwardOriginMessageImport` to the types of forwarded message origins for
    imported messages.
  - Added the parameter `for_import` to the method `createNewSupergroupChat`, which needs to be set to true whenever
    the chat is created for a subsequent message history import.
* Added new types of suggested actions:
  - Added the class `suggestedActionSetPassword`, suggesting the user to set a 2-step verification password to be able
    to log in again before the specified number of days pass.
  - Added the class `suggestedActionCheckPassword`, suggesting the user to check whether they still remember
    their 2-step verification password.
  - Added the class `suggestedActionViewChecksHint`, suggesting the user to see a hint about the meaning of
    one and two check marks on sent messages.
* Added the method `getSuggestedFileName`, which returns a suggested name for saving a file in a given directory.
* Added the method `deleteAllCallMessages`.
* Added the method `deleteChatMessagesByDate`, which can be used to delete all messages between the specified dates in
  a chat.
* Added the field `unread_message_count` to the class `messageThreadInfo`.
* Added the field `has_private_forwards` to the class `userFullInfo`.
* Added the field `description` to the class `userFullInfo`, containing description of the bot.
* Added the field `emoji` to the class `inputMessageSticker`, allowing to specify the emoji that was used to choose
  the sent sticker.
* Added the method `banChatMember` that can be used to ban chat members instead of the method `setChatMemberStatus` and
  allows to revoke messages from the banned user in basic groups.
* Allowed to use the method `setChatMemberStatus` for adding chat members.
* Removed the parameter `user_id` from the method `reportSupergroupSpam`. Messages from different senders can now
  be reported simultaneously.
* Added the field `feedback_link` to the class `webPageInstantView`.
* Added the method `getApplicationDownloadLink`, returning the link for downloading official Telegram applications.
* Removed unusable search message filters `searchMessagesFilterCall` and `searchMessagesFilterMissedCall`.
* Removed the method `getChatStatisticsUrl`.
* Removed the method `getInviteText` in favor of the method `getApplicationDownloadLink`.
* Added the field `chat_type` to the update `updateNewInlineQuery` for bots.
* Added the update `updateChatMember` for bots.
* Improved the appearance of the [TDLib build instructions generator](https://tdlib.github.io/td/build.html).
* Added support for the illumos operating system.
* Added support for network access on real watchOS devices.
* Added support for OpenSSL 3.0.
* Improved the iOS/watchOS/tvOS build example to generate a universal XCFramework.
* Added support for ARM64 simulators in the iOS/watchOS/tvOS build example.
* Added the option `-release_only` to the build script for Universal Windows Platform, allowing to build
  TDLib SDK for Universal Windows Platform in release-only mode.
* Rewritten the native .NET binding using the new `ClientManager` interface:
  - Replaced the method `Client.send` with a static method that must be called exactly once in a dedicated thread.
    The callbacks `ClientResultHandler` will be called in this thread for all clients.
  - Removed the function `Client.Dispose()` from the C++/CLI native binding. The objects of the type `Client`
    don't need to be explicitly disposed anymore.
* Rewritten the C binding using the new `ClientManager` interface:
  - Renamed the fields `id` in the structs `TdRequest` and `TdResponse` to `request_id`.
  - Added the field `client_id` to the struct `TdResponse`.
  - Replaced the method `TdCClientCreate` with the method `TdCClientCreateId`.
  - Replaced the parameter `instance` with the parameter `client_id` in the function `TdCClientSend`.
  - Added the methods `TdCClientReceive` and `TdCClientExecute`.
  - Removed the methods `TdCClientSendCommandSync`, `TdCClientDestroy`, and `TdCClientSetVerbosity`.

-----------------------------------------------------------------------------------------------------------------------

Changes in 1.7.0 (28 Nov 2020):

* Added a new simplified JSON interface in which updates and responses to requests from all TDLib instances
  are received in the same thread:
  - The TDLib instance is identified by the unique `client_id` identifier, which is returned by the method
    `td_create_client_id`.
  - Use the method `td_send` to send a request to a specified client. The TDLib instance is created on the first
    request sent to it.
  - Use the method `td_receive` to receive updates and request responses from TDLib. The response will contain
    the identifier of the client from which the event was received in the field "@client_id".
  - Use the method `td_execute` to synchronously execute suitable TDLib methods.
* Added support for adding chats to more than one chat list:
  - Added the class `chatPosition`, describing the position of the chat within a chat list.
  - Replaced the fields `chat_list`, `order`, `is_sponsored` and `is_pinned` in the class `chat` with
    the field `positions`, containing a list of the chat positions in various chat list.
  - Replaced the field `order` with the field `positions` in the updates `updateChatLastMessage` and
    `updateChatDraftMessage`.
  - Added the update `updateChatPosition`.
  - Removed the superfluous updates `updateChatChatList`, `updateChatIsSponsored`, `updateChatOrder` and
    `updateChatIsPinned`.
  - Added the parameter `chat_list` to the method `toggleChatIsPinned`.
  - Added the class `chatLists`, containing a list of chat lists.
  - Added the method `getChatListsToAddChat`, returning all chat lists to which a chat can be added.
  - Added the method `addChatToList`, which can be used to add a chat to a chat list.
  - Remove the method `setChatChatList`.
* Added support for chat filters:
  - Added the new chat list type `chatListFilter`.
  - Added the classes `chatFilterInfo` and `chatFilter`, describing a filter of user chats.
  - Added the update `updateChatFilters`, which is sent when the list of chat filters is changed.
  - Added the methods `createChatFilter`, `editChatFilter` and `deleteChatFilter` for managing chat filters.
  - Added the method `reorderChatFilters` for changing the order of chat filters.
  - Added the method `getChatFilter`, returning full information about a chat filter.
  - Added the synchronous method `getChatFilterDefaultIconName`.
  - Added the classes `recommendedChatFilter` and `recommendedChatFilters`.
  - Added the method `getRecommendedChatFilters`, returning a list of recommended chat filters.
* Added support for messages sent on behalf of chats instead of users:
  - Added the class `MessageSender`, representing a user or a chat which sent a message.
  - Added the class `MessageSenders`, representing a list of message senders.
  - Replaced the field `sender_user_id` with the field `sender` of the type `MessageSender` in the classes `message`
    and `notificationTypeNewPushMessage`.
  - Added the class `messageForwardOriginChat`, which describe a chat as the original sender of a message.
  - Added the ability to search messages sent by a chat by replacing the parameter `sender_user_id` with
    the parameter `sender` of the type `MessageSender` in the method `searchChatMessages`.
  - Added the ability to specify a chat as a local message sender by replacing the parameter `sender_user_id` with
    the parameter `sender` of the type `MessageSender` in the method `addLocalMessage`.
* Added support for video calls:
  - Added the class `callServer`, describing a server for relaying call data.
  - Added the classes `callServerTypeTelegramReflector` and `callServerTypeWebrtc`, representing different types of
    supported call servers.
  - Replaced the field `connections` with the field `servers` in the class `callStateReady`.
  - Removed the class `callConnection`.
  - Added the update `updateNewCallSignalingData`.
  - Added the method `sendCallSignalingData`.
  - Added the field `supports_video_calls` to the class `userFullInfo`.
  - Added the field `is_video` to the class `messageCall`.
  - Added the field `is_video` to the class `call`.
  - Added the parameter `is_video` to the method `createCall`.
  - Added the parameter `is_video` to the method `discardCall`.
  - Added two new types of call problems `callProblemDistortedVideo` and `callProblemPixelatedVideo`.
  - Added the field `library_versions` to the class `callProtocol`, which must be used to specify all supported
    call library versions.
* Added support for multiple pinned messages and the ability to pin messages in private chats:
  - Added the ability to pin messages in all private chats.
  - Added the ability to pin mutiple messages in all chats.
  - Added the field `is_pinned` to the class `message`.
  - Added the update `updateMessageIsPinned`.
  - Added the parameter `only_for_self` to the method `pinChatMessage`, allowing to pin messages in private chats for
    one side only.
  - Added the ability to find pinned messages in a chat using the filter `searchMessagesFilterPinned`.
  - Added the parameter `message_id` to the method `unpinChatMessage`.
  - Added the field `message` to the class `chatEventMessageUnpinned`.
  - Added the method `unpinAllChatMessages`, which can be used to simultaneously unpin all pinned messages in a chat.
  - Documented that notifications about new pinned messages are always silent in channels and private chats.
  - The method `getChatPinnedMessage` now returns the newest pinned message in the chat.
  - Removed the field `pinned_message_id` from the class `chat`.
  - Removed the update `updateChatPinnedMessage`.
* Improved thumbnail representation and added support for animated MPEG4 thumbnails:
  - Added the class `ThumbnailFormat`, representing the various supported thumbnail formats.
  - Added the class `thumbnail`, containing information about a thumbnail.
  - Changed the type of all thumbnail fields from `photoSize` to `thumbnail`.
  - Added support for thumbnails in the format `thumbnailFormatMpeg4` for some animations and videos.
  - Replaced the classes `inputInlineQueryResultAnimatedGif` and `inputInlineQueryResultAnimatedMpeg4` with
    the generic class `inputInlineQueryResultAnimation`.
  - Added support for animated thumbnails in the class `inputInlineQueryResultAnimation`.
  - The class `photoSize` is now only used for JPEG images.
* Improved support for user profile photos and chat photos:
  - Added the field `photo` to the class `userFullInfo`, containing full information about the user photo.
  - Added the field `photo` to the class `basicGroupFullInfo`, containing full information about the group photo.
  - Added the field `photo` to the class `supergroupFullInfo`, containing full information about the group photo.
  - Renamed the class `chatPhoto` to `chatPhotoInfo`.
  - Added the field `has_animation` to the classes `profilePhoto` and `chatPhotoInfo`, which is set to true for
    animated chat photos.
  - Added the classes `chatPhoto` and `chatPhotos`.
  - Added minithumbnail support via the field `minithumbnail` in the class `chatPhoto`.
  - Added the class `animatedChatPhoto`.
  - Added animated chat photo support via the field `animation` in the class `chatPhoto`.
  - Removed the classes `userProfilePhoto` and `userProfilePhotos`.
  - Changed the type of the field `photo` in the class `messageChatChangePhoto` to `chatPhoto`.
  - Changed the type of the fields `old_photo` and `new_photo` in the class `chatEventPhotoChanged` to `chatPhoto`.
  - Changed the return type of the method `getUserProfilePhotos` to `chatPhotos`.
  - Added the class `InputChatPhoto`, representing a chat or a profile photo to set.
  - Changed the type of the parameter `photo` in the methods `setProfilePhoto` and `setChatPhoto` to
    the `InputChatPhoto`.
  - Added the ability to explicitly re-use previously set profile photos using the class `inputChatPhotoPrevious`.
  - Added the ability to set animated chat photos using the class `inputChatPhotoAnimated`.
* Added support for message threads in supergroups and channel comments:
  - Added the field `message_thread_id` to the class `message`.
  - Added the class `messageThreadInfo`, containing information about a message thread.
  - Added the class `messageReplyInfo`, containing information about replies to a message.
  - Added the field `reply_info` to the class `messageInteractionInfo`, containing information about message replies.
  - Added the field `can_get_message_thread` to the class `message`.
  - Added the method `getMessageThread`, returning information about the message thread to which a message belongs.
  - Added the method `getMessageThreadHistory`, returning messages belonging to a message thread.
  - Added the parameter `message_thread_id` to the methods `sendMessage`, `sendMessageAlbum` and
    `sendInlineQueryResultMessage` for sending messages within a thread.
  - Added the parameter `message_thread_id` to the method `searchChatMessages` to search messages within a thread.
  - Added the parameter `message_thread_id` to the method `viewMessages`.
  - Added the parameter `message_thread_id` to the method `setChatDraftMessage`.
  - Added the parameter `message_thread_id` to the method `sendChatAction` to send chat actions to a thread.
  - Added the field `message_thread_id` to the update `updateUserChatAction`.
* Improved support for message albums:
  - Added support for sending and receiving messages of the types `messageAudio` and `messageDocument` as albums.
  - Added automatic grouping into audio or document albums in the method `forwardMessages` if all forwarded or
    copied messages are of the same type.
  - Removed the parameter `as_album` from the method `forwardMessages`. Forwarded message albums are now determined
    automatically.
* Simplified usage of methods generating an HTTP link to a message:
  - Added the class `messageLink`, representing an HTTP link to a message.
  - Combined the methods `getPublicMessageLink` and `getMessageLink` into the method `getMessageLink`, which
    now returns a public link to the message if possible and a private link otherwise. The combined method is
    an offline method now.
  - Added the parameter `for_comment` to the method `getMessageLink`, which allows to get a message link to the message
    that opens it in a thread.
  - Removed the class `publicMessageLink`.
  - Added the field `for_comment` to the class `messageLinkInfo`.
  - Added the separate method `getMessageEmbeddingCode`, returning an HTML code for embedding a message.
* Added the ability to block private messages sent via the @replies bot from chats:
  - Added the field `is_blocked` to the class `chat`.
  - Added the update `updateChatIsBlocked`.
  - Added the method `blockMessageSenderFromReplies`.
  - Replaced the methods `blockUser` and `unblockUser` with the method `toggleMessageSenderIsBlocked`.
  - Replaced the method `getBlockedUsers` with the method `getBlockedMessageSenders`.
* Added support for incoming messages which are replies to messages in different chats:
  - Added the field `reply_in_chat_id` to the class `message`.
  - The method `getRepliedMessage` can now return the replied message in a different chat.
* Renamed the class `sendMessageOptions` to `messageSendOptions`.
* Added the new `tdapi` static library, which needs to be additionally linked in when static linking is used.
* Changed the type of the field `value` in the class `optionValueInteger` from `int32` to `int64`.
* Changed the type of the field `description` in the class `webPage` from `string` to `formattedText`.
* Improved Instant View support:
  - Added the field `view_count` to the class `webPageInstantView`.
  - Added the class `richTextAnchorLink`, containing a link to an anchor on the same page.
  - Added the class `richTextReference`, containing a reference to a text on the same page.
  - Removed the field `text` from the class `richTextAnchor`.
  - Removed the field `url` which is no longer needed from the class `webPageInstantView`.
* Allowed the update `updateServiceNotification` to be sent before authorization is completed.
* Disallowed to pass messages in non-strictly increasing order to the method `forwardMessages`.
* Improved sending copies of messages:
  - Added the class `messageCopyOptions` and the field `copy_options` to the class `inputMessageForwarded`.
  - Removed the fields `send_copy` and `remove_caption` from the class `inputMessageForwarded`.
  - Allowed to replace captions in copied messages using the fields `replace_caption` and `new_caption` in
    the class `messageCopyOptions`.
  - Allowed to specify `reply_to_message_id` when sending a copy of a message.
  - Allowed to specify `reply_markup` when sending a copy of a message.
* Allowed passing multiple input language codes to `searchEmojis` by replacing the parameter `input_language_code` with
  the parameter `input_language_codes`.
* Added support for public service announcements:
  - Added the class `ChatSource` and the field `source` to the class `chatPosition`.
  - Added the new type of chat source `chatSourcePublicServiceAnnouncement`.
  - Added the field `public_service_announcement_type` to the class `messageForwardInfo`.
* Added support for previewing of private supergroups and channels by their invite link.
  - The field `chat_id` in the class `chatInviteLinkInfo` is now non-zero for private supergroups and channels to which
    the temporary read access is granted.
  - Added the field `accessible_for` to the class `chatInviteLinkInfo`, containing the amount of time for which
    read access to the chat will remain available.
* Improved methods for message search:
  - Replaced the field `next_from_search_id` with a string field `next_offset` in the class `foundMessages`.
  - Added the field `total_count` to the class `foundMessages`; can be -1 if the total count of matching messages is
    unknown.
  - Replaced the parameter `from_search_id` with the parameter `offset` in the method `searchSecretMessages`.
  - Added the parameter `filter` to the method `searchMessages`.
  - Added the parameters `min_date` and `max_date` to the method `searchMessages` to search messages sent only within
    a particular timeframe.
* Added pkg-config file generation for all installed libraries.
* Added automatic operating system version detection. Use an empty field `system_version` in
  the class `tdlibParameters` for the automatic detection.
* Increased maximum file size from 1500 MB to 2000 MB.
* Added support for human-friendly Markdown formatting:
  - Added the synchronous method `parseMarkdown` for human-friendly parsing of text entities.
  - Added the synchronous method `getMarkdownText` for replacing text entities with a human-friendly
    Markdown formatting.
  - Added the writable option "always_parse_markdown" which enables automatic parsing of text entities in
    all `inputMessageText` objects.
* Added support for dice with random values in messages:
  - Added the class `messageDice` to the types of message content; contains a dice.
  - Added the class `DiceStickers`, containing animated stickers needed to show the dice.
  - Added the class `inputMessageDice` to the types of new input message content; can be used to send a dice.
  - Added the update `updateDiceEmojis`, containing information about supported dice emojis.
* Added support for chat statistics in channels and supergroups:
  - Added the field `can_get_statistics` to the class `supergroupFullInfo`.
  - Added the class `ChatStatistics`, which represents a supergroup or a channel statistics.
  - Added the method `getChatStatistics` returning detailed statistics about a chat.
  - Added the classes `chatStatisticsMessageInteractionInfo`, `chatStatisticsAdministratorActionsInfo`,
    `chatStatisticsMessageSenderInfo` and `chatStatisticsInviterInfo` representing various parts of chat statistics.
  - Added the class `statisticalValue` describing recent changes of a statistical value.
  - Added the class `StatisticalGraph` describing a statistical graph.
  - Added the method `getStatisticalGraph`, which can be used for loading asynchronous or zoomed in statistical graphs.
  - Added the class `dateRange` representing a date range for which statistics are available.
  - Removed the field `can_view_statistics` from the class `supergroupFullInfo` and marked
    the method `getChatStatisticsUrl` as disabled and not working.
* Added support for detailed statistics about interactions with messages:
  - Added the class `messageInteractionInfo`, containing information about message views, forwards and replies.
  - Added the field `interaction_info` to the class `message`.
  - Added the update `updateMessageInteractionInfo`.
  - Added the field `can_get_statistics` to the class `message`.
  - Added the class `messageStatistics`.
  - Added the method `getMessageStatistics`.
  - Added the method `getMessagePublicForwards`, returning all forwards of a message to public channels.
  - Removed the now superfluous field `views` from the class `message`.
  - Removed the now superfluous update `updateMessageViews`.
* Improved support for native polls:
  - Added the field `explanation` to the class `pollTypeQuiz`.
  - Added the fields `close_date` and `open_period` to the class `poll`.
  - Added the fields `close_date` and `open_period` to the class `inputMessagePoll`; for bots only.
  - Increased maximum poll question length to 300 characters for bots.
* Added support for anonymous administrators in supergroups:
  - Added the field `is_anonymous` to the classes `chatMemberStatusCreator` and `chatMemberStatusAdministrator`.
  - The field `author_signature` in the class `message` can now contain a custom title of the anonymous administrator
    that sent the message.
* Added support for a new type of inline keyboard buttons, requiring user password entry:
  - Added the class `inlineKeyboardButtonTypeCallbackWithPassword`, representing a button requiring password entry from
    a user.
  - Added the class `callbackQueryPayloadDataWithPassword`, representing new type of callback button payload,
    which must be used for the buttons of the type `inlineKeyboardButtonTypeCallbackWithPassword`.
* Added support for making the location of the user public:
  - Added the writable option "is_location_visible" to allow other users see location of the current user.
  - Added the method `setLocation`, which should be called if `getOption("is_location_visible")` is true and location
    changes by more than 1 kilometer.
* Improved Notification API:
  - Added the field `sender_name` to the class `notificationTypeNewPushMessage`.
  - Added the writable option "disable_sent_scheduled_message_notifications" for disabling notifications about
    outgoing scheduled messages that were sent.
  - Added the field `is_outgoing` to the class `notificationTypeNewPushMessage` for recognizing
    outgoing scheduled messages that were sent.
  - Added the fields `has_audios` and `has_documents` to the class `pushMessageContentMediaAlbum`.
* Added the field `date` to the class `draftMessage`.
* Added the update `updateStickerSet`, which is sent after a sticker set is changed.
* Added support for pagination in trending sticker sets:
  - Added the parameters `offset` and `limit` to the method `getTrendingStickerSets`.
  - Changed the field `sticker_sets` in the update `updateTrendingStickerSets` to contain only the prefix of
    trending sticker sets.
* Messages that failed to send can now be found using the filter `searchMessagesFilterFailedToSend`.
* Added the ability to disable automatic server-side file type detection using the new field
  `disable_content_type_detection` of the class `inputMessageDocument`.
* Improved chat action bar:
  - Added the field `can_unarchive` to the classes `chatActionBarReportSpam` and `chatActionBarReportAddBlock`,
    which is true whenever the chat was automatically archived.
  - Added the field `distance` to the class `chatActionBarReportAddBlock`,
    which denotes the distance between the users.
* Added support for actions suggested to the user by the server:
  - Added the class `SuggestedAction`, representing possible actions suggested by the server.
  - Added the update `updateSuggestedActions`.
  - Added the method `hideSuggestedAction`, which can be used to dismiss a suggested action.
* Supported attaching stickers to animations:
  - Added the field `has_stickers` to the class `animation`.
  - Added the field `added_sticker_file_ids` to the class `inputMessageAnimation`.
* Added methods for phone number formatting:
  - Added the class `countryInfo`, describing a country.
  - Added the class `countries`, containing a list of countries.
  - Added the method `getCountries`, returning a list of all existing countries.
  - Added the class `phonenumberinfo` and the method `getPhoneNumberInfo`, which can be used to format a phone number
    according to local rules.
* Improved location support:
  - Added the field `horizontal_accuracy` to the class `location`.
  - Added the field `heading` to the classes `messageLocation` and `inputMessageLocation` for live locations.
  - Added the parameter `heading` to the methods `editMessageLiveLocation` and `editInlineMessageLiveLocation`.
* Added support for proximity alerts in live locations:
  - Added the field `proximity_alert_radius` to the classes `messageLocation` and `inputMessageLocation`.
  - Added the parameter `proximity_alert_radius` to the methods `editMessageLiveLocation` and
    `editInlineMessageLiveLocation`.
  - Added the new message content `messageProximityAlertTriggered`, received whenever a proximity alert is triggered.
* Added `CentOS 7` and `CentOS 8` operating systems to the
  [TDLib build instructions generator](https://tdlib.github.io/td/build.html).
* Added the CMake configuration option TD_ENABLE_MULTI_PROCESSOR_COMPILATION, which can be used to enable parallel
  build with MSVC.
* Added support for sending and receiving messages in secret chats with silent notifications.
* Added the field `progressive_sizes` to the class `photo` to allow partial progressive JPEG photo download.
* Added the field `redirect_stderr` to the class `logStreamFile` to allow explicit control over stderr redirection to
  the log file.
* Added the read-only option "can_archive_and_mute_new_chats_from_unknown_users", which can be used to check, whether
  the option "archive_and_mute_new_chats_from_unknown_users" can be changed.
* Added the writable option "archive_and_mute_new_chats_from_unknown_users", which can be used to automatically archive
  and mute new chats from non-contacts. The option can be set only if the option
  "can_archive_and_mute_new_chats_from_unknown_users" is true.
* Added the writable option "message_unload_delay", which can be used to change the minimum delay before messages are
  unloaded from the memory.
* Added the writable option "disable_persistent_network_statistics", which can be used to disable persistent
  network usage statistics, significantly reducing disk usage.
* Added the writable option "disable_time_adjustment_protection", which can be used to disable protection from
  external time adjustment, significantly reducing disk usage.
* Added the writable option "ignore_default_disable_notification" to allow the application to manually specify the
  `disable_notification` option each time when sending messages instead of following the default per-chat settings.
* Added the read-only option "telegram_service_notifications_chat_id", containing the identifier of
  the Telegram service notifications chat.
* Added the read-only option "replies_bot_chat_id", containing the identifier of the @replies bot.
* Added the read-only option "group_anonymous_bot_user_id", containing the identifier of the bot which is shown as
  the sender of anonymous group messages when viewed from an outdated client.
* Added the new venue provider value "gplaces" for Google Places.
* Added the parameter `return_deleted_file_statistics` to the method `optimizeStorage` to return information about
  the files that were deleted instead of the ones that were not.
* Added the ability to search for supergroup members to mention by their name and username:
  - Added the new filter `supergroupMembersFilterMention` for the method `getSupergroupMembers`.
  - Added the new filter `chatMembersFilterMention` for the method `searchChatMembers`.
* Added support for highlighting bank card numbers:
  - Added the new text entity `textEntityTypeBankCardNumber`.
  - Added the classes `bankCardInfo` and `bankCardActionOpenUrl`, containing information about a bank card.
  - Added the method `getBankCardInfo`, returning information about a bank card.
* Improved methods for managing sticker sets by bots:
  - Added the method `setStickerSetThumbnail`.
  - Added the ability to create new animated sticker sets and add new stickers to them by adding
    the class `inputStickerAnimated`.
  - Renamed the class `inputSticker` to `inputStickerStatic`.
  - Renamed the field `png_sticker` to `sticker` in the class `inputStickerStatic`.
* Added the method `setCommands` for bots.
* Added the method `getCallbackQueryMessage` for bots.
* Added support for starting bots in private chats through `sendBotStartMessage`.
* Added the field `total_count` to the class `chats`. The field should have a precise value for the responses of
  the methods `getChats`, `searchChats` and `getGroupsInCommon`.
* Added the update `updateAnimationSearchParameters`, containing information about animation search parameters.
* Documented that `getRepliedMessage` can be used to get a pinned message, a game message, or an invoice message for
  messages of the types `messagePinMessage`, `messageGameScore`, and `messagePaymentSuccessful` respectively.
* Added guarantees that the field `member_count` in the class `supergroup` is known if the supergroup was received from
  the methods `searchChatsNearby`, `getInactiveSupergroupChats`, `getSuitableDiscussionChats`, `getGroupsInCommon`, or
  `getUserPrivacySettingRules`.
* Updated SQLCipher to 4.4.0.
* Updated dependencies in the prebuilt TDLib for Android:
  - Updated SDK to SDK 30.
  - Updated NDK to r21d, which dropped support for 32-bit ARM devices without Neon support.
* Updated recommended `emsdk` version for `tdweb` building to the 2.0.6.
* Removed the ability to change the update handler after client creation in native .NET binding, Java example and
  prebuilt library for Android.
* Removed the ability to change the default exception handler after client creation in Java example and
  prebuilt library for Android.
* Removed the ability to close Client using close() method in Java example and prebuilt library for Android.
  Use the method TdApi.close() instead.
* Changed license of source code in prebuilt library for Android to Boost Software License, Version 1.0.

-----------------------------------------------------------------------------------------------------------------------

Changes in 1.6.0 (31 Jan 2020):

* Added support for multiple chat lists. Currently, only two chat lists Main and Archive are supported:
  - Added the class `ChatList`, which represents a chat list and could be `chatListMain` or `chatListArchive`.
  - Added the field `chat_list` to the class `chat`, denoting the chat list to which the chat belongs.
  - Added the parameter `chat_list` to the methods `getChats`, `searchMessages` and `setPinnedChats`.
  - Added the field `chat_list` to the updates `updateUnreadMessageCount` and `updateUnreadChatCount`.
  - Added the field `total_count` to the update `updateUnreadChatCount`, containing the total number of chats in
    the list.
  - Added the update `updateChatChatList`, which is sent after a chat is moved to or from a chat list.
  - Added the method `setChatChatList`, which can be used to move a chat between chat lists.
  - Added the option `pinned_archived_chat_count_max` for the maximum number of pinned chats in the Archive chat list.
* Added support for scheduled messages:
  - Added the classes `messageSchedulingStateSendAtDate` and `messageSchedulingStateSendWhenOnline`,
    representing the scheduling state of a message.
  - Added the field `scheduling_state` to the class `message`, which allows to distinguish between scheduled and
    ordinary messages.
  - The update `updateNewMessage` can now contain a scheduled message and must be handled appropriately.
  - The updates `updateMessageContent`, `updateDeleteMessages`, `updateMessageViews`, `updateMessageSendSucceeded`,
    `updateMessageSendFailed`, and `updateMessageSendAcknowledged` can now contain identifiers of scheduled messages.
  - Added the class `sendMessageOptions`, which contains options for sending messages,
    including the scheduling state of the messages.
  - Replaced the parameters `disable_notification` and `from_background` in the methods `sendMessage`,
    `sendMessageAlbum`, `sendInlineQueryResultMessage`, and `forwardMessages` with the new field `options` of
    the type `sendMessageOptions`.
  - Added the method `editMessageSchedulingState`, which can be used to reschedule a message or send it immediately.
  - Added the method `getChatScheduledMessages`, which returns all scheduled messages in a chat.
  - Added the field `has_scheduled_messages` to the class `chat`.
  - Added the update `updateChatHasScheduledMessages`, which is sent whenever the field `has_scheduled_messages`
    changes in a chat.
  - Added support for reminders in Saved Messages and notifications about other sent scheduled messages in
    the [Notification API](https://core.telegram.org/tdlib/notification-api/).
* Added support for adding users without a known phone number to the list of contacts:
  - Added the method `addContact` for adding or renaming contacts without a known phone number.
  - Added the field `need_phone_number_privacy_exception` to the class `userFullInfo`, containing the default value for
    the second parameter of the method `addContact`.
  - Added the fields `is_contact` and `is_mutual_contact` to the class `user`.
  - Removed the class `LinkState` and the fields `outgoing_link` and `incoming_link` from the class `user`.
* Improved support for the top chat action bar:
  - Added the class `ChatActionBar`, representing all possible types of the action bar.
  - Added the field `action_bar` to the class `chat`.
  - Removed the legacy class `chatReportSpamState`.
  - Removed the legacy methods `getChatReportSpamState` and `changeChatReportSpamState`.
  - Added the update `updateChatActionBar`.
  - Added the method `removeChatActionBar`, which allows to dismiss the action bar.
  - Added the method `sharePhoneNumber`, allowing to share the phone number of the current user with a mutual contact.
  - Added the new reason `chatReportReasonUnrelatedLocation` for reporting location-based groups unrelated to
    their stated location.
* Improved support for text entities:
  - Added the new types of text entities `textEntityTypeUnderline` and `textEntityTypeStrikethrough`.
  - Added support for nested entities. Entities can be nested, but must not mutually intersect with each other.
    Pre, Code and PreCode entities can't contain other entities. Bold, Italic, Underline and Strikethrough entities can
    contain and be contained in all other entities. All other entities can't contain each other.
  - Added the field `version` to the method `textParseModeMarkdown`. Versions 0 and 1 correspond to Bot API Markdown
    parse mode, version 2 to Bot API MarkdownV2 parse mode with underline, strikethrough and nested entities support.
  - The new entity types and nested entities are supported in secret chats also if its layer is at least 101.
* Added support for native non-anonymous, multiple answer, and quiz-style polls:
  - Added support for quiz-style polls, which has exactly one correct answer option and can be answered only once.
  - Added support for regular polls, which allows multiple answers.
  - Added the classes `pollTypeRegular` and `pollTypeQuiz`, representing the possible types of a poll.
  - Added the field `type` to the classes `poll` and `inputMessagePoll`.
  - Added support for non-anonymous polls with visible votes by adding the field `is_anonymous` to the classes `poll`
    and `inputMessagePoll`.
  - Added the method `getPollVoters` returning users that voted for the specified option in a non-anonymous poll.
  - Added the new reply markup keyboard button `keyboardButtonTypeRequestPoll`.
  - Added the field `is_regular` to the class `pushMessageContentPoll`.
  - Added the update `updatePollAnswer` for bots only.
  - Added the field `is_closed` to the class `inputMessagePoll`, which can be used by bots to send a closed poll.
* Clarified in the documentation that file remote ID is guaranteed to be usable only if the corresponding file is
  still accessible to the user and is known to TDLib. For example, if the file is from a message, then the message
  must be not deleted and accessible to the user. If the file database is disabled, then the corresponding object with
  the file must be preloaded by the client.
* Added support for administrator custom titles:
  - Added the field `custom_title` to `chatMemberStatusCreator` and `chatMemberStatusAdministrator` classes.
  - Added the classes `chatAdministrator` and `chatAdministrators`, containing user identifiers along with
    their custom administrator title and owner status.
  - Replaced the result type of the method `getChatAdministrators` with `chatAdministrators`.
* Improved Instant View support:
  - Added the new web page block `pageBlockVoiceNote`.
  - Changed value of invisible cells in `pageBlockTableCell` to null.
  - Added the field `is_cached` to the class `richTextUrl`.
* Improved support for chat backgrounds:
  - Added the classes `backgroundFillSolid` for solid color backgrounds and `backgroundFillGradient` for
    gradient backgrounds.
  - Added support for TGV (gzipped subset of SVG with MIME type "application/x-tgwallpattern") background patterns
    in addition to PNG patterns. Background pattern thumbnails are still always in PNG format.
  - Replaced the field `color` in the class `backgroundTypePattern` with the field `fill` of type `BackgroundFill`.
  - Replaced the class `backgroundTypeSolid` with the class `backgroundTypeFill`.
* Added support for discussion groups for channel chats:
  - Added the field `linked_chat_id` to the class `supergroupFullInfo` containing the identifier of a discussion
    supergroup for the channel, or a channel, for which the supergroup is the designated discussion supergroup.
  - Added the field `has_linked_chat` to the class `supergroup`.
  - Added the method `getSuitableDiscussionChats`, which returns a list of chats which can be assigned as
    a discussion group for a channel by the current user.
  - Added the method `setChatDiscussionGroup`, which can be used to add or remove a discussion group from a channel.
  - Added the class `chatEventLinkedChatChanged` representing a change of the linked chat in the chat event log.
* Added support for slow mode in supergroups:
  - Added the field `is_slow_mode_enabled` to the class `supergroup`.
  - Added the field `slow_mode_delay` to the class `supergroupFullInfo`.
  - Added the method `setChatSlowModeDelay`, which can be used to change the slow mode delay setting in a supergroup.
  - Added the class `chatEventSlowModeDelayChanged` representing a change of the slow mode delay setting in
    the chat event log.
* Improved privacy settings support:
  - Added the classes `userPrivacySettingRuleAllowChatMembers` and `userPrivacySettingRuleRestrictChatMembers`
    to include or exclude all group members in a privacy setting rule.
  - Added the class `userPrivacySettingShowPhoneNumber` for managing the visibility of the user's phone number.
  - Added the class `userPrivacySettingAllowFindingByPhoneNumber` for managing whether the user can be found by
    their phone number.
* Added the method `checkCreatedPublicChatsLimit` for checking whether the maximum number of owned public chats
  has been reached.
* Added support for transferring ownership of supergroup and channel chats:
  - Added the method `transferChatOwnership`.
  - Added the class `CanTransferOwnershipResult` and the method `canTransferOwnership` for checking
    whether chat ownership can be transferred from the current session.
* Added support for location-based supergroups:
  - Added the class `chatLocation`, which contains the location to which the supergroup is connected.
  - Added the field `has_location` to the class `supergroup`.
  - Added the field `location` to the class `supergroupFullInfo`.
  - Added the ability to create location-based supergroups via the new field `location` in
    the method `createNewSupergroupChat`.
  - Added the method `setChatLocation`, which allows to change location of location-based supergroups.
  - Added the field `can_set_location` to the class `supergroupFullInfo`.
  - Added the class `PublicChatType`, which can be one of `publicChatTypeHasUsername` or
    `publicChatTypeIsLocationBased`.
  - Added the parameter `type` to the method `getCreatedPublicChats`, which allows to get location-based supergroups
    owned by the user.
  - Supported location-based supergroups as public chats where appropriate.
  - Added the class `chatEventLocationChanged` representing a change of the location of a chat in the chat event log.
* Added support for searching chats and users nearby:
  - Added the classes `chatNearby` and `chatsNearby`, containing information about chats along with
    the distance to them.
  - Added the method `searchChatsNearby`, which returns chats and users nearby.
  - Added the update `updateUsersNearby`, which is sent 60 seconds after a successful `searchChatsNearby` request.
* Improved support for inline keyboard buttons of the type `inlineKeyboardButtonTypeLoginUrl`:
  - Added the class `LoginUrlInfo` and the method `getLoginUrlInfo`, which allows to get information about
    an inline button of the type `inlineKeyboardButtonTypeLoginUrl`.
  - Added the method `getLoginUrl` for automatic authorization on the target website.
* Improved support for content restrictions:
  - The field `restriction_reason` in the classes `user` and `channel` now contains only a human-readable description
    why access must be restricted. It is non-empty if and only if access to the chat needs to be restricted.
  - Added the field `restriction_reason` to the class `message`. It is non-empty if and only if access to the message
    needs to be restricted.
  - Added the writable option `ignore_platform_restrictions`, which can be set in non-store apps to ignore restrictions
    specific to the currently used operating system.
  - Added the writable option `ignore_sensitive_content_restrictions`, which can be set to show sensitive content on
    all user devices. `getOption("ignore_sensitive_content_restrictions")` can be used to fetch the actual value of
    the option, the option will not be immediately updated after a change from another device.
  - Added the read-only option `can_ignore_sensitive_content_restrictions`, which can be used to check, whether
    the option `ignore_sensitive_content_restrictions` can be changed.
* Added support for QR code authentication for already registered users:
  - Added the authorization state `authorizationStateWaitOtherDeviceConfirmation`.
  - Added the method `requestQrCodeAuthentication`, which can be used in the `authorizationStateWaitPhoneNumber` state
    instead of the method `setAuthenticationPhoneNumber` to request QR code authentication.
  - Added the method `confirmQrCodeAuthentication` for authentication confirmation from another device.
* Added the update `updateMessageLiveLocationViewed`, which is supposed to trigger an edit of the corresponding
  live location.
* Added the parameter `input_language_code` to the method `searchEmojis`.
* Added the method `getInactiveSupergroupChats`, to be used when the user receives a CHANNELS_TOO_MUCH error after
  reaching the limit on the number of joined supergroup and channel chats.
* Added the field `unique_id` to the class `remoteFile`, which can be used to identify the same file for
  different users.
* Added the new category of top chat list `topChatCategoryForwardChats`.
* Added the read-only option `animated_emoji_sticker_set_name`, containing name of a sticker set with animated emojis.
* Added the read-only option `unix_time`, containing an estimation of the current Unix timestamp.
  The option will not be updated automatically unless the difference between the previous estimation and
  the locally available monotonic clocks changes significantly.
* Added the field `is_silent` to the class `notification`, so silent notifications can be shown with
  the appropriate mark.
* Added the field `video_upload_bitrate` to the class `autoDownloadSettings`.
* Disallowed to call `setChatNotificationSettings` method on the chat with self, which never worked.
* Added support for `ton://` URLs in messages and inline keyboard buttons.

-----------------------------------------------------------------------------------------------------------------------

Changes in 1.5.0 (9 Sep 2019):

* Changed authorization workflow:
  - Added the state `authorizationStateWaitRegistration`, which will be received after `authorizationStateWaitCode` for
    users who are not registered yet.
  - Added the method `registerUser`, which must be used in the `authorizationStateWaitRegistration` state to finish
    registration of the user.
  - Removed the fields `is_registered` and `terms_of_service` from the class `authorizationStateWaitCode`.
  - Removed the parameters `first_name` and `last_name` from the method `checkAuthenticationCode`.
* Added support for messages with an unknown sender (zero `sender_user_id`) in private chats, basic groups and
  supergroups. Currently, the sender is unknown for posts in channels and for channel posts automatically forwarded to
  the discussion group.
* Added support for the new permission system for non-administrator users in groups:
  - Added the class `chatPermissions` containing all supported permissions, including new permissions `can_send_polls`,
    `can_change_info`, `can_invite_users` and `can_pin_messages`.
  - Added the field `permissions` to the class `chat`, describing actions that non-administrator chat members are
    allowed to take in the chat.
  - Added the update `updateChatPermissions`.
  - Added the method `setChatPermissions` for changing chat permissions.
  - Added the class `chatEventPermissionsChanged` representing a change of chat permissions in the chat event log.
  - Replaced the fields `can_send_messages`, `can_send_media_messages`, `can_send_other_messages`,
    `can_add_web_page_previews` in the class `chatMemberStatusRestricted` with the field `permissions` of
    the type `chatPermissions`.
  - Removed the field `everyone_is_administrator` from the `basicGroup` class in favor of the field `permissions` of
    the class `chat`.
  - Removed the field `anyone_can_invite` from the `supergroup` class in favor of the field `permissions` of
    the class `chat`.
  - Removed the method `toggleBasicGroupAdministrators` in favor of `setChatPermissions`.
  - Removed the method `toggleSupergroupInvites` in favor of `setChatPermissions`.
  - Renamed the field `anyone_can_invite` to `can_invite_users` in the class `chatEventInvitesToggled`.
  - The permissions `can_send_other_messages` and `can_add_web_page_previews` now imply only `can_send_messages`
    instead of `can_send_media_messages`.
  - Allowed administrators in basic groups to use the method `generateChatInviteLink`.
* Added out of the box `OpenBSD` and `NetBSD` operating systems support.
* Added possibility to use `LibreSSL` >= 2.7.0 instead of `OpenSSL` to build TDLib.
* Added instructions for building TDLib on `Debian 10`, `OpenBSD` and `NetBSD` to
  the [TDLib build instructions generator](https://tdlib.github.io/td/build.html).
* Added support for Backgrounds 2.0:
  - Added the classes `BackgroundType`, `background`, `backgrounds` and `InputBackground`.
  - Added the method `getBackground` returning the list of backgrounds installed by the user.
  - Added the method `setBackground` for changing the background selected by the user.
  - Added the update `updateSelectedBackground`, which is sent right after a successful initialization and whenever
    the selected background changes.
  - Added the method `removeBackground` for removing a background from the list of installed backgrounds.
  - Added the method `resetBackgrounds` for restoring the default list of installed backgrounds.
  - Added the method `searchBackground` returning a background by its name.
  - Added the method `getBackgroundUrl` returning a persistent URL for a background.
  - Removed the `getWallpapers` method.
  - Removed the `wallpaper` and the `wallpapers` classes.
  - The class `fileTypeWallpaper` can be used for remote file identifiers of both old wallpapers and new backgrounds.
* Added support for descriptions in basic groups:
  - Added the field `description` to the class `basicGroupFullInfo`.
  - Replaced the method `setSupergroupDescription` with `setChatDescription` which can be used for any chat type.
* Added support for emoji suggestions:
  - Added the method `searchEmojis` for searching emojis by keywords.
  - Added the method `getEmojiSuggestionsUrl`, which can be used to automatically log in to the translation platform
    and suggest new emoji replacements.
  - Renamed the class `stickerEmojis` to `emojis`.
* Changed type of the fields `old_photo` and `new_photo` in the class `chatEventPhotoChanged` from `chatPhoto` to
  `photo`.
* Changed recommended size for `inputThumbnail` from 90x90 to 320x320.
* Combined all supported settings for phone number authentication:
  - Added the class `phoneNumberAuthenticationSettings` which contains all the settings.
  - Replaced the parameters `is_current_phone_number` and `allow_flash_call` in the methods
    `setAuthenticationPhoneNumber`, `sendPhoneNumberConfirmationCode`, `sendPhoneNumberVerificationCode` and
    `changePhoneNumber` with the parameter `settings` of the type `phoneNumberAuthenticationSettings`.
  - Added support for automatic SMS code verification for official applications via the new field `allow_app_hash` in
    the class `phoneNumberAuthenticationSettings`.
* Added support for auto-download settings presets.
  - Added the classes `autoDownloadSettings` and `autoDownloadSettingsPresets`.
  - Added the method `getAutoDownloadSettingsPresets` for getting the settings.
  - Added the method `setAutoDownloadSettings`, which needs to be called whenever the user changes the settings.
* Added support for minithumbnails - thumbnail images of a very poor quality and low resolution:
  - Added the class `minithumbnail`.
  - Added the field `minithumbnail` to `animation`, `document`, `photo`, `video` and `videoNote` classes.
  - Added the field `audio_cover_minithumbnail` to the class `audio`.
* Added support for resending messages which failed to send:
  - Added the fields `error_code`, `error_message`, `can_retry` and `retry_after` to
    the class `messageSendingStateFailed`.
  - Added the method `resendMessages`.
* Added the field `is_animated` to the `sticker`, `stickerSet` and `stickerSetInfo` classes.
  Animated stickers can be received anywhere where non-animated stickers can appear.
* Added the parameters `send_copy` and `remove_caption` to the `forwardMessages` method to allow forwarding of
  messages without links to the originals.
* Added the fields `send_copy` and `remove_caption` to `inputMessageForwarded` method to allow forwarding of
  a message without link to the original message.
* Added the method `getMessageLinkInfo` for getting information about a link to a message in a chat.
* Added the class `userPrivacySettingShowProfilePhoto` for managing visibility of the user's profile photo.
* Added the class `userPrivacySettingShowLinkInForwardedMessages` for managing whether a link to the user's account is
  included with forwarded messages.
* Added the field `thumbnail` to the classes `stickerSet` and `stickerSetInfo`, containing a thumbnail for
  the sticker set.
* Added the field `is_scam` to the classes `user` and `supergroup`.
* Added a new kind of inline keyboard button `inlineKeyboardButtonTypeLoginUrl`, which for the moment must be processed
  in the same way as an `inlineKeyboardButtonTypeUrl`.
* Added the new class `supergroupMembersFilterContacts`, allowing to only search for contacts
  in `getSupergroupMembers`.
* Added the new class `chatMembersFilterContacts`, allowing to only search for contacts in `searchChatMembers`.
* Added the class `chatEventPollStopped` representing the closing of a poll in a message in the chat event log.
* Added ability to specify the exact types of problems with a call in the method `sendCallRating` and
  the new class `CallProblem`.
* Changes in [tdweb](https://github.com/tdlib/td/blob/master/example/web/):
  - Supported non-zero `offset` and `limit` in `readFilePart`.

-----------------------------------------------------------------------------------------------------------------------

Changes in 1.4.0 (1 May 2019):

* Added a [TDLib build instructions generator](https://tdlib.github.io/td/build.html), covering in details
  TDLib building on the most popular operating systems.
* Added an example of TDLib building and usage from a browser.
  See https://github.com/tdlib/td/blob/master/example/web/ for more details.
* Allowed to pass NULL pointer to `td_json_client_execute` instead of a previously created JSON client.
  Now you can use synchronous TDLib methods through a JSON interface before creating a TDLib JSON client.
* Added support for media streaming by allowing to download any part of a file:
  - Added the `offset` parameter to `downloadFile` which specifies the starting position
    from which the file should be downloaded.
  - Added the `limit` parameter to `downloadFile` which specifies how many bytes should be downloaded starting from
    the `offset` position.
  - Added the field `download_offset` to the class `localFile` which contains the current download offset.
  - The field `downloaded_prefix_size` of the `localFile` class now contains the number of available bytes
    from the position `download_offset` instead of from the beginning of the file.
  - Added the method `getFileDownloadedPrefixSize` which can be used to get the number of locally available file bytes
    from a given offset without actually changing the download offset.
* Added the parameter `synchronous` to `downloadFile` which causes the request to return the result only after
  the download is completed.
* Added support for native polls in messages:
  - Added `messagePoll` to the types of message content; contains a poll.
  - Added the classes `poll` and `pollOption` describing a poll and a poll answer option respectively.
  - Added `inputMessagePoll` to the types of new input message content; can be used to send a poll.
  - Added the method `setPollAnswer` which can be used for voting in polls.
  - Added the method `stopPoll` which can be used to stop polls. Use the `Message.can_be_edited` field to check whether
    this method can be called on a message.
  - Added the update `updatePoll` for bots only. Ordinary users receive poll updates through `updateMessageContent`.
* Added a Notification API. See article https://core.telegram.org/tdlib/notification-api for a detailed description.
  - Added the class `pushReceiverId` which contains a globally unique identifier of the push notification subscription.
  - Changed the return type of the method `registerDevice` to `pushReceiverId` to allow matching of push notifications
    with TDLib instances.
  - Removed the fields `disable_notification` and `contains_mention` from `updateNewMessage`.
  - Renamed the class `deviceTokenGoogleCloudMessaging` to `deviceTokenFirebaseCloudMessaging`.
  - Added the field `encrypt` to classes `deviceTokenApplePushVoIP` and `deviceTokenFirebaseCloudMessaging`
    which allows to subscribe for end-to-end encrypted push notifications.
  - Added the option `notification_group_count_max` which can be used to enable the Notification API and set
    the maximum number of notification groups to be shown simultaneously.
  - Added the option `notification_group_size_max` which can be used to set the maximum number of simultaneously shown
    notifications in a group.
  - Added the synchronous method `getPushReceiverId` for matching a push notification with a TDLib instance.
  - Added the method `processPushNotification` for handling of push notifications.
  - Removed the method `processDcUpdate` in favor of the general `processPushNotification` method.
  - Added the update `updateNotificationGroup`, sent whenever a notification group changes.
  - Added the update `updateNotification`, sent whenever a notification changes.
  - Added the update `updateActiveNotifications` for syncing the list of active notifications on startup.
  - Added the update `updateHavePendingNotifications` which can be used to improve lifetime handling of
    the TDLib instance.
  - Added the possibility to disable special handling of notifications about pinned messages via the new settings
    `use_default_disable_pinned_message_notifications`, `disable_pinned_message_notifications` in
    the class `chatNotificationSettings` and the new setting `disable_pinned_message_notifications` in
    the class `scopeNotificationSettings`.
  - Added the possibility to disable special handling of notifications about mentions and replies via the new settings
    `use_default_disable_mention_notifications`, `disable_mention_notifications` in
    the class `chatNotificationSettings` and the new setting `disable_mention_notifications` in
    the class `scopeNotificationSettings`.
  - Added the class `PushMessageContent` describing the content of a notification, received through
    a push notification.
  - Added the class `NotificationType` describing a type of a notification.
  - Added the class `notification` containing information about a notification.
  - Added the class `NotificationGroupType` describing a type of a notification group.
  - Added the class `notificationGroup` describing a state of a notification group.
  - Added the methods `removeNotification` and `removeNotificationGroup` for handling notifications removal
    by the user.
  - Added the separate notification scope `notificationSettingsScopeChannelChats` for channel chats.
* Added support for pinned notifications in basic groups and Saved Messages:
  - Added the field `pinned_message_id` to the class `chat`.
  - Removed the field `pinned_message_id` from the class `supergroupFullInfo` in favor of `chat.pinned_message_id`.
  - Added the update `updateChatPinnedMessage`.
  - The right `can_pin_messages` is now applicable to both basic groups and supergroups.
  - Replaced the method `pinSupergroupMessage` with `pinChatMessage` which can be used for any chat type.
  - Replaced the method `unpinSupergroupMessage` with `unpinChatMessage` which can be used for any chat type.
* Added new synchronous methods for managing TDLib internal logging. The old functions are deprecated and
  will be removed in TDLib 2.0.0.
  - Added the synchronous method `setLogStream` for changing the stream to which the TDLib internal log is written.
  - Added the synchronous method `getLogStream` for getting information about the currently used log stream.
  - Added the classes `logStreamDefault`, `logStreamFile` and `logStreamEmpty` describing different supported kinds of
    log streams.
  - Added the class `logVerbosityLevel` containing the verbosity level of the TDLib internal log.
  - Added the class `logTags` containing a list of available TDLib internal log tags.
  - Added the synchronous method `setLogVerbosityLevel` for changing verbosity level of logging.
  - Added the synchronous method `getLogVerbosityLevel` for getting the current verbosity level of logging.
  - Added the synchronous method `getLogTags` returning all currently supported log tags.
  - Added the synchronous method `setLogTagVerbosityLevel` for changing the verbosity level of logging for
    some specific part of the code.
  - Added the synchronous method `getLogTagVerbosityLevel` for getting the current verbosity level for a specific part
    of the code.
  - Added the synchronous method `addLogMessage` for using the TDLib internal log by the application.
* Added support for Instant View 2.0:
  - Replaced the field `has_instant_view` in class `webPage` with the `instant_view_version` field.
  - Added the field `version` to the class `webPageInstantView`.
  - Added the class `pageBlockCaption`.
  - Changed the type of `caption` fields in `pageBlockAnimation`, `pageBlockAudio`, `pageBlockPhoto`, `pageBlockVideo`,
    `pageBlockEmbedded`, `pageBlockEmbeddedPost`, `pageBlockCollage` and `pageBlockSlideshow` from
    `RichText` to `pageBlockCaption`.
  - Added the class `pageBlockListItem` and replaced the content of the `pageBlockList` class with a list of
    `pageBlockListItem`.
  - Added 6 new kinds of `RichText`: `richTextSubscript`, `richTextSuperscript`, `richTextMarked`,
    `richTextPhoneNumber`, `richTextIcon` and `richTextAnchor`.
  - Added new classes `pageBlockRelatedArticle`, `PageBlockHorizontalAlignment`, `PageBlockVerticalAlignment` and
    `pageBlockTableCell`.
  - Added new block types `pageBlockKicker`, `pageBlockRelatedArticles`, `pageBlockTable`, `pageBlockDetails` and
    `pageBlockMap`.
  - Added the flag `is_rtl` to the class `webPageInstantView`.
  - Renamed the field `caption` in classes `pageBlockBlockQuote` and `pageBlockPullQuote` to `credit`.
  - Dimensions in `pageBlockEmbedded` can now be unknown.
  - Added the field `url` to `pageBlockPhoto` which contains a URL that needs to be opened when the photo is clicked.
  - Added the field `url` to `webPageInstantView` which must be used for the correct handling of anchors.
* Added methods for confirmation of the 2-step verification recovery email address:
  - Added the method `checkRecoveryEmailAddressCode` for checking the verification code.
  - Added the method `resendRecoveryEmailAddressCode` for resending the verification code.
  - Replaced the field `unconfirmed_recovery_email_address_pattern` in the class `passwordState` with
    the `recovery_email_address_code_info` field containing full information about the code.
  - The necessity of recovery email address confirmation in `setPassword` and `setRecoveryEmailAddress` methods
    is now returned by the corresponding `passwordState` and not by the error `EMAIL_UNCONFIRMED`.
* Improved the `MessageForwardInfo` class and added support for hidden original senders:
  - Removed the old `messageForwardedPost` and `messageForwardedFromUser` classes.
  - Added the class `messageForwardInfo` which contains information about the origin of the message, original sending
    date and identifies the place from which the message was forwarded the last time for messages forwarded to
    Saved Messages.
  - Added the classes `messageForwardOriginUser`, `messageForwardOriginHiddenUser` and `messageForwardOriginChannel`
    which describe the exact origins of a message.
* Improved getting the list of user profile photos:
  - Added the class `userProfilePhoto`, containing `id`, `added_date` and `sizes` of a profile photo.
  - Changed the type of the field `photos` in `userProfilePhotos` to a list of `userProfilePhoto` instead of
    a list of `photo`. `getUserProfilePhotos` now returns a date for each profile photo.
  - Removed the field `id` from the class `photo` (this field was only needed in the result of `getUserProfilePhotos`).
* Added the possibility to get a Telegram Passport authorization form before asking the user for a password:
  - Removed the parameter `password` from the method `getPassportAuthorizationForm`.
  - Moved the fields `elements` and `errors` from the class `passportAuthorizationForm` to
    the new class `passportElementsWithErrors`.
  - Added the method `getPassportAuthorizationFormAvailableElements` that takes the user's password and
    returns previously uploaded Telegram Passport elements and errors in them.
* Added the field `file_index` to the classes `passportElementErrorSourceFile` and
  `passportElementErrorSourceTranslationFile`.
* Added the method `getCurrentState` returning all updates describing the current `TDLib` state. It can be used to
  restore the correct state after connecting to a running TDLib instance.
* Added the class `updates` which contains a list of updates and is returned by the `getCurrentState` method.
* Added the update `updateChatOnlineMemberCount` which is automatically sent for open group chats if the number of
  online members in a group changes.
* Added support for custom language packs downloaded from the server:
  - Added the fields `base_language_pack_id`` to the class `languagePackInfo`. Strings from the base language pack
    must be used for untranslated keys from the chosen language pack.
  - Added the fields `plural_code`, `is_official`, `is_rtl`, `is_beta`, `is_installed`, `total_string_count`,
    `translated_string_count`, `translation_url` to the class `languagePackInfo`.
  - Added the method `addCustomServerLanguagePack` which adds a custom server language pack to the list of
    installed language packs.
  - Added the method `getLanguagePackInfo` which can be used for handling `https://t.me/setlanguage/...` links.
  - Added the method `synchronizeLanguagePack` which can be used to fetch the latest versions of all strings from
    a language pack.
    The method doesn't need to be called explicitly for the current used/base language packs.
  - The method `deleteLanguagePack` now also removes the language pack from the list of installed language packs.
* Added the method `getChatNotificationSettingsExceptions` which can be used to get chats with
  non-default notification settings.
* Added the parameter `hide_via_bot` to `sendInlineQueryResultMessage` which can be used for
  `getOption("animation_search_bot_username")`, `getOption("photo_search_bot_username")` and
  `getOption("venue_search_bot_username")` bots to hide that the message was sent via the bot.
* Added the class `chatReportReasonChildAbuse` which can be used to report a chat for child abuse.
* Added the method `getMessageLocally` which returns a message only if it is available locally without
  a network request.
* Added the method `writeGeneratedFilePart` which can be used to write a generated file if there is no direct access to
  TDLib's file system.
* Added the method `readFilePart` which can be used to read a file from the TDLib file cache.
* Added the class `filePart` to represent the result of the new `readFilePart` method.
* Added the field `log_size` to the `storageStatisticsFast` class which contains the size of the TDLib internal log.
  Previously the size was included into the value of the `database_size` field.
* Added the field `language_pack_database_size` to the `storageStatisticsFast` class which contains the size of the
  language pack database.
* Added the field `is_support` to the class `user` which can be used to identify Telegram Support accounts.
* Added the class `HttpUrl` encapsulating an HTTP URL.
* Added the method `getMessageLink` which can be used to create a private link (which works only for members) to
  a message in a supergroup or channel.
* Added support for channel statistics (coming soon):
  - Added the field `can_view_statistics` to the `supergroupFullInfo` class.
  - Added the method `getChatStatisticsUrl` which returns a URL with the chat statistics.
* Added support for server-side peer-to-peer calls privacy:
  - Added the class `userPrivacySettingAllowPeerToPeerCalls` for managing privacy.
  - Added the field `allow_p2p` to `callStateReady` class which must be used to determine whether
    a peer-to-peer connection can be used.
* Added the option `ignore_background_updates` which allows to skip all updates received while the TDLib instance was
  not running. The option does nothing if the database or secret chats are used.
* Added the read-only option `expect_blocking`, suggesting whether Telegram is blocked for the user.
* Added the read-only option `enabled_proxy_id`, containing the ID of the enabled proxy.
* Added the ability to identify password pending sessions (where the code was entered but not
  the two-step verification password) via the flag `is_password_pending` in the `session` class.
  TDLib guarantees that the sessions will be returned by the `getActiveSessions` method in the correct order.
* Added the classes `JsonValue` and `jsonObjectMember` which represent a JSON value and
  a member of a JSON object respectively as TDLib API objects.
* Added the synchronous methods `getJsonValue` and `getJsonString` for simple conversion between
  a JSON-encoded string and `JsonValue` TDLib API class.
* Added the methods `getApplicationConfig` and `saveApplicationLogEvent` to be used for testing purposes.
* Added the temporarily class `databaseStatistics` and the method `getDatabaseStatistics` for rough estimations of
  database tables size in a human-readable format.
* Made the method `Client.Execute` static in .NET interface.
* Removed the `on_closed` callback virtual method from low-level C++ ClientActor interface.
  Callback destructor can be used instead.
* Updated dependencies in the prebuilt TDLib for Android:
  - Updated SDK to SDK 28 in which helper classes was moved from `android.support.` to `androidx.` package.
  - Updated NDK to r19c, which dropped support for Android versions up to 4.0.4, so the minimum supported version is
    Android 4.1.
  - Updated OpenSSL to version 1.1.1.
  - Added x86_64 libraries.
* Added out of the box `FreeBSD` support.
* Significantly improved TDLib compilation time and decreased compiler RAM usage:
  - In native C++ interface `td_api::object_ptr` is now a simple homebrew const-propagating class instead of
    `std::unique_ptr`.
  - Added the script `SplitSource.php`, which can be used to split some source code files before building
    the library to reduce maximum RAM usage per file at the expense of increased build time.
* The update `updateOption` with the `version` option is now guaranteed to come before all other updates.
  It can now be used to dynamically discover available methods.
* Added the ability to delete incoming messages in private chats and revoke messages without a time limit:
  - Added the parameter `revoke` to the method `deleteChatHistory`; use it to delete chat history for all chat members.
  - Added the fields `can_be_deleted_only_for_self` and `can_be_deleted_for_all_users` to the class `chat`
    which can be used to determine for whom the chat can be deleted through the `deleteChatHistory` method.
  - The fields `Message.can_be_deleted_only_for_self` and `Message.can_be_deleted_for_all_users` can still be used
    to determine for whom the message can be deleted through the `deleteMessages` method.
* Added support for server-generated notifications about newly registered contacts:
  - Setting the option `disable_contact_registered_notifications` now affects all user sessions.
    When the option is enabled, the client will still receive `messageContactRegistered` message in the private chat,
    but there will be no notification about the message.
  - `getOption("disable_contact_registered_notifications")` can be used to fetch the actual value of the option,
    the option will not be updated automatically after a change from another device.
* Decreased the maximum allowed first name and last name length to 64, chat title length to 128,
  matching the new server-side limits.
* Decreased the maximum allowed value of the `forward_limit` parameter of the `addChatMember` method from 300 to 100,
  matching the new server-side limit.
* Added protection from opening two TDLib instances with the same database directory from one process.
* Added copying of notification settings of new secret chats from notification settings of
  the corresponding private chat.
* Excluded the sponsored chat (when using sponsored proxies) from unread counters.
* Allowed to pass decreased local_size in `setFileGenerationProgress` to restart the generation from the beginning.
* Added a check for modification time of original file in `inputFileGenerated` whenever possible.
  If the original file was changed, then TDLib will restart the generation.
* Added the destruction of MTProto keys on the server during log out.
* Added support for hexadecimal-encoded and decimal-encoded IPv4 proxy server addresses.
* Improved the behavior of `changeImportedContacts` which now also deletes contacts of users without Telegram accounts
  from the server.
* Added the ability to call `getStorageStatistics` before authorization.
* Allowed to pass `limit` = -`offset` for negative offset in the `getChatHistory` method.
* Changed the recommended `inputThumbnail` size to be at most 320x320 instead of the previous 90x90.
* Disabled building by default of the native C interface. Use `cmake --build . --target tdc` to build it.
* Numerous optimizations and bug fixes:
  - Network implementation for Windows was completely rewritten to allow a literally unlimited number of
    simultaneously used TDLib instances.
  - TDLib instances can now share working threads with each other. Only a limited number of threads will be created
    even if there are thousands of TDLib instances in a single process.
  - Removed the restriction on the size of update or response result in JSON interface.
  - Fixed pinning of the 5th chat when there is a sponsored chat.
  - Fixed IPv6 on Windows.
  - Improved network connections balancing, aliveness checks and overall stability.
  - Various autogenerated documentation fixes and improvements.

-----------------------------------------------------------------------------------------------------------------------

Changes in 1.3.0 (5 Sep 2018):

* Added a review of existing TDLib based [frameworks](https://github.com/tdlib/td/blob/master/example/README.md)
  in different programming languages.
* Added a [Getting started](https://core.telegram.org/tdlib/getting-started) guide describing the main TDLib concepts
  and basic principles required for library usage.
* When a chat is opened, only those messages that have been viewed are marked as read.
* Improved the proxy settings API:
  - A list of proxies is stored instead of just one proxy.
  - New methods `addProxy`, `editProxy`, `enableProxy`, `disableProxy`, `removeProxy` and `getProxies` were added
    instead of `setProxy` and `getProxy`.
  - Added the method `pingProxy` which can be used to compute time needed to receive a response from a Telegram server
    through a proxy or directly.
  - Added support for MTProto proxy via class `proxyTypeMtproto`.
  - Added support for HTTP proxy via class `proxyTypeHttp`.
  - For each proxy last time it was used is remembered.
  - Added the method `getProxyLink` which returns an HTTPS link that can be used to share a proxy with others.
* Improved the notification settings API. Scope notification settings are now properly synchronized between all devices
  and chat notification settings can be reset to their default values:
  - The `notificationSettings` class was split into `chatNotificationSettings` and `scopeNotificationSettings`.
  - Only two notification settings scopes are left: `notificationSettingsScopePrivateChats` which is responsible for
    default notification settings for private and secret chats and `notificationSettingsScopeGroupChats` for all other
    chats.
  - `updateNotificationSettings` was split into `updateChatNotificationSettings` and `updateScopeNotificationSettings`.
  - `setNotificationSettings` was split into `setChatNotificationSettings` and `setScopeNotificationSettings`.
  - `getNotificationSettings` was replaced with `getScopeNotificationSettings`.
* Added the field `filter` to the `searchChatMembers` method to support searching among administrators, bots,
  restricted and banned members.
* Added the ability to use synchronous requests and `setAlarm` before the library is initialized.
* Added the ability to send requests that don't need authentication before the library is initialized. These requests
  will be postponed and executed at the earliest opportunity. For example, `setNetworkType` can be used to disable the
  network for TDLib before the library tries to use it; `addProxy` can be used to add a proxy before any network
  activity; or `setOption("use_pfs")` can be used to guarantee that PFS is used for all requests.
* Added support for tg:// links in `inlineKeyboardButtonTypeUrl` and `textEntityTypeTextUrl`.
* Added the ability to call `deleteAccount` in the `authorizationStateWaitPassword` authorization state.
* Added the ability to call `checkAuthenticationCode` with an empty `first_name` for unregistered users to check the
  code validity.
* Added the methods `editMessageMedia` and `editInlineMessageMedia` for editing media messages content.
* Renamed the class `shippingAddress` to `address`.
* Changed the return value of the `requestPasswordRecovery` method from `passwordRecoveryInfo` to
  `emailAddressAuthenticationCodeInfo`.
* Added support for sponsored channels promoted by MTProto-proxies:
  - Added the field `is_sponsored` to the `chat` class.
  - Added `updateChatIsSponsored`, sent when this field changes.
* Added support for marking chats as unread:
  - Added the field `is_marked_as_unread` to `chat`.
  - Added the update `updateChatIsMarkedAsUnread`.
  - Added the method `toggleChatIsMarkedAsUnread`.
* Added support for a default value of `disable_notification`, used when a message is sent to the chat:
  - Added the field `default_disable_notification` to `chat` class.
  - Added the update `updateChatDefaultDisableNotification`.
  - Added the method `toggleChatDefaultDisableNotification`.
* Added the field `vcard` to the `contact` class.
* Added the field `type` to `venue`, which contains a provider-specific type of the venue,
* Added the update `updateUnreadChatCount`, enabled when the message database is used and sent when
  the number of unread chats has changed.
* Added the method `addLocalMessage` for adding a local message to a chat.
* Added the method `getDeepLinkInfo`, which can return information about `tg://` links that are not supported by
  the client.
* Added support for language packs:
  - Added the writable option `language_pack_database_path` which can be used to specify a path to a database
    for storing language pack strings, so that this database can be shared between different accounts.
    If not specified, language pack strings will be stored only in memory.
    Changes to the option are applied only on the next TDLib launch.
  - Added the writable option `localization_target` for setting up a name for the current localization target
    (currently supported: "android", "android_x", "ios", "macos" and "tdesktop").
  - Added the writable option `language_pack_id` for setting up an identifier of the currently used language pack from
    the current localization target (a "language pack" represents the collection of strings that can be used to display
    the interface of a particular application in a particular language).
  - Added the class `LanguagePackStringValue` describing the possible values of a string from a language pack.
  - Added the class `languagePackString` describing a string from a language pack.
  - Added the class `languagePackStrings` containing a list of language pack strings.
  - Added the class `languagePackInfo` containing information about a language pack from a localization target.
  - Added the class `localizationTargetInfo` containing information about a localization target.
  - Added the update `updateLanguagePackStrings` which is sent when some strings in a language pack have changed.
  - Added the synchronous method `getLanguagePackString` which can be used to get a language pack string from
    the local database.
  - Added the method `getLocalizationTargetInfo` which returns information about the current localization target.
  - Added the method `getLanguagePackStrings` which returns some or all strings from a language pack, possibly fetching
    them from the server.
  - Added the method `setCustomLanguagePack` for adding or editing a custom language pack.
  - Added the method `editCustomLanguagePackInfo` for editing information about a custom language pack.
  - Added the method `setCustomLanguagePackString` for adding, editing or deleting a string in a custom language pack.
  - Added the method `deleteLanguagePack` for deleting a language pack from the database.
  - Added the read-only option `suggested_language_pack_id` containing the identifier of the language pack,
    suggested for the user by the server.
* Added support for Telegram Passport:
  - Added two new message contents `messagePassportDataSent` for ordinary users and `messagePassportDataReceived`
    for bots containing information about Telegram Passport data shared with a bot.
  - Added the new file type `fileTypeSecure`.
  - Added the class `datedFile` containing information about a file along with the date it was uploaded.
  - Added the helper classes `date`, `personalDetails`, `identityDocument`, `inputIdentityDocument`,
    `personalDocument`, `inputPersonalDocument`, `passportElements`.
  - Added the class `PassportElementType` describing all supported types of Telegram Passport elements.
  - Added the class `PassportElement` containing information about a Telegram Passport element.
  - Added the class `InputPassportElement` containing information about a Telegram Passport element to save.
  - Added the classes `passportElementError` and `PassportElementErrorSource` describing an error in
    a Telegram Passport element.
  - Added the field `has_passport_data` to the `passwordState` class.
  - Added the methods `getPassportElement`, `getAllPassportElements`, `setPassportElement`, `deletePassportElement`
    for managing Telegram Passport elements.
  - Added the methods `getPassportAuthorizationForm` and `sendPassportAuthorizationForm` used for sharing
    Telegram Passport data with a service via a bot.
  - Added the methods `sendPhoneNumberVerificationCode`, `resendPhoneNumberVerificationCode` and
    `checkPhoneNumberVerificationCode` for verification of a phone number used for Telegram Passport.
  - Added the methods `sendEmailAddressVerificationCode`, `resendEmailAddressVerificationCode` and
    `checkEmailAddressVerificationCode` for verification of an email address used for Telegram Passport.
  - Added the method `getPreferredCountryLanguage` returning a most popular language in a country.
  - Added the classes `inputPassportElementError` and `InputPassportElementErrorSource` for bots describing an error in
    a Telegram Passport element.
  - Added the method `setPassportElementErrors` for bots.
  - Added the class `encryptedPassportElement` and `encryptedCredentials` for bots describing
    an encrypted Telegram Passport element.
* Improved support for Telegram terms of service:
  - Added the class `termsOfService`, containing information about the Telegram terms of service.
  - Added the field `terms_of_service` to `authorizationStateWaitCode`.
  - Added the update `updateTermsOfService` coming when new terms of service need to be accepted by the user.
  - Added the method `acceptTermsOfService` for accepting terms of service.
  - Removed the method `getTermsOfService`.
* Added the method `getMapThumbnailFile` which can be used to register and download a map thumbnail file.
* Added the methods `sendPhoneNumberConfirmationCode`, `resendPhoneNumberConfirmationCode` and
  `checkPhoneNumberConfirmationCode` which can be used to prevent an account from being deleted.
* Added the convenience methods `joinChat` and `leaveChat` which can be used instead of `setChatMemberStatus` to manage
  the current user's membership in a chat.
* Added the convenience method `getContacts` which can be used instead of `searchContacts` to get all contacts.
* Added the synchronous method `cleanFileName` which removes potentially dangerous characters from a file name.
* Added the method `getChatMessageCount` which can be used to get the number of shared media.
* Added the writable option `ignore_inline_thumbnails` which can be used to prevent file thumbnails sent
  by the server along with messages from being saved on the disk.
* Added the writable option `prefer_ipv6` which can be used to prefer IPv6 connections over IPv4.
* Added the writable option `disable_top_chats` which can be used to disable support for top chats.
* Added the class `chatReportReasonCopyright` for reporting chats containing infringing content.
* Added the method `clearAllDraftMessages` which can be used to delete all cloud drafts.
* Added the read-only options `message_text_length_max` and `message_caption_length_max`.
* Added the read-only options `animation_search_bot_username`, `photo_search_bot_username` and
  `venue_search_bot_username` containing usernames of bots which can be used in inline mode for animations, photos and
  venues search respectively.
* Numerous optimizations and bug fixes:
  - Fixed string encoding for .NET binding.
  - Fixed building TDLib SDK for Universal Windows Platform for ARM with MSVC 2017.
  - Fixed the Swift example project.
  - Fixed the syntax error in the Python example.
  - Sticker thumbnails can now have `webp` extensions if they are more likely to be in WEBP format.

-----------------------------------------------------------------------------------------------------------------------

Changes in 1.2.0 (20 Mar 2018):

* Added support for native .NET bindings through `C++/CLI` and `C++/CX`.
  See [using in .NET projects](README.md#using-dotnet) for more details.
* Added a C# example. See [README](example/csharp/README.md) for build and usage instructions.
* Added a build and usage example of TDLib SDK for Universal Windows Platform. See [README](example/uwp/README.md)
  for detailed build and usage instructions. Also, see [Unigram](https://github.com/UnigramDev/Unigram), which is
  a full-featured client rewritten from scratch using TDLib SDK for Universal Windows Platform in less than 2 months.
* Added a Swift example. See [README](example/swift/README.md) for build and usage instructions.
* Added an example of building TDLib for iOS, watchOS, tvOS, and also macOS. See [README](example/ios/README.md) for
  detailed build instructions.
* Added README to [C++](example/cpp/README.md) and [python](example/python/README.md) examples.
* Link Time Optimization is disabled by default. Use `-DTD_ENABLE_LTO=ON` CMake option and CMake >= 3.9 to enable it.
* `updateNotificationSettings` is now automatically sent when the mute time expires for a chat.
* Added automatic sending of a corresponding `chatAction` when a file is being uploaded.
* `updateUserChatAction` with `chatActionCancel` is now automatically sent when the timeout expires for an action.
* Authorization states `authorizationStateWaitCode` and `authorizationStateWaitPassword` are now saved between
  library restarts for 5 minutes.
* Added new message content type `messageWebsiteConnected`.
* Added new text entity types `textEntityTypeCashtag` and `textEntityTypePhoneNumber`.
* Added new update `updateUnreadMessageCount`, enabled when message database is used.
* Method `joinChatByInviteLink` now returns the joined `chat`.
* Method `getWebPagePreview` now accepts `formattedText` instead of plain `string`.
* Added field `phone_number` to `authenticationCodeInfo`, which contains a phone number that is being authenticated.
* Added field `is_secret` to `messageAnimation`, `messagePhoto`, `messageVideo` and `messageVideoNote` classes,
  which denotes whether the thumbnail for the content must be blurred and the content must be shown only while tapped.
* Added field `expires_in` to `messageLocation` for live locations.
* Added flag `can_be_reported` to `chat` class.
* Added flag `supports_streaming` to classes `video` and `inputMessageVideo`.
* Added parameter `message_ids` to `reportChat`, which can be used to report specific messages.
* Added method `checkChatUsername` for checking whether a username can be set for a chat.
* Added method `getRepliedMessage`, which returns a message that is replied by a given message.
* Added method `getChatPinnedMessage`, which returns the pinned message from a chat.
* Added method `searchStickers` to search by emoji for popular stickers suggested by the server.
* Added method `searchStickerSets` to search by title and name for popular sticker sets suggested by the server.
* Added method `searchInstalledStickerSets` to search by title and name for installed sticker sets.
* Added methods for handling connected websites: `getConnectedWebsites`, `disconnectWebsite` and
  `disconnectAllWebsites`.
* Added method `getCountryCode`, which uses current user IP address to identify their country.
* Added option `t_me_url`.
* Fixed `BlackBerry` spelling in `deviceTokenBlackBerryPush`.
* Fixed return type of `getChatMessageByDate` method, which is `Message` and not `Messages`.
* Ensured that updateOption("my_id") comes before `updateAuthorizationState` with `authorizationStateReady`.
* Numerous optimizations and bug fixes.

-----------------------------------------------------------------------------------------------------------------------

Changes in 1.1.1 (4 Feb 2018):
* Fixed C JSON bindings compilation error.
* Fixed locale-dependent JSON generation.

-----------------------------------------------------------------------------------------------------------------------

Changes in 1.1.0 (31 Jan 2018):

* Methods `td::Log::set_file_path` and `td_set_log_file_path` now return whether they succeeded.
* Added methods `td::Log::set_max_file_size` and `td_set_log_max_file_size` for restricting maximum TDLib log size.
* Added methods `td::Log::set_fatal_error_callback` and `td_set_log_fatal_error_callback` for providing callbacks
  on fatal errors.
* JNI-bindings are now package-agnostic. Use CMake option `TD_ENABLE_JNI` to enable JNI-bindings.
* Added a Java example. See [README](example/java/README.md) for build and usage instructions.
* Added support for text entities in media captions.
  - Added new type `formattedText` containing a text with entities.
  - Replaced all string fields `caption` with fields of type `formattedText`.
  - Replaced fields `text` and `entities` with the field `text` of type `formattedText` in class `messageText`.
  - Replaced fields `text` and `entities` with the field `text` of type `formattedText` in class `inputMessageText`.
  - Replaced fields `text` and `text_entities` with the field `text` of type `formattedText` in class `game`.
  - Removed field `parse_mode` from class `inputMessageText`.
  - Added synchronous method `parseTextEntities`.
* updateNewMessage is now sent for all sent messages.
* updateChatLastMessage is now sent when any field of the last message in a chat changes.
* Reworked the `registerDevice` method:
  - Added parameter `other_user_ids` to method `registerDevice` to support multiple accounts.
  - It is now possible to specify tokens for VoIP pushes, WNS, web Push API, Tizen Push Service as `DeviceToken`.
  - Added support for Apple Push Notification Service inside App Sandbox.
* Added method `searchChatsOnServer` analogous to `searchChats`, but using server search.
* Results from the `searchChatsOnServer` method are now excluded from `searchPublicChats` results,
  so `searchChatsOnServer` (along with `searchContacts`) should be called whenever `searchPublicChats` is called
  to ensure that no results were omitted.
* Added parameter `as_album` to method `getPublicMessageLink` to enable getting public links for media albums.
* Added field `html` to class `publicMessageLink`, containing HTML-code for message/message album embedding.
* Added parameter `only_if_pending` to method `cancelDownloadFile` to allow keeping already started downloads.
* Methods `createPrivateChat`, `createBasicGroupChat`, `createSupergroupChat` and `createSecretChat`
  can now be called without a prior call to `getUser`/`getBasicGroup`/`getSupergroup`/`getSecretChat`.
* Added parameter `force` to methods `createPrivateChat`, `createBasicGroupChat` and `createSupergroupChat` to allow
  creating a chat without network requests.
* Numerous optimizations and bug fixes.

-----------------------------------------------------------------------------------------------------------------------