Change log

На этой странице собраны основные изменения в дистрибутиве https://core.telegram.org/tdlib/tdlib.zip библиотеки TD с момента её первого выкладывания в публичный доступ.

02.11.2016#2 Небольшие исправления, улучшения документации и добавления:

  • Включена бета-поддержка секретных чатов. Стоит ожидать, что они будут создаваться с актуальными версиями приложений для iPhone, Android и на TDLib, в них будут приходить сообщения любых типов, и в них можно отправить сообщения любых типов с теми же ограничениями, что и в остальных клиентах.
  • Краткая документация классов, связанных с секретными чатами.

02.11.2016 Небольшие исправления, улучшения документации и добавления:

  • Исправлен NullPointerException при вызове toString у классов TdApi.
  • Исправлено падение при приходе сообщения с клавиатурой.
  • В TdApi.java добавлена Javadoc документация.
  • Для упрощения поддержки null-полей им добавлена @Nullable-аннотация (android.support.annotation.Nullable).

26.10.2016 Очень краткий список изменений, затрагивающий только видимые изменения в API:

  • Вместо некоторых объектов в поле класса теперь может быть null, если соответствующее поле отсутствует. В документации все соответствующие поля отмечены как nullable. Как следствие, убраны классы BotInfoEmpty, MessageNotForwarded, ReplyMarkupNone и MessageDeleted.
  • В поле File.persistentId теперь может быть HTTP URL. InputFilePersistentId может быть использован для отправки некоторых небольших файлов по их URL. В данный момент библиотека не умеет скачивать файлы по HTTP/HTTPS, поэтому если файл не скачан, а persistentId начинается с http:// или https://, приложению нужно самостоятельно скачать соответствующий файл вместо вызова DownloadFile.
  • Добавлена поддержка редактирования сообщений - методы EditMessageText и EditMessageCaption, апдейт UpdateEditMessage.
  • Добавлена поддержка игр: классы Game, MessageGame, MessageGameScore и InputMessageGame, новое действие в чате - SendMessageStartPlayGameAction.
  • Добавлены классы Contact и Venue, описывающие соответствующие содержимое сообщений, изменено содержимое классов MessageContact, MessageVenue, InputMessageContact и InputMessageVenue.
  • Добавлена поддержка инлайн-клавиатур и новых кнопок для отправки контакта и местоположения опльзователя: добавлены классы InlineKeyboardButton, KeyboardButton, ReplyMarkupInlineKeyboard, в ReplyMarkupShowKeyboard.rows вместо string кнопки задаются в виде KeyboardButton.
  • Добавлена поддержка callback-запросов: метод GetCallbackQueryAnswer
  • Добавлена поддержка черновиков: в классе Chat добавлено поле draftMessage, метод ChangeChatDraftMessage и апдейт UpdateChatDraftMessage, его обновляющие, в InputMessageText можно передать флаг clearDraft. Черновики, как и многое другое, влияют на ранжирование чатов, поэтому для правильного ранжирования важно, чтобы приложение сортировало чаты в точности по полю Chat.order.
  • Везде вместо Participant используется Member, вместо role - status.
  • Добавлена поддержка упоминания пользователей без username - класс MessageEntityMentionName.
  • Задокументировано ограничение на длину полей title, about, firstName, lastName (255 символов) и на длину caption (200 символов).
  • Поддержана история фотографий в чатах с помощью поиска сообщений с фильтром SearchMessagesFilterChatPhoto.
  • Существенно переработана работа с инлайн-ботами, подробнее в документации классов GetInlineQueryResults и InlineQueryResults.
  • Добавлена поддержка автоматического парсинга текста отправляемого сообщения, используя Markdon/HTML-разметку: поле InputMessageText.parseMode. Передавайте null, чтобы отправить text как есть или вручную передать entities.
  • При отправке анимаций, аудио, документов, стикеров и видео появилась поддержка тумб.
  • Добавлена поддержка акторизации с помощью flash-вызовов - пропущенных звонков, поступающих на телефон пользователя. Для этого в запросе SetAuthPhoneNumber добавлены параметры, allowFlashCall и isCurrentPhoneNumber, позволяющие разрешить этот тип авторизации.
  • В класс AuthStateWaitCode добавлена информация о том, зарегистрирован ли уже пользователь, информация о способе, которым пользователю был выслан код, а также каким следующим способом и через сколько код может быть выслан повторно.
  • Удалено состояние авторизации AuthStateWaitName, метод SetAuthName стал частью метода CheckAuthCode. Поля firstName и lastName при вызове CheckAuthCode следует указывать в точности, если пользователь не был зарегистрирован ранее.
  • Добавлена возможность попросить переслать авторизационный код другим способом - метод ResendAuthCode.
  • Вместо апдейтов UpdateMessageDate и UpdateMessageId добавлен более естественный апдейт UpdateMessageSendSucceeded. Теперь при отсылке сообщения, если оно удалено пользователем ещё до отправки явным запросом DeleteMessages, то клиенту не придёт об этом никаких апдейтов. Если оно удалено TDLib, например, из-за того что соответствующий чат не доступен даже для чтения, то придёт UpdateDeleteMessages с идентификатором сообщения. В противном случае придёт или UpdateMessageSendSucceeded или UpdateMessageSendFailed.
  • Добавлена возможность убирать/оставлять чат в списке диалогов при удалении всей истории сообщений - параметр removeFromChatList в DeleteChatHistory.
  • Добавлен метод GetChatMember для получения информации об одном из участников чата и его статусе в чате.
  • В классe Error поле description переименовано в message, в классе UpdateMessageSendFailed поле errorDescription переименовано в errorMessage.
  • В классе UpdateNewMessage добавлено поле disableNotification, по которому можно понимать, нужно ли показывать оповещение о сообщении.
  • В классе Message поле fromId переименовано в senderUserId, поле viaBotId переименовано в viaBotUserId, добавлено поле canBeEdited.
  • Классы MessageWebPage и MessageText объединены: в классе MessageText добавлено поле webPage.
  • Добавлен UpdateChatTopMessage, приходящий при изменении Chat.topMessage.
  • Добавлена возможность изменить номер авторизационного телефона - методы ChangePhoneNumber, ResendChangePhoneNumberCode, CheckChangePhoneNumberCode.
  • Добавлена возможность получать и изменять время самоуничтожения неактивного аккаунта: методы GetAccountTtl и ChangeAccountTtl.
  • Добавлена возможность получать список авторизаций пользователя и завершать другие авториразии: методы GetAuthorizations и DeleteAuthorization.
  • Добавлена возможность получать аккаунт поддержки - метод GetSupportUser.
  • Добавлена возможность получать фоновые обои - метод GetWallpapers.
  • Добавлен метод для полного удаления аккаунта - DeleteAccount. Стоит помнить, что новый аккаунт на один и тот же номер телефона можно регистировать не чаще одного раза в две недели.
  • Добавлена поддержка caption в MessageAudio и MessageVoice.
  • Добавлена поддержка запиненных сообщений в супергруппах: в классе ChannelFull добавлено поле pinnedMessageId, добавлены методы PinChannelMessage и UnpinChannelMessage, служебный тип сообщений MessagePinMessage.
  • Добавлен метод GetMessages, позволяющий получить с сервера сообщения по их идентификатору. Метод следует использовать для получения сообщений по ReplyToMessageId, PinMessageId и GameMessageId.
  • Методы SearchUser и SearchChannel объединены в SearchPublicChat.
  • Методы GetContacts и SearchContacts объединены в SearchContacts.
  • Добавлена возможность удалить один чат из списка недавно найденных - метод DeleteRecentlyFoundChat.
  • Добавлена возможность получить всех заблокированных данным пользователем пользователей и ботов - метод GetBlockedUsers.
  • В методе SetOption опции, начинающеся с x или X зарезервированы для клиента, их можно устанавливать и получать без ограничений, используя в качестве типизированного персистентного key-value хранилища. Тем не менее, не рекомендуется использовать это хранилище для чего-либо кроме небольшого количества опций, так как оно полностью загружается в память при старте приложения, что может привести к существенному увеличению времени запуска.
  • Поле Photo.photos переименовано в Photo.sizes.
  • В классе ChatInviteLinkInfo добавлены поля photo, member_count и members.
  • В классе WebPage добавлены поля audio, video и voice.
  • В классе Location поля latitude и longitude поменяны местами.
  • В классе UserTypeBot добавлено поле needLocation.
  • В классе UserFull добавлено поле about, добавлен метод ChangeAbout для изменения значения этого поля у текущего пользователя.
  • В классе GroupFull поле adminId переименовано в creatorUserId.
  • В классе Channel и методе CreateNewChannelChat убрано поле isBroadcast, потому что isBroadcast == !isSupergroup.
  • В классе ChannelFull поле adminCount переименовано в administratorCount, добавлено поле canSetUsername.
  • Добавлен UpdateChannelFull, который может приходить при изменении какой-либо информации в ChannelFull.
  • В классе Users добавлено поле totalCount, полезно при интерпретации результата запроса GetBlockedUsers.
  • В классе NotificationSettings поле showPreviews переименовано в showPreview.
  • В классе MessageChatJoinByLink поле inviterId переименовано в inviterUserId.
  • В методе GetChatHistory поле fromId переименовано в fromMessageId.
  • В методе CreateNewGroupChat поле participantIds переименовано в userIds.
  • В методе SearchChatMessages убран параметр importantOnly, в методах SendMessage, SendInlineQueryResultMessage, ForwardMessages убран параметр isPost.
  • В классе ChatParticipant вместо user отдаётся только userId, поле inviterId переименовано в inviterUserId. Стоит напомнить, что библиотека гарантирует, что если она знает о пользователе, группе, канале или чате, то она оповестила клиент об этом одним из апдейтов UpdateUser, UpdateGroup, UpdateChannel или UpdateChat. Если на стороне клиента есть неочищаемый кеш пользователей, групп, каналов и чатов, то запросы GetUser, GetGroup, GetChannel и GetChat для него бесполезны.
  • Методы ToggleGroupEditors, ChangeChannelUsername, ToggleChannelInvites, ToggleChannelSignMessages возвращают Ok вместо Group/Channel. Как и во всех других случаях изменения полей в Group/Channel придут клиенту соответствующими апдейтами.
  • Класс MessageForwardedFromChannel переименован в MessageForwardedPost, вместо поля channelId добавлено поле chatId, поле userId переименовано в senderUserId (как и в классе messageForwardedFromUser).
  • Добавлен метод SetAlarm, который вернёт Ok после истечения указанного промежутка времени.
  • Класс InputContact удалён в пользу Contact.
  • Класс Contacts удалён в пользу Users.
  • Убрана поддержка PhotoCrop.

