Эта страница сохранена только в исторических целях. За дальнейшим развитием TDLib можно следить на GitHub.
На этой странице собраны основные изменения в дистрибутиве tdlib.zip с момента его первого выкладывания в публичный доступ и до переезда проекта на GitHub.
GetChatHistory
.GetChatHistory
. Он теперь поддерживает получение истории сообщений, начиная с произвольного известного клиенту сообщения, если при этом результат запроса заведомо окажется рядом с известным сообщением. В частности, заведомо корректными являются запросы с -limit <= offset <= 0, если клиенту известно сообщение с идентификатором fromId
. Также можно получить историю сообщений, передав в fromId
идентификатор неизвестного клиенту сообщения, если окрестности этого сообщения заведомо будут присутствовать в результате запроса. В частности, это так, если -limit < offset < 0.GetChatHistory
должен всегда возвращать правильный результат или ошибку.SearchContacts
).GetRecentInlineBots
, позволяющий получить последних использованных inline-ботов.SearchChats
).SearchChats
пустой запрос, добавлять новые элементы в этот список, используя метод AddRecentlyFoundChat
, и очищать список полностью, используя метод DeleteRecentlyFoundChats
. На данный момент, поиск по префиксу чувствителен к регистру всех символов, кроме латиницы. 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
для супергрупп.Voice
и InputMessageVoice
добавлено поле waveform
.MessageAudio
и MessageVoice
добавлено поле isListened
, обновляемое через UpdateMessageContent
.OpenMessageContent
, который нужно вызывать при открытии медиа-контента сообщения. В частности, его нужно вызывать при прослушивании аудио и голосовых сообщений.Поддержана работа с сохранёнными анимациями.
GetSavedAnimations
, AddSavedAnimation
и DeleteSavedAnimation
, а также апдейт UpdateSavedAnimations
.Channel
добавлено поле anyoneCanInvite
, позволяющее разрешить всем участникам супергруппы приглашать новых участников, и которое можно изменять запросом ToggleChannelInvites
.Video
добавлено поле fileName
.Animation
, Audio
, Video
, Voice
изменён порядок некоторых полей.TG.setFileLogEnabled
, позволяющий включить/выключить логирование в файл в дополнение к логированию в Android Log (по умолчанию логирование в файл выключено, раньше было всегда включено).TG.setLogVerbosity
, позволяющий изменять количество данных, выводимых библиотекой в лог.TG.setUseTestDc
, позволяющий использовать тестовое окружение Telegram. Тестовое окружение полностью независимо от Production окружения, которое используется обычно, никакие данные из Production окружения в нём недоступны. Тестовое окружение может быть полезно использовать, если нет второй симки и не хочется тестировать на основном аккаунте, или для тестировании перевода группы в супергруппу, потому что на нём установлено меньшее ограничение на размер группы, которую можно перевести в супергруппу.ExportChatInviteLink
, CheckChatInviteLink
, ImportChatInviteLink
и классы ChatInviteLink
, ChatInviteLinkInfo
, позволяющие приглашать в чат пользователей по ссылке.AddChatParticipants
.Message.isOutgoing
заменено на поле sendState
типа MessageSendState
. Теперь никогда не нужно (и очень скоро будет нельзя) смотреть на значение идентификатора сообщения и на его дату, чтобы определить, что оно ещё только отправляется или что отправить сообщение не удалось.Очень краткий список изменений, затрагивающий только видимые изменения в 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
для получения файла по его персистентному идентификатору (не должен использоваться в мобильных клиентах).Messages
добавлено поле totalCount
, в котором в результате запроса SearchMessages
возвращается общее количество результатов.InputMessageContact
добавлено опциональное поле userId
.ChangeChatTitle
, ChangeChatPhoto
, AddChatParticipant
и DeleteChatParticipant
теперь синхронные и возвращают Ok
только в случае успешного завершения выполнения запроса на сервере.CancelDownloadFile
.Sticker
и StickerSet
добавилось поле rating
, зависящее от частоты использования, которое можно использовать для сортировки стикеров. Для удобства тестирования, рейтинг пока не сохраняется между перезапусками.Audio
добавилось поле albumCoverThumb
с тумбой обложки альбома. Полноразмерную обложку нужно пытаться вытаскивать из скачанного mp3-файла.SearchUser
для поиска пользователя по username
и ChangeUsername
для изменения username
залогиненного пользователя.GetStickers
и GetStickerSets
.UpdateChatPhoto
, методы SetProfilePhoto
, DeleteProfilePhoto
, ChangeChatPhoto
.ChangeName
для изменения имени залогиненного пользователя. Поддержана работа с контактами: методы ImportContacts
и DeleteContacts
.replyMarkup
класса Message
, которое было всегда null
.SendBotStartMessage
.audio
переименовано везде в voice
.messageAudio
— аудиозаписи обычно в формате mp3
с указанием названия и исполнителя. Также добавлены сопутствующие классы Audio
и InputMessageAudio
.Sticker
появилось поле set_id
— идентификатор сета, которому принадлежит стикер.StickerSet
, StickerSetInfo
, StickerSets
, методы GetStickerSets
, GetStickerSet
, SearchStickerSet
, UpdateStickerSet
type
в класс User
, по которому можно отличать обычных пользователей от удалённых пользователей и от ботов.UserFull
и ChatParticipant
добавлена информация о поддерживаемых ботом командах.ReplyMarkup
.ReplyMarkup
.ReplyMarkup
, который нужно отображать при заходе в чат. Этот идентификатор изменяется апдейтом updateChatReplyMarkup
.deleteChatReplyMarkup
.UpdateUserName
, UpdateUserPhoneNumber
, UpdateUserProfilePhoto
, UpdateUserLinks
приходит один апдейт UpdateUser
.UserFull
удалены realFirstName
и realLastName
, которые больше не присылаются сервером.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
).CancelDownloadFile
.
-UpdateFile
приходит после каждого вызова DownloadFile
.AuthStateWaitSendSms
и метод AuthSendSms
.AuthStateLoggingOut
.AuthReset
добавлено опциональное поле boolean force.userId
и date
.fileName
ициализируется, если имя файла было указано отправляющим клиентом.GetOption
и SetOption
.connection_state
, my_id
и network_unreachable
.CreateGroupChat
теперь возвращает Chat.Существенно обновлено API:
chat—>groupChat
dialog—>chat
phone—>phone_number
getDialogHistory
с отрицательным offset.getContacts
теперь выполняется синхронно, возвращаемый результат всегда полон.