На этой странице собраны основные изменения в дистрибутиве https://core.telegram.org/tdlib/tdlib.zip библиотеки TD с момента её первого выкладывания в публичный доступ.
02.11.2016#2
Небольшие исправления, улучшения документации и добавления:
02.11.2016
Небольшие исправления, улучшения документации и добавления:
NullPointerException
при вызове toString
у классов TdApi
.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
для получения информации об одном из участников чата и его статусе в чате.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
.Animation
, Document
или Sticker
.UpdateDeleteMessages
поле messages
переименовано в messageIds
.UpdateFileProgress
отрицательное значение поля ready
означает, что загрузка была прервана из-за ошибки.mimeType
.ChatParticipants
.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
.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-документация.