08.03.2016 Исправлено падение в методе GetChatHistory.

05.03.2016 Усовершенствован метод GetChatHistory. Он теперь поддерживает получение истории сообщений, начиная с произвольного известного клиенту сообщения, если при этом результат запроса заведомо окажется рядом с известным сообщением. В частности, заведомо корректными являются запросы с -limit <= offset <= 0, если клиенту известно сообщение с идентификатором fromId. Также можно получить историю сообщений, передав в fromId идентификатор неизвестного клиенту сообщения, если окрестности этого сообщения заведомо будут присутствовать в результате запроса. В частности, это так, если -limit < offset < 0. Теперь метод GetChatHistory должен всегда возвращать правильный результат или ошибку.

02.03.2016 Появился поиск по префиксу среди пользователей-контактов (метод SearchContacts). Добавлен метод GetRecentInlineBots, позволяющий получить последних использованных inline-ботов. Появилась возможность искать по префиксу названия чаты в списке локально известных чатов пользователя (метод SearchChats). Поддержана работа со списком недавно найденных через поиск чатов. Можно получать этот список, передав в SearchChats пустой запрос, добавлять новые элементы в этот список, используя метод AddRecentlyFoundChat, и очищать список полностью, используя метод DeleteRecentlyFoundChats. На данный момент, поиск по префиксу чувствителен к регистру всех символов, кроме латиницы.

