Changes in 1.8.0 (29 Dec 2021):
- Changed the type of user, basic group and supergroup identifiers from
int32toint53. - Simplified chat list loading and removed the ability to misuse the method
getChats:- Renamed the method
getChatstoloadChats. - Removed the parameters
offset_orderandoffset_chat_idfrom the methodloadChats. Chats are now always loaded from the last known chat in the list. - Changed the type of the result in the method
loadChatstook. If no chats were loaded, a 404 error is returned. The order of chats in the list must be maintained using the updatesupdateChatPosition,updateChatLastMessage, andupdateChatDraftMessage. - 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.
- Renamed the method
- Added the ability to hook TDLib log messages:
- Added the function
td_set_log_message_callbackto JSON interface. - Added the function
set_log_message_callbackto the classClientManager. - Added the function
SetLogMessageCallbackto the UWP native wrapper through C++/CX. - Deprecated the function
td_set_log_fatal_error_callbackin JSON interface in favor of the functiontd_set_log_message_callback. - Deprecated the function
Log::set_fatal_error_callbackin favor of the functionClientManager::set_log_message_callback.
- Added the function
- Added support for sending messages on behalf of public channels owned by the user:
- Added the field
message_sender_idto the classchat, 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_senderto the classmessageSendingStateFailed. 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
deleteChatMessagesFromUserwith the methoddeleteChatMessagesBySender, expecting aMessageSenderinstead of a user identifier. - Replaced the update
updateUserChatActionwith the updateupdateChatAction, containing aMessageSenderinstead of a user identifier as a source of the chat action.
- Added the field
- Added the ability to ban supergroups and channels in other supergroups and channels:
- Replaced the fields
user_idwith the fieldsmember_idin the classeschatMemberandchatEventMemberRestricted. - Replaced the parameters
user_idwith the parametersmember_idin the methodssetChatMemberStatusandgetChatMember.
- Replaced the fields
- Improved support for animated emoji:
- Added the class
animatedEmoji, containing information about an animated emoji. - Added the class
messageAnimatedEmojito the types of message content. - Added the method
clickAnimatedEmojiMessageto be called when an animated emoji is clicked. - Added the update
updateAnimatedEmojiMessageClicked, received when a big animated sticker must be played. - Added the class
chatActionWatchingAnimationsto 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 the class
- Added support for automatic message deletion in all chat types:
- Added the field
message_ttlto the classchat. - Added the update
updateChatMessageTtl. - Added the method
setChatMessageTtl. - Added the class
chatEventMessageTtlChanged, representing change of the fieldmessage_ttlin the chat event log. - Removed the field
ttlfrom the classsecretChatin favor of the fieldmessage_ttlin the classchat. - Removed the method
sendChatSetTtlMessagein favor of the methodsetChatMessageTtl.
- Added the field
- Improved names of the fields of the type
MessageSender:- Renamed the fields
sendertosender_idin the classesmessageandnotificationTypeNewPushMessage. - Renamed the parameter
sendertosender_idin the methodssearchChatMessages,addLocalMessage, andtoggleMessageSenderIsBlocked. - Renamed the field
recent_replierstorecent_replier_idsin the classmessageReplyInfo. - Renamed the field
travelertotraveler_idin the classmessageProximityAlertTriggered. - Renamed the field
watchertowatcher_idin the classmessageProximityAlertTriggered.
- Renamed the fields
- The field
formatted_phone_numberin the classphoneNumberInfonow contains the character '-' at the places of expected digits. - Added the synchronous method
getPhoneNumberInfoSyncthat can be used instead of the methodgetPhoneNumberInfoto synchronously receive information about a phone number by its prefix. - Replaced the field
user_idin the classchatEventwith the fieldmember_idof the typeMessageSender. - Improved support for bot payments:
- Allowed sending invoices as results of inline queries by allowing bots to use the class
inputMessageInvoiceas the value of the fieldinput_message_contentin the classesinputInlineQueryResultAnimation,inputInlineQueryResultArticle,inputInlineQueryResultAudio,inputInlineQueryResultContact,inputInlineQueryResultDocument,inputInlineQueryResultLocation,inputInlineQueryResultPhoto,inputInlineQueryResultSticker,inputInlineQueryResultVenue,inputInlineQueryResultVideo, andinputInlineQueryResultVoiceNote. - Allowed sending invoice messages to basic group, supergroup and channel chats.
- Allowed bots to send forwardable invoices by specifying an empty field
start_parameterin the classinputMessageInvoice. - Added the field
invoice_chat_idto the classmessagePaymentSuccessful. - Added the field
idto the classpaymentForm, containing a unique payment form identifier. - Added the parameter
payment_form_idto the methodsendPaymentForm. - Added the field
seller_bot_user_idto the classpaymentForm, containing the user identifier of the seller bot. - Added the field
payments_provider_user_idto the classpaymentForm, containing the user identifier of the payment provider bot. - Added the fields
title,description,photo, andseller_bot_user_idto the classpaymentReceipt. - Added the fields
max_tip_amountandsuggested_tip_amountsto the classinvoice. - Added the parameter
tip_amountto the methodsendPaymentForm. - Added the field
tip_amountto the classpaymentReceipt. - Renamed the class
inputCredentialsAndroidPaytoinputCredentialsGooglePay. - Added the class
paymentFormTheme, containing the desired colors for a payment form. - Added the parameter
themeto the methodgetPaymentForm. - Removed the field
invoice_message_idfrom the classmessagePaymentSuccessfulBot.
- Allowed sending invoices as results of inline queries by allowing bots to use the class
- Added the method
deleteChat, which can be used to completely delete a chat along with all messages. - Removed the method
deleteSupergroupin favor of the methoddeleteChat. - Changed the type of the result in the method
getProxyLinkto the classhttpUrlinstead of the classtext. - 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 the class
- Added support for video chats:
- Added the class
groupCall, representing a group call. - Added the method
getGroupCallfor 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_chatto the classchat. - Added the update
updateChatVideoChat. - Added the classes
messageVideoChatScheduled,messageVideoChatStarted, andmessageVideoChatEndedto the types of message content. - Added the class
messageInviteVideoChatParticipantsto the types of message content. - Added the field
can_manage_video_chatsto the classchatMemberStatusAdministrator. - Added the class
groupCallId. - Added the method
createVideoChatfor 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,endGroupCallScreenSharingfor managing screen sharing during group calls. - Added the method
setGroupCallTitle. - Added the method
toggleGroupCallMuteNewParticipants. - Added the classes
groupCallVideoSourceGroupandgroupCallParticipantVideoInfo, 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
toggleGroupCallParticipantIsMutedandsetGroupCallParticipantVolumeLevelfor managing the volume level of group call participants. - Added the method
inviteGroupCallParticipants. - Added the method
getGroupCallInviteLinkandrevokeGroupCallInviteLinkfor managing group call invite links. - Added the methods
startGroupCallRecordingandendGroupCallRecordingfor 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
setVideoChatDefaultParticipantfor changing the default participant on whose behalf a video chat will be joined. - Added the class
GroupCallVideoQualityand the methodgetGroupCallStreamSegmentfor downloading segments of live streams. - Added the class
groupCallRecentSpeaker, representing a group call participant that was recently speaking. - Added the field
video_chat_changesto the classchatEventLogFilters. - 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 settingmute_new_participantsof 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 the class
- 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, andinternalLinkTypeVideoChatto 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 methodgetExternalLinkInfoif the user confirms automatic authorization on the website.
- Added the method
- Added support for expiring chat invite links:
- Added the field
is_primaryto the classchatInviteLink. 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
nameto the classchatInviteLink. - Added the field
creator_user_idto the classchatInviteLink. - Added the field
dateto the classchatInviteLink, containing the link creation date. - Added the field
edit_dateto the classchatInviteLink, containing the date the link was last edited. - Added the fields
expiration_dateandmember_limitto the classchatInviteLink, limiting link usage. - Added the field
member_countto the classchatInviteLink. - Added the field
is_revokedto the classchatInviteLink. - Changed the type of the fields
invite_linkin the classesbasicGroupFullInfoandsupergroupFullInfotochatInviteLink. - Added the field
descriptionto the classchatInviteLinkInfo, containing the description of the chat. - Replaced the method
generateChatInviteLinkwith the methodreplacePrimaryChatInviteLink. - Added the method
createChatInviteLinkfor creating new invite links. - Added the method
editChatInviteLinkfor 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
chatInviteLinkCountandchatInviteLinkCounts. - Added the method
getChatInviteLinkCounts, returning the number of invite links created by chat administrators. - Added the classes
chatInviteLinkMemberandchatInviteLinkMembers. - Added the method
getChatInviteLinkMembers. - Added the field
invite_link_changesto the classchatEventLogFilters. - Added the class
chatEventMemberJoinedByInviteLink, representing a user joining the chat via invite link in the chat event log. - Added the class
chatEventInviteLinkEditedto the types of chat event. - Added the class
chatEventInviteLinkRevokedto the types of chat event. - Added the class
chatEventInviteLinkDeletedto the types of chat event. - Added the class
chatActionBarInviteMembersto the types of chat action bar.
- Added the field
- Added support for chat invite links that create join requests:
- Added the class
messageChatJoinByRequestto the types of message content. - Added the class
pushMessageContentChatJoinByRequestto the types of push message content. - Added the field
pending_join_requeststo the classchat. - Added the class
chatJoinRequestsInfo, containing basic information about pending join requests for the chat. - Added the update
updateChatPendingJoinRequests. - Added the fields
creates_join_requestto the classeschatInviteLinkandchatInviteLinkInfo. - Added the field
pending_join_request_countto the classchatInviteLink. - 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
processChatJoinRequestfor processing a request to join the chat. - Added the method
processChatJoinRequestsfor processing all requests to join the chat. - Added the class
chatActionBarJoinRequestto 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
updateNewChatJoinRequestfor bots.
- Added the class
- Added the ability to see viewers of outgoing messages in small group chats:
- Added the method
getMessageViewers. - Added the field
can_get_viewersto the classmessage.
- Added the method
- Added the parameter
only_previewto the methodforwardMessages, 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 class
- 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 class
- Added the field
can_manage_chatto the classchatMemberStatusAdministratorto 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
commandsto the classuserFullInfo, containing the list of commands to be used in the private chat with the bot. - Added the fields
bot_commandsto the classesbasicGroupFullInfoandsupergroupFullInfo. - Removed the class
botInfo. - Removed the fields
bot_infofrom the classesuserFullInfoandchatMember. - Added the class
BotCommandScope. - Added the methods
setCommands,deleteCommands,getCommandsfor 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
getOptionin case the value of the option was changed from another device. - Added the field
minithumbnailto the classprofilePhoto, representing a profile photo minithumbnail. - Added the field
minithumbnailto the classchatPhotoInfo, representing a chat photo minithumbnail. - Added support for sticker outlines:
- Added the field
outlineto the classsticker. - Added the fields
thumbnail_outlineto the classesstickerSetandstickerSetInfo. - 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 the field
- Added support for chats and messages with protected content:
- Added the field
has_protected_contentto the classchat. - Added the update
updateChatHasProtectedContent. - Added the method
toggleChatHasProtectedContent. - Added the class
chatEventHasProtectedContentToggled, representing a change of the settinghas_protected_contentin the chat event log. - Added the field
can_be_savedto the classmessage.
- Added the field
- 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_groupto the classsupergroup. - 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.
- Added the field
- Improved chat reports:
- Added the parameter
textto the methodreportChat, allowing to add additional details to all chat reporting reasons. - Removed the field
textfrom the classchatReportReasonCustom. - Added the method
reportChatPhotofor reporting chat photos.
- Added the parameter
- Added support for users and chats reported as fake:
- Added the field
is_faketo the classuser. - Added the field
is_faketo the classsupergroup. - Added the class
chatReportReasonFaketo the types of chat reporting reasons.
- Added the field
- Added the class
inlineKeyboardButtonTypeUserto the types of inline keyboard buttons. - Added the field
input_field_placeholderto the classesreplyMarkupForceReplyandreplyMarkupShowKeyboard. - Added support for media timestamp entities in messages:
- Added the class
textEntityTypeMediaTimestampto the types of text entities. - Added the field
has_timestamped_mediato the classmessage, describing whether media timestamp entities refer to the message itself or to the replied message. - Added the parameter
media_timestampto the methodgetMessageLinkto support creating message links with a given media timestamp. - Added the field
can_get_media_timestamp_linksto the classmessage. - Added the field
media_timestampto the classmessageLinkInfofor handling of message links with a specified media timestamp.
- Added the class
- Added the ability to change properties of active sessions:
- Added the field
can_accept_secret_chatsto the classsession. - Added the method
toggleSessionCanAcceptSecretChats. - Added the field
can_accept_callsto the classsession. - Added the method
toggleSessionCanAcceptCalls. - Added the field
inactive_session_ttl_daysto the classsessions. - Added the method
setInactiveSessionTtl.
- Added the field
- 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_callto the classphoneNumberAuthenticationSettings. - 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_tokensto the classphoneNumberAuthenticationSettings.
- Added the class
- Added support for resetting the password from an active session:
- Added the class
ResetPasswordResultand the methodresetPassword. - Added the method
cancelPasswordReset, which can be used to cancel a pending password reset. - Added the field
pending_reset_dateto the classpasswordState.
- Added the class
- 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_passwordandnew_hintto the methodsrecoverAuthenticationPasswordandrecoverPassword. - Added the method
checkAuthenticationPasswordRecoveryCode. - Added the method
checkPasswordRecoveryCode.
- Added the parameters
- Added the class
chatActionChoosingStickerto the types of chat action. - Added the class
backgroundFillFreeformGradientto the types of background fill. - Added the field
is_invertedto the classbackgroundTypePatternfor inverted patterns for dark themes. - Added support for chat themes:
- Added the field
theme_nameto the classchat. - Added the method
setChatTheme. - Added the update
updateChatTheme, received when a theme was changed in a chat. - Added the class
messageChatSetThemeto the types of message content. - Added the class
pushMessageContentChatSetThemeto 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 field
- Added the ability for regular users to create sticker sets:
- Allowed to use the methods
uploadStickerFileandcreateNewStickerSetas regular users. - Replaced the parameter
png_stickerin the methoduploadStickerFilewith the parameterstickerof the typeInputSticker. - Added the parameter
sourceto the methodcreateNewStickerSet. - Added the method
getSuggestedStickerSetName. - Added the class
CheckStickerSetNameResultand the methodcheckStickerSetNamefor checking a sticker set name before creating a sticker set.
- Allowed to use the methods
- Added support for importing chat history from an external source:
- Added the method
importMessages. - Added the method
getMessageImportConfirmationText. - Added the class
MessageFileTypeand the methodgetMessageFileType, which can be used to check whether the format of a file with exported message history is supported. - Added the class
messageForwardOriginMessageImportto the types of forwarded message origins for imported messages. - Added the parameter
for_importto the methodcreateNewSupergroupChat, which needs to be set to true whenever the chat is created for a subsequent message history import.
- Added the method
- 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 class
- 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_countto the classmessageThreadInfo. - Added the field
has_private_forwardsto the classuserFullInfo. - Added the field
descriptionto the classuserFullInfo, containing description of the bot. - Added the field
emojito the classinputMessageSticker, allowing to specify the emoji that was used to choose the sent sticker. - Added the method
banChatMemberthat can be used to ban chat members instead of the methodsetChatMemberStatusand allows to revoke messages from the banned user in basic groups. - Allowed to use the method
setChatMemberStatusfor adding chat members. - Removed the parameter
user_idfrom the methodreportSupergroupSpam. Messages from different senders can now be reported simultaneously. - Added the field
feedback_linkto the classwebPageInstantView. - Added the method
getApplicationDownloadLink, returning the link for downloading official Telegram applications. - Removed unusable search message filters
searchMessagesFilterCallandsearchMessagesFilterMissedCall. - Removed the method
getChatStatisticsUrl. - Removed the method
getInviteTextin favor of the methodgetApplicationDownloadLink. - Added the field
chat_typeto the updateupdateNewInlineQueryfor bots. - Added the update
updateChatMemberfor bots. - Improved the appearance of the TDLib build instructions generator.
- 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_onlyto 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
ClientManagerinterface:- Replaced the method
Client.sendwith a static method that must be called exactly once in a dedicated thread. The callbacksClientResultHandlerwill be called in this thread for all clients. - Removed the function
Client.Dispose()from the C++/CLI native binding. The objects of the typeClientdon't need to be explicitly disposed anymore.
- Replaced the method
- Rewritten the C binding using the new
ClientManagerinterface:- Renamed the fields
idin the structsTdRequestandTdResponsetorequest_id. - Added the field
client_idto the structTdResponse. - Replaced the method
TdCClientCreatewith the methodTdCClientCreateId. - Replaced the parameter
instancewith the parameterclient_idin the functionTdCClientSend. - Added the methods
TdCClientReceiveandTdCClientExecute. - Removed the methods
TdCClientSendCommandSync,TdCClientDestroy, andTdCClientSetVerbosity.
- Renamed the fields
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_ididentifier, which is returned by the methodtd_create_client_id. - Use the method
td_sendto send a request to a specified client. The TDLib instance is created on the first request sent to it. - Use the method
td_receiveto 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_executeto synchronously execute suitable TDLib methods.
- The TDLib instance is identified by the unique
- 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_sponsoredandis_pinnedin the classchatwith the fieldpositions, containing a list of the chat positions in various chat list. - Replaced the field
orderwith the fieldpositionsin the updatesupdateChatLastMessageandupdateChatDraftMessage. - Added the update
updateChatPosition. - Removed the superfluous updates
updateChatChatList,updateChatIsSponsored,updateChatOrderandupdateChatIsPinned. - Added the parameter
chat_listto the methodtoggleChatIsPinned. - 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 the class
- Added support for chat filters:
- Added the new chat list type
chatListFilter. - Added the classes
chatFilterInfoandchatFilter, 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,editChatFilteranddeleteChatFilterfor managing chat filters. - Added the method
reorderChatFiltersfor 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
recommendedChatFilterandrecommendedChatFilters. - Added the method
getRecommendedChatFilters, returning a list of recommended chat filters.
- Added the new chat list type
- 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_idwith the fieldsenderof the typeMessageSenderin the classesmessageandnotificationTypeNewPushMessage. - 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_idwith the parametersenderof the typeMessageSenderin the methodsearchChatMessages. - Added the ability to specify a chat as a local message sender by replacing the parameter
sender_user_idwith the parametersenderof the typeMessageSenderin the methodaddLocalMessage.
- Added the class
- Added support for video calls:
- Added the class
callServer, describing a server for relaying call data. - Added the classes
callServerTypeTelegramReflectorandcallServerTypeWebrtc, representing different types of supported call servers. - Replaced the field
connectionswith the fieldserversin the classcallStateReady. - Removed the class
callConnection. - Added the update
updateNewCallSignalingData. - Added the method
sendCallSignalingData. - Added the field
supports_video_callsto the classuserFullInfo. - Added the field
is_videoto the classmessageCall. - Added the field
is_videoto the classcall. - Added the parameter
is_videoto the methodcreateCall. - Added the parameter
is_videoto the methoddiscardCall. - Added two new types of call problems
callProblemDistortedVideoandcallProblemPixelatedVideo. - Added the field
library_versionsto the classcallProtocol, which must be used to specify all supported call library versions.
- Added the class
- 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_pinnedto the classmessage. - Added the update
updateMessageIsPinned. - Added the parameter
only_for_selfto the methodpinChatMessage, 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_idto the methodunpinChatMessage. - Added the field
messageto the classchatEventMessageUnpinned. - 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
getChatPinnedMessagenow returns the newest pinned message in the chat. - Removed the field
pinned_message_idfrom the classchat. - 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
photoSizetothumbnail. - Added support for thumbnails in the format
thumbnailFormatMpeg4for some animations and videos. - Replaced the classes
inputInlineQueryResultAnimatedGifandinputInlineQueryResultAnimatedMpeg4with the generic classinputInlineQueryResultAnimation. - Added support for animated thumbnails in the class
inputInlineQueryResultAnimation. - The class
photoSizeis now only used for JPEG images.
- Added the class
- Improved support for user profile photos and chat photos:
- Added the field
phototo the classuserFullInfo, containing full information about the user photo. - Added the field
phototo the classbasicGroupFullInfo, containing full information about the group photo. - Added the field
phototo the classsupergroupFullInfo, containing full information about the group photo. - Renamed the class
chatPhototochatPhotoInfo. - Added the field
has_animationto the classesprofilePhotoandchatPhotoInfo, which is set to true for animated chat photos. - Added the classes
chatPhotoandchatPhotos. - Added minithumbnail support via the field
minithumbnailin the classchatPhoto. - Added the class
animatedChatPhoto. - Added animated chat photo support via the field
animationin the classchatPhoto. - Removed the classes
userProfilePhotoanduserProfilePhotos. - Changed the type of the field
photoin the classmessageChatChangePhototochatPhoto. - Changed the type of the fields
old_photoandnew_photoin the classchatEventPhotoChangedtochatPhoto. - Changed the return type of the method
getUserProfilePhotostochatPhotos. - Added the class
InputChatPhoto, representing a chat or a profile photo to set. - Changed the type of the parameter
photoin the methodssetProfilePhotoandsetChatPhototo theInputChatPhoto. - 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 the field
- Added support for message threads in supergroups and channel comments:
- Added the field
message_thread_idto the classmessage. - 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_infoto the classmessageInteractionInfo, containing information about message replies. - Added the field
can_get_message_threadto the classmessage. - 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_idto the methodssendMessage,sendMessageAlbumandsendInlineQueryResultMessagefor sending messages within a thread. - Added the parameter
message_thread_idto the methodsearchChatMessagesto search messages within a thread. - Added the parameter
message_thread_idto the methodviewMessages. - Added the parameter
message_thread_idto the methodsetChatDraftMessage. - Added the parameter
message_thread_idto the methodsendChatActionto send chat actions to a thread. - Added the field
message_thread_idto the updateupdateUserChatAction.
- Added the field
- Improved support for message albums:
- Added support for sending and receiving messages of the types
messageAudioandmessageDocumentas albums. - Added automatic grouping into audio or document albums in the method
forwardMessagesif all forwarded or copied messages are of the same type. - Removed the parameter
as_albumfrom the methodforwardMessages. Forwarded message albums are now determined automatically.
- Added support for sending and receiving messages of the types
- 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
getPublicMessageLinkandgetMessageLinkinto the methodgetMessageLink, 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_commentto the methodgetMessageLink, which allows to get a message link to the message that opens it in a thread. - Removed the class
publicMessageLink. - Added the field
for_commentto the classmessageLinkInfo. - Added the separate method
getMessageEmbeddingCode, returning an HTML code for embedding a message.
- Added the class
- Added the ability to block private messages sent via the @replies bot from chats:
- Added the field
is_blockedto the classchat. - Added the update
updateChatIsBlocked. - Added the method
blockMessageSenderFromReplies. - Replaced the methods
blockUserandunblockUserwith the methodtoggleMessageSenderIsBlocked. - Replaced the method
getBlockedUserswith the methodgetBlockedMessageSenders.
- Added the field
- Added support for incoming messages which are replies to messages in different chats:
- Added the field
reply_in_chat_idto the classmessage. - The method
getRepliedMessagecan now return the replied message in a different chat.
- Added the field
- Renamed the class
sendMessageOptionstomessageSendOptions. - Added the new
tdapistatic library, which needs to be additionally linked in when static linking is used. - Changed the type of the field
valuein the classoptionValueIntegerfromint32toint64. - Changed the type of the field
descriptionin the classwebPagefromstringtoformattedText. - Improved Instant View support:
- Added the field
view_countto the classwebPageInstantView. - 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
textfrom the classrichTextAnchor. - Removed the field
urlwhich is no longer needed from the classwebPageInstantView.
- Added the field
- Allowed the update
updateServiceNotificationto 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
messageCopyOptionsand the fieldcopy_optionsto the classinputMessageForwarded. - Removed the fields
send_copyandremove_captionfrom the classinputMessageForwarded. - Allowed to replace captions in copied messages using the fields
replace_captionandnew_captionin the classmessageCopyOptions. - Allowed to specify
reply_to_message_idwhen sending a copy of a message. - Allowed to specify
reply_markupwhen sending a copy of a message.
- Added the class
- Allowed passing multiple input language codes to
searchEmojisby replacing the parameterinput_language_codewith the parameterinput_language_codes. - Added support for public service announcements:
- Added the class
ChatSourceand the fieldsourceto the classchatPosition. - Added the new type of chat source
chatSourcePublicServiceAnnouncement. - Added the field
public_service_announcement_typeto the classmessageForwardInfo.
- Added the class
- Added support for previewing of private supergroups and channels by their invite link.
- The field
chat_idin the classchatInviteLinkInfois now non-zero for private supergroups and channels to which the temporary read access is granted. - Added the field
accessible_forto the classchatInviteLinkInfo, containing the amount of time for which read access to the chat will remain available.
- The field
- Improved methods for message search:
- Replaced the field
next_from_search_idwith a string fieldnext_offsetin the classfoundMessages. - Added the field
total_countto the classfoundMessages; can be -1 if the total count of matching messages is unknown. - Replaced the parameter
from_search_idwith the parameteroffsetin the methodsearchSecretMessages. - Added the parameter
filterto the methodsearchMessages. - Added the parameters
min_dateandmax_dateto the methodsearchMessagesto search messages sent only within a particular timeframe.
- Replaced the field
- Added pkg-config file generation for all installed libraries.
- Added automatic operating system version detection. Use an empty field
system_versionin the classtdlibParametersfor the automatic detection. - Increased maximum file size from 1500 MB to 2000 MB.
- Added support for human-friendly Markdown formatting:
- Added the synchronous method
parseMarkdownfor human-friendly parsing of text entities. - Added the synchronous method
getMarkdownTextfor 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
inputMessageTextobjects.
- Added the synchronous method
- Added support for dice with random values in messages:
- Added the class
messageDiceto the types of message content; contains a dice. - Added the class
DiceStickers, containing animated stickers needed to show the dice. - Added the class
inputMessageDiceto 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 the class
- Added support for chat statistics in channels and supergroups:
- Added the field
can_get_statisticsto the classsupergroupFullInfo. - Added the class
ChatStatistics, which represents a supergroup or a channel statistics. - Added the method
getChatStatisticsreturning detailed statistics about a chat. - Added the classes
chatStatisticsMessageInteractionInfo,chatStatisticsAdministratorActionsInfo,chatStatisticsMessageSenderInfoandchatStatisticsInviterInforepresenting various parts of chat statistics. - Added the class
statisticalValuedescribing recent changes of a statistical value. - Added the class
StatisticalGraphdescribing a statistical graph. - Added the method
getStatisticalGraph, which can be used for loading asynchronous or zoomed in statistical graphs. - Added the class
dateRangerepresenting a date range for which statistics are available. - Removed the field
can_view_statisticsfrom the classsupergroupFullInfoand marked the methodgetChatStatisticsUrlas disabled and not working.
- Added the field
- 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_infoto the classmessage. - Added the update
updateMessageInteractionInfo. - Added the field
can_get_statisticsto the classmessage. - 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
viewsfrom the classmessage. - Removed the now superfluous update
updateMessageViews.
- Added the class
- Improved support for native polls:
- Added the field
explanationto the classpollTypeQuiz. - Added the fields
close_dateandopen_periodto the classpoll. - Added the fields
close_dateandopen_periodto the classinputMessagePoll; for bots only. - Increased maximum poll question length to 300 characters for bots.
- Added the field
- Added support for anonymous administrators in supergroups:
- Added the field
is_anonymousto the classeschatMemberStatusCreatorandchatMemberStatusAdministrator. - The field
author_signaturein the classmessagecan now contain a custom title of the anonymous administrator that sent the message.
- Added the field
- 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 typeinlineKeyboardButtonTypeCallbackWithPassword.
- Added the class
- 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 ifgetOption("is_location_visible")is true and location changes by more than 1 kilometer.
- Improved Notification API:
- Added the field
sender_nameto the classnotificationTypeNewPushMessage. - Added the writable option "disable_sent_scheduled_message_notifications" for disabling notifications about outgoing scheduled messages that were sent.
- Added the field
is_outgoingto the classnotificationTypeNewPushMessagefor recognizing outgoing scheduled messages that were sent. - Added the fields
has_audiosandhas_documentsto the classpushMessageContentMediaAlbum.
- Added the field
- Added the field
dateto the classdraftMessage. - Added the update
updateStickerSet, which is sent after a sticker set is changed. - Added support for pagination in trending sticker sets:
- Added the parameters
offsetandlimitto the methodgetTrendingStickerSets. - Changed the field
sticker_setsin the updateupdateTrendingStickerSetsto contain only the prefix of trending sticker sets.
- Added the parameters
- 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_detectionof the classinputMessageDocument. - Improved chat action bar:
- Added the field
can_unarchiveto the classeschatActionBarReportSpamandchatActionBarReportAddBlock, which is true whenever the chat was automatically archived. - Added the field
distanceto the classchatActionBarReportAddBlock, which denotes the distance between the users.
- Added the field
- 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.
- Added the class
- Supported attaching stickers to animations:
- Added the field
has_stickersto the classanimation. - Added the field
added_sticker_file_idsto the classinputMessageAnimation.
- Added the field
- 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
phonenumberinfoand the methodgetPhoneNumberInfo, which can be used to format a phone number according to local rules.
- Added the class
- Improved location support:
- Added the field
horizontal_accuracyto the classlocation. - Added the field
headingto the classesmessageLocationandinputMessageLocationfor live locations. - Added the parameter
headingto the methodseditMessageLiveLocationandeditInlineMessageLiveLocation.
- Added the field
- Added support for proximity alerts in live locations:
- Added the field
proximity_alert_radiusto the classesmessageLocationandinputMessageLocation. - Added the parameter
proximity_alert_radiusto the methodseditMessageLiveLocationandeditInlineMessageLiveLocation. - Added the new message content
messageProximityAlertTriggered, received whenever a proximity alert is triggered.
- Added the field
- Added
CentOS 7andCentOS 8operating systems to the TDLib build instructions generator. - 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_sizesto the classphototo allow partial progressive JPEG photo download. - Added the field
redirect_stderrto the classlogStreamFileto 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_notificationoption 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_statisticsto the methodoptimizeStorageto 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
supergroupMembersFilterMentionfor the methodgetSupergroupMembers. - Added the new filter
chatMembersFilterMentionfor the methodsearchChatMembers.
- Added the new filter
- Added support for highlighting bank card numbers:
- Added the new text entity
textEntityTypeBankCardNumber. - Added the classes
bankCardInfoandbankCardActionOpenUrl, containing information about a bank card. - Added the method
getBankCardInfo, returning information about a bank card.
- Added the new text entity
- 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
inputStickertoinputStickerStatic. - Renamed the field
png_stickertostickerin the classinputStickerStatic.
- Added the method
- Added the method
setCommandsfor bots. - Added the method
getCallbackQueryMessagefor bots. - Added support for starting bots in private chats through
sendBotStartMessage. - Added the field
total_countto the classchats. The field should have a precise value for the responses of the methodsgetChats,searchChatsandgetGroupsInCommon. - Added the update
updateAnimationSearchParameters, containing information about animation search parameters. - Documented that
getRepliedMessagecan be used to get a pinned message, a game message, or an invoice message for messages of the typesmessagePinMessage,messageGameScore, andmessagePaymentSuccessfulrespectively. - Added guarantees that the field
member_countin the classsupergroupis known if the supergroup was received from the methodssearchChatsNearby,getInactiveSupergroupChats,getSuitableDiscussionChats,getGroupsInCommon, orgetUserPrivacySettingRules. - 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
emsdkversion fortdwebbuilding 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 bechatListMainorchatListArchive. - Added the field
chat_listto the classchat, denoting the chat list to which the chat belongs. - Added the parameter
chat_listto the methodsgetChats,searchMessagesandsetPinnedChats. - Added the field
chat_listto the updatesupdateUnreadMessageCountandupdateUnreadChatCount. - Added the field
total_countto the updateupdateUnreadChatCount, 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_maxfor the maximum number of pinned chats in the Archive chat list.
- Added the class
- Added support for scheduled messages:
- Added the classes
messageSchedulingStateSendAtDateandmessageSchedulingStateSendWhenOnline, representing the scheduling state of a message. - Added the field
scheduling_stateto the classmessage, which allows to distinguish between scheduled and ordinary messages. - The update
updateNewMessagecan now contain a scheduled message and must be handled appropriately. - The updates
updateMessageContent,updateDeleteMessages,updateMessageViews,updateMessageSendSucceeded,updateMessageSendFailed, andupdateMessageSendAcknowledgedcan 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_notificationandfrom_backgroundin the methodssendMessage,sendMessageAlbum,sendInlineQueryResultMessage, andforwardMessageswith the new fieldoptionsof the typesendMessageOptions. - 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_messagesto the classchat. - Added the update
updateChatHasScheduledMessages, which is sent whenever the fieldhas_scheduled_messageschanges in a chat. - Added support for reminders in Saved Messages and notifications about other sent scheduled messages in the Notification API.
- Added the classes
- Added support for adding users without a known phone number to the list of contacts:
- Added the method
addContactfor adding or renaming contacts without a known phone number. - Added the field
need_phone_number_privacy_exceptionto the classuserFullInfo, containing the default value for the second parameter of the methodaddContact. - Added the fields
is_contactandis_mutual_contactto the classuser. - Removed the class
LinkStateand the fieldsoutgoing_linkandincoming_linkfrom the classuser.
- Added the method
- Improved support for the top chat action bar:
- Added the class
ChatActionBar, representing all possible types of the action bar. - Added the field
action_barto the classchat. - Removed the legacy class
chatReportSpamState. - Removed the legacy methods
getChatReportSpamStateandchangeChatReportSpamState. - 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
chatReportReasonUnrelatedLocationfor reporting location-based groups unrelated to their stated location.
- Added the class
- Improved support for text entities:
- Added the new types of text entities
textEntityTypeUnderlineandtextEntityTypeStrikethrough. - 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
versionto the methodtextParseModeMarkdown. 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 the new types of text entities
- 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
pollTypeRegularandpollTypeQuiz, representing the possible types of a poll. - Added the field
typeto the classespollandinputMessagePoll. - Added support for non-anonymous polls with visible votes by adding the field
is_anonymousto the classespollandinputMessagePoll. - Added the method
getPollVotersreturning users that voted for the specified option in a non-anonymous poll. - Added the new reply markup keyboard button
keyboardButtonTypeRequestPoll. - Added the field
is_regularto the classpushMessageContentPoll. - Added the update
updatePollAnswerfor bots only. - Added the field
is_closedto the classinputMessagePoll, 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_titletochatMemberStatusCreatorandchatMemberStatusAdministratorclasses. - Added the classes
chatAdministratorandchatAdministrators, containing user identifiers along with their custom administrator title and owner status. - Replaced the result type of the method
getChatAdministratorswithchatAdministrators.
- Added the field
- Improved Instant View support:
- Added the new web page block
pageBlockVoiceNote. - Changed value of invisible cells in
pageBlockTableCellto null. - Added the field
is_cachedto the classrichTextUrl.
- Added the new web page block
- Improved support for chat backgrounds:
- Added the classes
backgroundFillSolidfor solid color backgrounds andbackgroundFillGradientfor 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
colorin the classbackgroundTypePatternwith the fieldfillof typeBackgroundFill. - Replaced the class
backgroundTypeSolidwith the classbackgroundTypeFill.
- Added the classes
- Added support for discussion groups for channel chats:
- Added the field
linked_chat_idto the classsupergroupFullInfocontaining 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_chatto the classsupergroup. - 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
chatEventLinkedChatChangedrepresenting a change of the linked chat in the chat event log.
- Added the field
- Added support for slow mode in supergroups:
- Added the field
is_slow_mode_enabledto the classsupergroup. - Added the field
slow_mode_delayto the classsupergroupFullInfo. - Added the method
setChatSlowModeDelay, which can be used to change the slow mode delay setting in a supergroup. - Added the class
chatEventSlowModeDelayChangedrepresenting a change of the slow mode delay setting in the chat event log.
- Added the field
- Improved privacy settings support:
- Added the classes
userPrivacySettingRuleAllowChatMembersanduserPrivacySettingRuleRestrictChatMembersto include or exclude all group members in a privacy setting rule. - Added the class
userPrivacySettingShowPhoneNumberfor managing the visibility of the user's phone number. - Added the class
userPrivacySettingAllowFindingByPhoneNumberfor managing whether the user can be found by their phone number.
- Added the classes
- Added the method
checkCreatedPublicChatsLimitfor 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
CanTransferOwnershipResultand the methodcanTransferOwnershipfor checking whether chat ownership can be transferred from the current session.
- Added the method
- Added support for location-based supergroups:
- Added the class
chatLocation, which contains the location to which the supergroup is connected. - Added the field
has_locationto the classsupergroup. - Added the field
locationto the classsupergroupFullInfo. - Added the ability to create location-based supergroups via the new field
locationin the methodcreateNewSupergroupChat. - Added the method
setChatLocation, which allows to change location of location-based supergroups. - Added the field
can_set_locationto the classsupergroupFullInfo. - Added the class
PublicChatType, which can be one ofpublicChatTypeHasUsernameorpublicChatTypeIsLocationBased. - Added the parameter
typeto the methodgetCreatedPublicChats, which allows to get location-based supergroups owned by the user. - Supported location-based supergroups as public chats where appropriate.
- Added the class
chatEventLocationChangedrepresenting a change of the location of a chat in the chat event log.
- Added the class
- Added support for searching chats and users nearby:
- Added the classes
chatNearbyandchatsNearby, 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 successfulsearchChatsNearbyrequest.
- Added the classes
- Improved support for inline keyboard buttons of the type
inlineKeyboardButtonTypeLoginUrl:- Added the class
LoginUrlInfoand the methodgetLoginUrlInfo, which allows to get information about an inline button of the typeinlineKeyboardButtonTypeLoginUrl. - Added the method
getLoginUrlfor automatic authorization on the target website.
- Added the class
- Improved support for content restrictions:
- The field
restriction_reasonin the classesuserandchannelnow 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_reasonto the classmessage. 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 optionignore_sensitive_content_restrictionscan be changed.
- The field
- Added support for QR code authentication for already registered users:
- Added the authorization state
authorizationStateWaitOtherDeviceConfirmation. - Added the method
requestQrCodeAuthentication, which can be used in theauthorizationStateWaitPhoneNumberstate instead of the methodsetAuthenticationPhoneNumberto request QR code authentication. - Added the method
confirmQrCodeAuthenticationfor authentication confirmation from another device.
- Added the authorization state
- Added the update
updateMessageLiveLocationViewed, which is supposed to trigger an edit of the corresponding live location. - Added the parameter
input_language_codeto the methodsearchEmojis. - 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_idto the classremoteFile, 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_silentto the classnotification, so silent notifications can be shown with the appropriate mark. - Added the field
video_upload_bitrateto the classautoDownloadSettings. - Disallowed to call
setChatNotificationSettingsmethod 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 afterauthorizationStateWaitCodefor users who are not registered yet. - Added the method
registerUser, which must be used in theauthorizationStateWaitRegistrationstate to finish registration of the user. - Removed the fields
is_registeredandterms_of_servicefrom the classauthorizationStateWaitCode. - Removed the parameters
first_nameandlast_namefrom the methodcheckAuthenticationCode.
- Added the state
- 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
chatPermissionscontaining all supported permissions, including new permissionscan_send_polls,can_change_info,can_invite_usersandcan_pin_messages. - Added the field
permissionsto the classchat, describing actions that non-administrator chat members are allowed to take in the chat. - Added the update
updateChatPermissions. - Added the method
setChatPermissionsfor changing chat permissions. - Added the class
chatEventPermissionsChangedrepresenting 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_previewsin the classchatMemberStatusRestrictedwith the fieldpermissionsof the typechatPermissions. - Removed the field
everyone_is_administratorfrom thebasicGroupclass in favor of the fieldpermissionsof the classchat. - Removed the field
anyone_can_invitefrom thesupergroupclass in favor of the fieldpermissionsof the classchat. - Removed the method
toggleBasicGroupAdministratorsin favor ofsetChatPermissions. - Removed the method
toggleSupergroupInvitesin favor ofsetChatPermissions. - Renamed the field
anyone_can_invitetocan_invite_usersin the classchatEventInvitesToggled. - The permissions
can_send_other_messagesandcan_add_web_page_previewsnow imply onlycan_send_messagesinstead ofcan_send_media_messages. - Allowed administrators in basic groups to use the method
generateChatInviteLink.
- Added the class
- Added out of the box
OpenBSDandNetBSDoperating systems support. - Added possibility to use
LibreSSL>= 2.7.0 instead ofOpenSSLto build TDLib. - Added instructions for building TDLib on
Debian 10,OpenBSDandNetBSDto the TDLib build instructions generator. - Added support for Backgrounds 2.0:
- Added the classes
BackgroundType,background,backgroundsandInputBackground. - Added the method
getBackgroundreturning the list of backgrounds installed by the user. - Added the method
setBackgroundfor 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
removeBackgroundfor removing a background from the list of installed backgrounds. - Added the method
resetBackgroundsfor restoring the default list of installed backgrounds. - Added the method
searchBackgroundreturning a background by its name. - Added the method
getBackgroundUrlreturning a persistent URL for a background. - Removed the
getWallpapersmethod. - Removed the
wallpaperand thewallpapersclasses. - The class
fileTypeWallpapercan be used for remote file identifiers of both old wallpapers and new backgrounds.
- Added the classes
- Added support for descriptions in basic groups:
- Added the field
descriptionto the classbasicGroupFullInfo. - Replaced the method
setSupergroupDescriptionwithsetChatDescriptionwhich can be used for any chat type.
- Added the field
- Added support for emoji suggestions:
- Added the method
searchEmojisfor 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
stickerEmojistoemojis.
- Added the method
- Changed type of the fields
old_photoandnew_photoin the classchatEventPhotoChangedfromchatPhototophoto. - Changed recommended size for
inputThumbnailfrom 90x90 to 320x320. - Combined all supported settings for phone number authentication:
- Added the class
phoneNumberAuthenticationSettingswhich contains all the settings. - Replaced the parameters
is_current_phone_numberandallow_flash_callin the methodssetAuthenticationPhoneNumber,sendPhoneNumberConfirmationCode,sendPhoneNumberVerificationCodeandchangePhoneNumberwith the parametersettingsof the typephoneNumberAuthenticationSettings. - Added support for automatic SMS code verification for official applications via the new field
allow_app_hashin the classphoneNumberAuthenticationSettings.
- Added the class
- Added support for auto-download settings presets.
- Added the classes
autoDownloadSettingsandautoDownloadSettingsPresets. - Added the method
getAutoDownloadSettingsPresetsfor getting the settings. - Added the method
setAutoDownloadSettings, which needs to be called whenever the user changes the settings.
- Added the classes
- Added support for minithumbnails - thumbnail images of a very poor quality and low resolution:
- Added the class
minithumbnail. - Added the field
minithumbnailtoanimation,document,photo,videoandvideoNoteclasses. - Added the field
audio_cover_minithumbnailto the classaudio.
- Added the class
- Added support for resending messages which failed to send:
- Added the fields
error_code,error_message,can_retryandretry_afterto the classmessageSendingStateFailed. - Added the method
resendMessages.
- Added the fields
- Added the field
is_animatedto thesticker,stickerSetandstickerSetInfoclasses. Animated stickers can be received anywhere where non-animated stickers can appear. - Added the parameters
send_copyandremove_captionto theforwardMessagesmethod to allow forwarding of messages without links to the originals. - Added the fields
send_copyandremove_captiontoinputMessageForwardedmethod to allow forwarding of a message without link to the original message. - Added the method
getMessageLinkInfofor getting information about a link to a message in a chat. - Added the class
userPrivacySettingShowProfilePhotofor managing visibility of the user's profile photo. - Added the class
userPrivacySettingShowLinkInForwardedMessagesfor managing whether a link to the user's account is included with forwarded messages. - Added the field
thumbnailto the classesstickerSetandstickerSetInfo, containing a thumbnail for the sticker set. - Added the field
is_scamto the classesuserandsupergroup. - Added a new kind of inline keyboard button
inlineKeyboardButtonTypeLoginUrl, which for the moment must be processed in the same way as aninlineKeyboardButtonTypeUrl. - Added the new class
supergroupMembersFilterContacts, allowing to only search for contacts ingetSupergroupMembers. - Added the new class
chatMembersFilterContacts, allowing to only search for contacts insearchChatMembers. - Added the class
chatEventPollStoppedrepresenting 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
sendCallRatingand the new classCallProblem. - Changes in tdweb:
- Supported non-zero
offsetandlimitinreadFilePart.
- Supported non-zero
Changes in 1.4.0 (1 May 2019):
- Added a TDLib build instructions generator, 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_executeinstead 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
offsetparameter todownloadFilewhich specifies the starting position from which the file should be downloaded. - Added the
limitparameter todownloadFilewhich specifies how many bytes should be downloaded starting from theoffsetposition. - Added the field
download_offsetto the classlocalFilewhich contains the current download offset. - The field
downloaded_prefix_sizeof thelocalFileclass now contains the number of available bytes from the positiondownload_offsetinstead of from the beginning of the file. - Added the method
getFileDownloadedPrefixSizewhich can be used to get the number of locally available file bytes from a given offset without actually changing the download offset.
- Added the
- Added the parameter
synchronoustodownloadFilewhich causes the request to return the result only after the download is completed. - Added support for native polls in messages:
- Added
messagePollto the types of message content; contains a poll. - Added the classes
pollandpollOptiondescribing a poll and a poll answer option respectively. - Added
inputMessagePollto the types of new input message content; can be used to send a poll. - Added the method
setPollAnswerwhich can be used for voting in polls. - Added the method
stopPollwhich can be used to stop polls. Use theMessage.can_be_editedfield to check whether this method can be called on a message. - Added the update
updatePollfor bots only. Ordinary users receive poll updates throughupdateMessageContent.
- Added
- Added a Notification API. See article https://core.telegram.org/tdlib/notification-api for a detailed description.
- Added the class
pushReceiverIdwhich contains a globally unique identifier of the push notification subscription. - Changed the return type of the method
registerDevicetopushReceiverIdto allow matching of push notifications with TDLib instances. - Removed the fields
disable_notificationandcontains_mentionfromupdateNewMessage. - Renamed the class
deviceTokenGoogleCloudMessagingtodeviceTokenFirebaseCloudMessaging. - Added the field
encryptto classesdeviceTokenApplePushVoIPanddeviceTokenFirebaseCloudMessagingwhich allows to subscribe for end-to-end encrypted push notifications. - Added the option
notification_group_count_maxwhich 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_maxwhich can be used to set the maximum number of simultaneously shown notifications in a group. - Added the synchronous method
getPushReceiverIdfor matching a push notification with a TDLib instance. - Added the method
processPushNotificationfor handling of push notifications. - Removed the method
processDcUpdatein favor of the generalprocessPushNotificationmethod. - Added the update
updateNotificationGroup, sent whenever a notification group changes. - Added the update
updateNotification, sent whenever a notification changes. - Added the update
updateActiveNotificationsfor syncing the list of active notifications on startup. - Added the update
updateHavePendingNotificationswhich 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_notificationsin the classchatNotificationSettingsand the new settingdisable_pinned_message_notificationsin the classscopeNotificationSettings. - Added the possibility to disable special handling of notifications about mentions and replies via the new settings
use_default_disable_mention_notifications,disable_mention_notificationsin the classchatNotificationSettingsand the new settingdisable_mention_notificationsin the classscopeNotificationSettings. - Added the class
PushMessageContentdescribing the content of a notification, received through a push notification. - Added the class
NotificationTypedescribing a type of notification. - Added the class
notificationcontaining information about a notification. - Added the class
NotificationGroupTypedescribing a type of notification group. - Added the class
notificationGroupdescribing a state of a notification group. - Added the methods
removeNotificationandremoveNotificationGroupfor handling notifications removal by the user. - Added the separate notification scope
notificationSettingsScopeChannelChatsfor channel chats.
- Added the class
- Added support for pinned notifications in basic groups and Saved Messages:
- Added the field
pinned_message_idto the classchat. - Removed the field
pinned_message_idfrom the classsupergroupFullInfoin favor ofchat.pinned_message_id. - Added the update
updateChatPinnedMessage. - The right
can_pin_messagesis now applicable to both basic groups and supergroups. - Replaced the method
pinSupergroupMessagewithpinChatMessagewhich can be used for any chat type. - Replaced the method
unpinSupergroupMessagewithunpinChatMessagewhich can be used for any chat type.
- Added the field
- 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
setLogStreamfor changing the stream to which the TDLib internal log is written. - Added the synchronous method
getLogStreamfor getting information about the currently used log stream. - Added the classes
logStreamDefault,logStreamFileandlogStreamEmptydescribing different supported kinds of log streams. - Added the class
logVerbosityLevelcontaining the verbosity level of the TDLib internal log. - Added the class
logTagscontaining a list of available TDLib internal log tags. - Added the synchronous method
setLogVerbosityLevelfor changing verbosity level of logging. - Added the synchronous method
getLogVerbosityLevelfor getting the current verbosity level of logging. - Added the synchronous method
getLogTagsreturning all currently supported log tags. - Added the synchronous method
setLogTagVerbosityLevelfor changing the verbosity level of logging for some specific part of the code. - Added the synchronous method
getLogTagVerbosityLevelfor getting the current verbosity level for a specific part of the code. - Added the synchronous method
addLogMessagefor using the TDLib internal log by the application.
- Added the synchronous method
- Added support for Instant View 2.0:
- Replaced the field
has_instant_viewin classwebPagewith theinstant_view_versionfield. - Added the field
versionto the classwebPageInstantView. - Added the class
pageBlockCaption. - Changed the type of
captionfields inpageBlockAnimation,pageBlockAudio,pageBlockPhoto,pageBlockVideo,pageBlockEmbedded,pageBlockEmbeddedPost,pageBlockCollageandpageBlockSlideshowfromRichTexttopageBlockCaption. - Added the class
pageBlockListItemand replaced the content of thepageBlockListclass with a list ofpageBlockListItem. - Added 6 new kinds of
RichText:richTextSubscript,richTextSuperscript,richTextMarked,richTextPhoneNumber,richTextIconandrichTextAnchor. - Added new classes
pageBlockRelatedArticle,PageBlockHorizontalAlignment,PageBlockVerticalAlignmentandpageBlockTableCell. - Added new block types
pageBlockKicker,pageBlockRelatedArticles,pageBlockTable,pageBlockDetailsandpageBlockMap. - Added the flag
is_rtlto the classwebPageInstantView. - Renamed the field
captionin classespageBlockBlockQuoteandpageBlockPullQuotetocredit. - Dimensions in
pageBlockEmbeddedcan now be unknown. - Added the field
urltopageBlockPhotowhich contains a URL that needs to be opened when the photo is clicked. - Added the field
urltowebPageInstantViewwhich must be used for the correct handling of anchors.
- Replaced the field
- Added methods for confirmation of the 2-step verification recovery email address:
- Added the method
checkRecoveryEmailAddressCodefor checking the verification code. - Added the method
resendRecoveryEmailAddressCodefor resending the verification code. - Replaced the field
unconfirmed_recovery_email_address_patternin the classpasswordStatewith therecovery_email_address_code_infofield containing full information about the code. - The necessity of recovery email address confirmation in
setPasswordandsetRecoveryEmailAddressmethods is now returned by the correspondingpasswordStateand not by the errorEMAIL_UNCONFIRMED.
- Added the method
- Improved the
MessageForwardInfoclass and added support for hidden original senders:- Removed the old
messageForwardedPostandmessageForwardedFromUserclasses. - Added the class
messageForwardInfowhich 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,messageForwardOriginHiddenUserandmessageForwardOriginChannelwhich describe the exact origins of a message.
- Removed the old
- Improved getting the list of user profile photos:
- Added the class
userProfilePhoto, containingid,added_dateandsizesof a profile photo. - Changed the type of the field
photosinuserProfilePhotosto a list ofuserProfilePhotoinstead of a list ofphoto.getUserProfilePhotosnow returns a date for each profile photo. - Removed the field
idfrom the classphoto(this field was only needed in the result ofgetUserProfilePhotos).
- Added the class
- Added the possibility to get a Telegram Passport authorization form before asking the user for a password:
- Removed the parameter
passwordfrom the methodgetPassportAuthorizationForm. - Moved the fields
elementsanderrorsfrom the classpassportAuthorizationFormto the new classpassportElementsWithErrors. - Added the method
getPassportAuthorizationFormAvailableElementsthat takes the user's password and returns previously uploaded Telegram Passport elements and errors in them.
- Removed the parameter
- Added the field
file_indexto the classespassportElementErrorSourceFileandpassportElementErrorSourceTranslationFile. - Added the method
getCurrentStatereturning all updates describing the currentTDLibstate. It can be used to restore the correct state after connecting to a running TDLib instance. - Added the class
updateswhich contains a list of updates and is returned by thegetCurrentStatemethod. - Added the update
updateChatOnlineMemberCountwhich 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 classlanguagePackInfo`. 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_urlto the classlanguagePackInfo. - Added the method
addCustomServerLanguagePackwhich adds a custom server language pack to the list of installed language packs. - Added the method
getLanguagePackInfowhich can be used for handlinghttps://t.me/setlanguage/...links. - Added the method
synchronizeLanguagePackwhich 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
deleteLanguagePacknow also removes the language pack from the list of installed language packs.
- Added the fields
- Added the method
getChatNotificationSettingsExceptionswhich can be used to get chats with non-default notification settings. - Added the parameter
hide_via_bottosendInlineQueryResultMessagewhich can be used forgetOption("animation_search_bot_username"),getOption("photo_search_bot_username")andgetOption("venue_search_bot_username")bots to hide that the message was sent via the bot. - Added the class
chatReportReasonChildAbusewhich can be used to report a chat for child abuse. - Added the method
getMessageLocallywhich returns a message only if it is available locally without a network request. - Added the method
writeGeneratedFilePartwhich can be used to write a generated file if there is no direct access to TDLib's file system. - Added the method
readFilePartwhich can be used to read a file from the TDLib file cache. - Added the class
filePartto represent the result of the newreadFilePartmethod. - Added the field
log_sizeto thestorageStatisticsFastclass which contains the size of the TDLib internal log. Previously the size was included into the value of thedatabase_sizefield. - Added the field
language_pack_database_sizeto thestorageStatisticsFastclass which contains the size of the language pack database. - Added the field
is_supportto the classuserwhich can be used to identify Telegram Support accounts. - Added the class
HttpUrlencapsulating an HTTP URL. - Added the method
getMessageLinkwhich 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_statisticsto thesupergroupFullInfoclass. - Added the method
getChatStatisticsUrlwhich returns a URL with the chat statistics.
- Added the field
- Added support for server-side peer-to-peer calls privacy:
- Added the class
userPrivacySettingAllowPeerToPeerCallsfor managing privacy. - Added the field
allow_p2ptocallStateReadyclass which must be used to determine whether a peer-to-peer connection can be used.
- Added the class
- Added the option
ignore_background_updateswhich 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_pendingin thesessionclass. TDLib guarantees that the sessions will be returned by thegetActiveSessionsmethod in the correct order. - Added the classes
JsonValueandjsonObjectMemberwhich represent a JSON value and a member of a JSON object respectively as TDLib API objects. - Added the synchronous methods
getJsonValueandgetJsonStringfor simple conversion between a JSON-encoded string andJsonValueTDLib API class. - Added the methods
getApplicationConfigandsaveApplicationLogEventto be used for testing purposes. - Added the temporarily class
databaseStatisticsand the methodgetDatabaseStatisticsfor rough estimations of database tables size in a human-readable format. - Made the method
Client.Executestatic in .NET interface. - Removed the
on_closedcallback 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 were moved from
android.support.toandroidx.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.
- Updated SDK to SDK 28 in which helper classes were moved from
- Added out of the box
FreeBSDsupport. - Significantly improved TDLib compilation time and decreased compiler RAM usage:
- In native C++ interface
td_api::object_ptris now a simple homebrew const-propagating class instead ofstd::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.
- In native C++ interface
- The update
updateOptionwith theversionoption 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
revoketo the methoddeleteChatHistory; use it to delete chat history for all chat members. - Added the fields
can_be_deleted_only_for_selfandcan_be_deleted_for_all_usersto the classchatwhich can be used to determine for whom the chat can be deleted through thedeleteChatHistorymethod. - The fields
Message.can_be_deleted_only_for_selfandMessage.can_be_deleted_for_all_userscan still be used to determine for whom the message can be deleted through thedeleteMessagesmethod.
- Added the parameter
- Added support for server-generated notifications about newly registered contacts:
- Setting the option
disable_contact_registered_notificationsnow affects all user sessions. When the option is enabled, the client will still receivemessageContactRegisteredmessage 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.
- Setting the option
- 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_limitparameter of theaddChatMembermethod 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
setFileGenerationProgressto restart the generation from the beginning. - Added a check for modification time of original file in
inputFileGeneratedwhenever 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
changeImportedContactswhich now also deletes contacts of users without Telegram accounts from the server. - Added the ability to call
getStorageStatisticsbefore authorization. - Allowed to pass
limit= -offsetfor negative offset in thegetChatHistorymethod. - Changed the recommended
inputThumbnailsize to be at most 320x320 instead of the previous 90x90. - Disabled building by default of the native C interface. Use
cmake --build . --target tdcto 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 in different programming languages.
- Added a 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,removeProxyandgetProxieswere added instead ofsetProxyandgetProxy. - Added the method
pingProxywhich 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
getProxyLinkwhich 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
notificationSettingsclass was split intochatNotificationSettingsandscopeNotificationSettings. - Only two notification settings scopes are left:
notificationSettingsScopePrivateChatswhich is responsible for default notification settings for private and secret chats andnotificationSettingsScopeGroupChatsfor all other chats. updateNotificationSettingswas split intoupdateChatNotificationSettingsandupdateScopeNotificationSettings.setNotificationSettingswas split intosetChatNotificationSettingsandsetScopeNotificationSettings.getNotificationSettingswas replaced withgetScopeNotificationSettings.
- The
- Added the field
filterto thesearchChatMembersmethod to support searching among administrators, bots, restricted and banned members. - Added the ability to use synchronous requests and
setAlarmbefore 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,
setNetworkTypecan be used to disable the network for TDLib before the library tries to use it;addProxycan be used to add a proxy before any network activity; orsetOption("use_pfs")can be used to guarantee that PFS is used for all requests. - Added support for tg:// links in
inlineKeyboardButtonTypeUrlandtextEntityTypeTextUrl. - Added the ability to call
deleteAccountin theauthorizationStateWaitPasswordauthorization state. - Added the ability to call
checkAuthenticationCodewith an emptyfirst_namefor unregistered users to check the code validity. - Added the methods
editMessageMediaandeditInlineMessageMediafor editing media messages content. - Renamed the class
shippingAddresstoaddress. - Changed the return value of the
requestPasswordRecoverymethod frompasswordRecoveryInfotoemailAddressAuthenticationCodeInfo. - Added support for sponsored channels promoted by MTProto-proxies:
- Added the field
is_sponsoredto thechatclass. - Added
updateChatIsSponsored, sent when this field changes.
- Added the field
- Added support for marking chats as unread:
- Added the field
is_marked_as_unreadtochat. - Added the update
updateChatIsMarkedAsUnread. - Added the method
toggleChatIsMarkedAsUnread.
- Added the field
- Added support for a default value of
disable_notification, used when a message is sent to the chat:- Added the field
default_disable_notificationtochatclass. - Added the update
updateChatDefaultDisableNotification. - Added the method
toggleChatDefaultDisableNotification.
- Added the field
- Added the field
vcardto thecontactclass. - Added the field
typetovenue, 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
addLocalMessagefor adding a local message to a chat. - Added the method
getDeepLinkInfo, which can return information abouttg://links that are not supported by the client. - Added support for language packs:
- Added the writable option
language_pack_database_pathwhich 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_targetfor setting up a name for the current localization target (currently supported: "android", "android_x", "ios", "macos" and "tdesktop"). - Added the writable option
language_pack_idfor 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
LanguagePackStringValuedescribing the possible values of a string from a language pack. - Added the class
languagePackStringdescribing a string from a language pack. - Added the class
languagePackStringscontaining a list of language pack strings. - Added the class
languagePackInfocontaining information about a language pack from a localization target. - Added the class
localizationTargetInfocontaining information about a localization target. - Added the update
updateLanguagePackStringswhich is sent when some strings in a language pack have changed. - Added the synchronous method
getLanguagePackStringwhich can be used to get a language pack string from the local database. - Added the method
getLocalizationTargetInfowhich returns information about the current localization target. - Added the method
getLanguagePackStringswhich returns some or all strings from a language pack, possibly fetching them from the server. - Added the method
setCustomLanguagePackfor adding or editing a custom language pack. - Added the method
editCustomLanguagePackInfofor editing information about a custom language pack. - Added the method
setCustomLanguagePackStringfor adding, editing or deleting a string in a custom language pack. - Added the method
deleteLanguagePackfor deleting a language pack from the database. - Added the read-only option
suggested_language_pack_idcontaining the identifier of the language pack, suggested for the user by the server.
- Added the writable option
- Added support for Telegram Passport:
- Added two new message contents
messagePassportDataSentfor ordinary users andmessagePassportDataReceivedfor bots containing information about Telegram Passport data shared with a bot. - Added the new file type
fileTypeSecure. - Added the class
datedFilecontaining 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
PassportElementTypedescribing all supported types of Telegram Passport elements. - Added the class
PassportElementcontaining information about a Telegram Passport element. - Added the class
InputPassportElementcontaining information about a Telegram Passport element to save. - Added the classes
passportElementErrorandPassportElementErrorSourcedescribing an error in a Telegram Passport element. - Added the field
has_passport_datato thepasswordStateclass. - Added the methods
getPassportElement,getAllPassportElements,setPassportElement,deletePassportElementfor managing Telegram Passport elements. - Added the methods
getPassportAuthorizationFormandsendPassportAuthorizationFormused for sharing Telegram Passport data with a service via a bot. - Added the methods
sendPhoneNumberVerificationCode,resendPhoneNumberVerificationCodeandcheckPhoneNumberVerificationCodefor verification of a phone number used for Telegram Passport. - Added the methods
sendEmailAddressVerificationCode,resendEmailAddressVerificationCodeandcheckEmailAddressVerificationCodefor verification of an email address used for Telegram Passport. - Added the method
getPreferredCountryLanguagereturning a most popular language in a country. - Added the classes
inputPassportElementErrorandInputPassportElementErrorSourcefor bots describing an error in a Telegram Passport element. - Added the method
setPassportElementErrorsfor bots. - Added the class
encryptedPassportElementandencryptedCredentialsfor bots describing an encrypted Telegram Passport element.
- Added two new message contents
- Improved support for Telegram terms of service:
- Added the class
termsOfService, containing information about the Telegram terms of service. - Added the field
terms_of_servicetoauthorizationStateWaitCode. - Added the update
updateTermsOfServicecoming when new terms of service need to be accepted by the user. - Added the method
acceptTermsOfServicefor accepting terms of service. - Removed the method
getTermsOfService.
- Added the class
- Added the method
getMapThumbnailFilewhich can be used to register and download a map thumbnail file. - Added the methods
sendPhoneNumberConfirmationCode,resendPhoneNumberConfirmationCodeandcheckPhoneNumberConfirmationCodewhich can be used to prevent an account from being deleted. - Added the convenience methods
joinChatandleaveChatwhich can be used instead ofsetChatMemberStatusto manage the current user's membership in a chat. - Added the convenience method
getContactswhich can be used instead ofsearchContactsto get all contacts. - Added the synchronous method
cleanFileNamewhich removes potentially dangerous characters from a file name. - Added the method
getChatMessageCountwhich can be used to get the number of shared media. - Added the writable option
ignore_inline_thumbnailswhich 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_ipv6which can be used to prefer IPv6 connections over IPv4. - Added the writable option
disable_top_chatswhich can be used to disable support for top chats. - Added the class
chatReportReasonCopyrightfor reporting chats containing infringing content. - Added the method
clearAllDraftMessageswhich can be used to delete all cloud drafts. - Added the read-only options
message_text_length_maxandmessage_caption_length_max. - Added the read-only options
animation_search_bot_username,photo_search_bot_usernameandvenue_search_bot_usernamecontaining 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
webpextensions 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++/CLIandC++/CX. See using in .NET projects for more details. - Added a C# example. See README for build and usage instructions.
- Added a build and usage example of TDLib SDK for Universal Windows Platform. See README for detailed build and usage instructions. Also, see 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 for build and usage instructions.
- Added an example of building TDLib for iOS, watchOS, tvOS, and also macOS. See README for detailed build instructions.
- Added README to C++ and python examples.
- Link Time Optimization is disabled by default. Use
-DTD_ENABLE_LTO=ONCMake option and CMake >= 3.9 to enable it. updateNotificationSettingsis now automatically sent when the mute time expires for a chat.- Added automatic sending of a corresponding
chatActionwhen a file is being uploaded. updateUserChatActionwithchatActionCancelis now automatically sent when the timeout expires for an action.- Authorization states
authorizationStateWaitCodeandauthorizationStateWaitPasswordare now saved between library restarts for 5 minutes. - Added new message content type
messageWebsiteConnected. - Added new text entity types
textEntityTypeCashtagandtextEntityTypePhoneNumber. - Added new update
updateUnreadMessageCount, enabled when message database is used. - Method
joinChatByInviteLinknow returns the joinedchat. - Method
getWebPagePreviewnow acceptsformattedTextinstead of plainstring. - Added field
phone_numbertoauthenticationCodeInfo, which contains a phone number that is being authenticated. - Added field
is_secrettomessageAnimation,messagePhoto,messageVideoandmessageVideoNoteclasses, which denotes whether the thumbnail for the content must be blurred and the content must be shown only while tapped. - Added field
expires_intomessageLocationfor live locations. - Added flag
can_be_reportedtochatclass. - Added flag
supports_streamingto classesvideoandinputMessageVideo. - Added parameter
message_idstoreportChat, which can be used to report specific messages. - Added method
checkChatUsernamefor 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
searchStickersto search by emoji for popular stickers suggested by the server. - Added method
searchStickerSetsto search by title and name for popular sticker sets suggested by the server. - Added method
searchInstalledStickerSetsto search by title and name for installed sticker sets. - Added methods for handling connected websites:
getConnectedWebsites,disconnectWebsiteanddisconnectAllWebsites. - Added method
getCountryCode, which uses current user IP address to identify their country. - Added option
t_me_url. - Fixed
BlackBerryspelling indeviceTokenBlackBerryPush. - Fixed return type of
getChatMessageByDatemethod, which isMessageand notMessages. - Ensured that updateOption("my_id") comes before
updateAuthorizationStatewithauthorizationStateReady. - 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_pathandtd_set_log_file_pathnow return whether they succeeded. - Added methods
td::Log::set_max_file_sizeandtd_set_log_max_file_sizefor restricting maximum TDLib log size. - Added methods
td::Log::set_fatal_error_callbackandtd_set_log_fatal_error_callbackfor providing callbacks on fatal errors. - JNI-bindings are now package-agnostic. Use CMake option
TD_ENABLE_JNIto enable JNI-bindings. - Added a Java example. See README for build and usage instructions.
- Added support for text entities in media captions.
- Added new type
formattedTextcontaining a text with entities. - Replaced all string fields
captionwith fields of typeformattedText. - Replaced fields
textandentitieswith the fieldtextof typeformattedTextin classmessageText. - Replaced fields
textandentitieswith the fieldtextof typeformattedTextin classinputMessageText. - Replaced fields
textandtext_entitieswith the fieldtextof typeformattedTextin classgame. - Removed field
parse_modefrom classinputMessageText. - Added synchronous method
parseTextEntities.
- Added new type
- 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
registerDevicemethod:- Added parameter
other_user_idsto methodregisterDeviceto 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 parameter
- Added method
searchChatsOnServeranalogous tosearchChats, but using server search. - Results from the
searchChatsOnServermethod are now excluded fromsearchPublicChatsresults, sosearchChatsOnServer(along withsearchContacts) should be called wheneversearchPublicChatsis called to ensure that no results were omitted. - Added parameter
as_albumto methodgetPublicMessageLinkto enable getting public links for media albums. - Added field
htmlto classpublicMessageLink, containing HTML-code for message/message album embedding. - Added parameter
only_if_pendingto methodcancelDownloadFileto allow keeping already started downloads. - Methods
createPrivateChat,createBasicGroupChat,createSupergroupChatandcreateSecretChatcan now be called without a prior call togetUser/getBasicGroup/getSupergroup/getSecretChat. - Added parameter
forceto methodscreatePrivateChat,createBasicGroupChatandcreateSupergroupChatto allow creating a chat without network requests. - Numerous optimizations and bug fixes.