29.02.2016 Появилась возможность получать превью ссылки до отправки сообщения через метод GetWebPagePreview. Не стоит вызывать этот метод слишком часто. Добавлен метод SearchPublicChats для поиска публичных чатов по префиксу их username. Поле fromChannel во всех методах отправки сообщений переименовано в isPost. В классе Message добавлены поля isPost (на данный момент true в точности для всех сообщений в броадкаст-каналах) и editDate. Появилась поддержка сообщений в броадкаст-каналах с указанием автора сообщения. В класс Channel добавлено поле signMessages, отвечающее за указание автора при отправке сообщения и метод ToggleChannelSignMessages для его изменения. В классе User добавлено поле hasAccess. Если значение этого поля false, то с пользователем нельзя делать никаких активных действий. В данный момент, доступ может отсутствовать только к авторам сообщений в броадкаст-канале. Улучшено описание типов UpdateMessageSendFailed и InlineQueryResults. Из класса NotificationSettings удалено поле eventsMask. В методах SendMessage, SendInlineQueryResult и ForwardMessagesдобавлены поля disableNotification для отправки сообщений без уведомления получателя и fromBackground для отправки сообщений без полноценного открытия приложения (можно всегда передавать false). Исправлен тип результата, возвращаемого методом ToggleGroupEditors. Появилась возможность изменять username для супергрупп. В информацию о форварде сообщения из канала добавлены идентификатор отправителя сообщения и идентификатор исходного сообщения, если они известны.

20.02.2016 Поддержана работа с визуальным представлением голосовых сообщений: в классах Voice и InputMessageVoice добавлено поле waveform. Появился статус прослушанности голосовых и аудио сообщений: в классах MessageAudio и MessageVoice добавлено поле isListened, обновляемое через UpdateMessageContent. Добавлен метод OpenMessageContent, который нужно вызывать при открытии медиа-контента сообщения. В частности, его нужно вызывать при прослушивании аудио и голосовых сообщений. Поддержана работа с сохранёнными анимациями. Добавлены методы GetSavedAnimations, AddSavedAnimation и DeleteSavedAnimation, а также апдейт UpdateSavedAnimations. В классе Channel добавлено поле anyoneCanInvite, позволяющее разрешить всем участникам супергруппы приглашать новых участников, и которое можно изменять запросом ToggleChannelInvites. В классе Video добавлено поле fileName. При отправке видео появилаcь возможность указывать его ширину и высоту. В классах Animation, Audio, Video, Voice изменён порядок неокторых полей.

12.02.2016 Исправлено периодически воспроизводившееся падение при старте приложения. Добавлен метод TG.setFileLogEnabled, позволяющий включить/выключить логирование в файл в дополнение к логированию в Android Log (по умолчанию логирование в файл выключено, раньше было всегда включено). Добавлен метод TG.setLogVerbosity, позволяющий изменять количество данных, выводимых библиотекой в лог. Добавлен метод TG.setUseTestDc, позволяющий использовать тестовое окружение Telegram. Тестовое окружение полностью независимо от Production окружения, которое используется обычно, никакие данные из Production окружения в нём недоступны. Тестовое окружение может быть полезно использовать, если нет второй симки и не хочется тестировать на основном аккаунте, или для тестировании перевода группы в супергруппу, потому что на нём установлено меньшее ограничение на размер группы, которую можно перевести в супергруппу. Добавлены методы ExportChatInviteLink, CheckChatInviteLink, ImportChatInviteLink и классы ChatInviteLink, ChatInviteLinkInfo, позволяющие приглашать в чат пользователей по ссылке. Появилась возможность массового приглашения пользователей в канал через метод AddChatParticipants. Поле Message.isOutgoing заменено на поле sendState типа MessageSendState. Теперь никогда не нужно (и очень скоро будет нельзя) смотреть на значение идентификатора сообщения и на его дату, чтобы определить, что оно ещё только отправляется или что отправить сообщение не удалось.

03.02.2016 Очень краткий список изменений, затрагивающий только видимые изменения в API:

  • Более чёткое разделение сущностей. GroupChat называется просто Group, его идентификатор больше не совпадает с идентификтаором соответствующего объекта Chat. Переименованы некоторые классы и поля классов.
  • Добавлен класс ChatPhoto. В класс Chat добавлены поля title и photo. Соответствующие поля убраны из класса Group.
  • Добавлены апдейты UpdateGroup и UpdateChannel по аналогии с UpdateUser. Гарантируется, что если библиотека знает о пользователе, группе или канале, то она оповестила клиент об этом одним из этих апдейтов. Если на стороне клиента есть неочищаемый кеш пользователей групп и каналов, то запросы GetUser, GetGroup и GetChannel для него бесполезны.
  • Добавлены апдейты UpdateChat (про который также гарантируется, что если библиотека знает о чате, то она уже оповестила этим апдейтом клиент), UpdateChatOrder, UpdateMessageViews. Вместо апдейта UpdateChatParticipantsCount будет приходить UpdateGroup, так как количество участников поддерживается только для групповых чатов.
  • Появилась поддержка каналов и супергрупп (специальный подтип канала), добавлены классы Channel, ChannelFull, ChannelChatInfo, методы GetChannel и GetChannelFull, ChangeChannelUsername, ToggleChannelComments (возвращает всегда ошибку, комментарии в каналах включить невозможно), ChangeChannelAbout, GetChannelParticipants, DeleteChannel.
  • Порядок чатов теперь полностью контролируется библиотекой. В классе Chat появилось поле order. Диалоги должны быть упорядочены по убыванию пары (order, chatId). Чаты с order == 0 находятся вне известной части списка диалогов. Метод GetChats теперь устойчив к data race и вместо offset принимает offsetOrder, offsetChatId.
  • Добавлены методы OpenChat/CloseChat, которые необходимо вызывать при открытии/закрытии чата пользователем. Без них не будет работать получение новых апдейтов в каналах и многие другие полезные фичи.
  • Добавлен метод ViewMessages, который нужно вызывать при просмотре сообщения пользователем внутри чата. Теперь прочитывание сообщений в чате привязано именно к вызову этого метода, а не GetChatHistory.
  • Добавлен метод SearchChannel для поиска канала по его username.
  • Метод CreateGroupChat переименован в CreateNewGroupChat. Добавлен метод CreateNewChannelChat для создания нового чата канала/супергруппы и CreateChannelChat для создания чата канала по известному идентификатору канала (может понадобиться после SearchChannel).
  • Появился новый тип сообщений MessageAnimation, содержащий анимацию в формате gif или mpeg4, и соответствующий класс Animation. Добавлен фильтр при поиске сообщений, позволяющий находить только анимации.
  • Добавлены опции authorization_date, supergroup_size_max ( = 1000). Убрана опция broadcast_size_max, опция group_chat_size_max переименована в group_size_max.
  • Метод SearchMessages переименован в SearchChatMessages, из него убрана возможность глобального поиска. Добавлен метод SearchMessages для глобального поиска сообщений, включая сообщения в каналах пользователя.
  • Добавлена поддержка инлайн-запросов ботам, возможность получать ответы от ботов и посылать соответствующие им сообщения методом SendInlineQueryResultMessage. В классе UserTypeBot добавлены поля isInline и inlineQueryPlaceholder.
  • Добавлен абстрактный класс ChatParticipantRole и его подклассы ChatParticipantRoleAdmin, ChatParticipantRoleEditor, ChatParticipantRoleModerator, ChatParticipantRoleGeneral, ChatParticipantRoleLeft, ChatParticipantRoleKicked. В классе ChatParticipant добавлено поле role этого типа.
  • В классе Group вместо поля left добавлено поле role.
  • В классе Group добавлены поля anyoneCanEdit, isActive, migratedToChannelId.
  • В классе User добавлены поля isVerified и restrictionReason.
  • В классе Message добавлены поля isOutgoing, canBeDeleted, viaBotId, views, поле message переименовано в content, вместо полей forwardFromId и forwardDate добавлено поле forwardInfo с информацией о форварде.
  • При форварде и отправке сообщений появилась возможность отправлять их от имени канала.
  • Поле disableWebPagePreview перенесено из метода SendMessage в класс InputMessageText. В классе InputMessageText добавлено поле entities.
  • Добавлен метод ToggleGroupEditors, позволяющий включать/выключать в групповом чате возможность назначать выбранных администраторов.
  • Метод DeleteChatParticipant заменён на ChangeChatParticipantRole. Теперь он позволяет не только удалять участников из группы/канала, но и изменять их полномочия.
  • Метод SetAuthCode переименован CheckAuthCode.
  • Появилась поддержка разметки текста сообщений. В классах MessageText и MessageWebPage добавлено поле entities с инофрмацией о разметке.
  • Служебное сообщение MessageChatAddParticipant переименовано в MessageChatAddParticipants и может теперь содержать несколько новых участников в каналах. В групповых чатах по-прежнему одновременно не может быть добавлено более одного участника.
  • Добавлены служебные сообщения о миграции группы в супергруппу MessageChatMigrateTo и MessageChatMigrateFrom.
  • Появилась возможность добавлять caption к переслыаемым документам.
  • Класс ProfilePhotoCrop переименован в PhotoCrop.
  • К webPage могут быть опционально прикреплены Animation, Document или Sticker.
  • В классе UpdateDeleteMessages поле messages переименовано в messageIds.
  • В апдейте UpdateFileProgress отрицательное значение поля ready означает, что загрузка была прервана из-за ошибки.
  • У видео вернулось поле mimeType.
  • Добавлен класс ChatParticipants.
  • Идентификатор фотографии больше никогда не равен -1.
  • Добавлен класс SecretChatInfo и метод CreateNewSecretChat. Они отключены на данный момент. Первый никогда не возвращается, второй ничего не делает.
  • Добавлены апдейты UpdateNewInlineQuery и UpdateNewChosenInlineResult (только для ботов).
  • Метод SetAuthBotToken переименован в CheckAuthBotToken (только для ботов, отключен).
  • Добавлен метод GetFilePersistent для получения файла по его персистентному идентификатору (не должен использоваться в мобильных клиентах).

19.08.2015 В классе Messages добавлено поле totalCount, в котором в результате запроса SearchMessages возвращается общее количество результатов. В InputMessageContact добавлено опциональное поле userId. Запросы ChangeChatTitle, ChangeChatPhoto, AddChatParticipant и DeleteChatParticipant теперь синхронные и возвращают Ok только в случае успешного завершения выполнения запроса на сервере. Отключено всё некритичное логирование.

15.08.2015 Исправлено падение в CancelDownloadFile. В классах Sticker и StickerSet добавилось поле rating, зависящее от частоты использования, которое можно использовать для сортировки стикеров. Для удобства тестирования, рейтинг пока не сохраняется между перезапусками. Добавлен поиск сообщений/медиа.

11.08.2015 В классе Audio добавилось поле albumCoverThumb с тумбой обложки альбома. Полноразмерную обложку нужно пытаться вытаскивать из скачанного mp3-файла. Добавлены методы SearchUser для поиска пользователя по username и ChangeUsername для изменения username залогиненного пользователя.

09.08.2015 Исправлены падения в некоторых ситуациях в GetStickers и GetStickerSets. Поддержана работа с пользовательскими профильными фотографиями и фотографиями чатов: добавлен апдейт UpdateChatPhoto, методы SetProfilePhoto, DeleteProfilePhoto, ChangeChatPhoto. Добавлен метод ChangeName для изменения имени залогиненного пользователя. Поддержана работа с контактами: методы ImportContacts и DeleteContacts.

02.08.2015 Исправлен баг с полем replyMarkup класса Message, которое было всегда null. Добавлена поддержка deep linking для ботов — метод SendBotStartMessage. audio переименовано везде в voice. Добавлен новый тип сообщений messageAudio — аудиозаписи обычно в формате mp3 с указанием названия и исполнителя. Также добавлены сопутствующие классы Audio и InputMessageAudio. Улучшена поддержка стикеров при отправке. Появилась поддержка наборов стикеров. В классе Sticker появилось поле set_id — идентификатор сета, которому принадлежит стикер. Добавлены классы StickerSet, StickerSetInfo, StickerSets, методы GetStickerSets, GetStickerSet, SearchStickerSet, UpdateStickerSet.

25.07.2015 Добавлено поле type в класс User, по которому можно отличать обычных пользователей от удалённых пользователей и от ботов. Добавлена поддержка ботов (всё кроме deep linking). В UserFull и ChatParticipant добавлена информация о поддерживаемых ботом командах. В сообщениях от ботов добавилась информация о способе ответа на это сообщение в виде ReplyMarkup. Изменилось описание различных видов ReplyMarkup. В чате можно узнать идентификатор последнего сообщения с ReplyMarkup, который нужно отображать при заходе в чат. Этот идентификатор изменяется апдейтом updateChatReplyMarkup. Для скрытия клавиатуры после использования добавлен метод deleteChatReplyMarkup. Вместо UpdateUserName, UpdateUserPhoneNumber, UpdateUserProfilePhoto, UpdateUserLinks приходи один апдейт UpdateUser. Из UserFull удалены realFirstName и realLastName, которые больше не присылаются сервером.

20.07.2015 Краткий список изменений:

  • Изменены названия авторизационных методов.
  • Добавлена поддержка двухфакторной авторизации.
  • FileEmpty и FileLocal объединены в File.
  • При загрузке файла вместо пути можно указывать идентификатор ранее загруженного файла.
  • Вместе со стикером возвращается один из ассоциированных с ним emoji.
  • У видео больше нет mimeType и caption, но появился caption у messagePhoto и messageVideo.
  • GeoPoint переименован в Location.
  • Добавлена поддержка предпросмотра веб-страниц.
  • Профильные фото выделены в отдельный класс.
  • В группах можно получить ссылку для вступления.
  • В классе Message поменялся порядок полей.
  • Появилась возможность узнать, ответом на какое сообщение является данное.
  • Удалены unknownPrivateChatInfo и unknownGroupChatInfo. Тем не менее, это не значит, что такого не бывает. Теперь такие объекты будут отдаваться как обычные, у которых будет инициализирован только id. Написать такому пользователю/в такую группу нельзя будет.
  • Добавлена поддержка messageVenue.
  • Сообщения о вступлении в группу по ссылке теперь являются отдельным типом сообщений.
  • При отсылке аудио и видео можно задавать их длительность.
  • При загрузке фото и видео можно добавить caption.
  • В тайпингах для аплоада файлов теперь передаётся прогресс действия в процентах.
  • При неудачной отправке сообщения приходит апдейт updateMessageSendFailed с описанием ошибки.
  • В апдейтах о прочтении сообщений названия полей lastRead изменились на более говорящие.
  • Изменился апдейт updateFile.
  • Появились оффлайн-методы getMessage и getFile.
  • При отсылке сообщения появилась возможность отвечать на другое сообщение и отключать предпросмотр веб-страниц.
  • Появилась возможность слать тайпинги.
  • Появилась возможность получать все профильные фотографии пользователя.
  • Добавилась опция forwarded_messages_count_max (= 100).

18.05.2015 Полностью переписана работа с файлами. Теперь информация о них сохраняется между перезапусками библиотеки. Добавился метод CancelDownloadFile. UpdateFile приходит после каждого вызова DownloadFile.

06.05.2015 Убраны неиспользуемые состояние авторизации AuthStateWaitSendSms и метод AuthSendSms. Добавлено новое состояние авторизации AuthStateLoggingOut. В метод AuthReset добавлено опциональное поле boolean force. В классах Audio, Document и Video убраны поля userId и date. В классе Document поле fileName ициализируется, если имя файла было указано отправляющим клиентом. Добавлены методы GetOption и SetOption. Список доступных опций и их описание можно посмотреть в https://core.telegram.org/tdlib/options. Особенно полезны могут быть опции connection_state, my_id и network_unreachable.

22.04.2015 Добавлена версия библиотеки под x86. Добавлена поддержка стикеров, настроек оповещения, возможность удаления всей истории сообщений для конкретного чата. CreateGroupChat теперь возвращает Chat.

15.04.2015 Существенно обновлено API. Изменены названия некоторых сущностей: chat—>groupChat, dialog—>chat, phone—>phoneNumber. Названия всех java-классов теперь пишутся в UpperCamelCase, а полей и параметров функций в lowerCamelCase.

10.04.2015 Исправлен баг в getDialogHistory с отрицательным offset.

05.04.2015 Первый запрос getContacts теперь выполняется синхронно, возвращаемый результат всегда полон.

03.04.2015 Добавлена javadoc-документация.