# TelegramBotAPI changelog ## 0.12.0 Webhooks * Added `DataRequest` interface which replace `Data` interface * `MultipartRequestImpl` now use `DataRequest` * All requests which implements `Data` now implement `DataRequest` * Added class `SetWebhook` and its factory * Added class `UpdatesFilter` which can help to filter updates by categories * Added function `accumulateByKey` which work as debounce for keys and send list of received values * Added webhooks functions and workaround for `Reverse Proxy` mode * Added new type of updates `MediaGroupUpdate`, which can be received only from filters * `UpdatesFilter` now use new type of updates for mediagroups * Add `GetWebhookInfo` request and `WebhookInfo` type * Replace updates types into separated place in types * Now default `RequestException` will contain plain answer from telegram * Added `UnauthorizedException` * `RequestException` now is sealed * Rename `ReplyMessageNotFound` to `ReplyMessageNotFoundException` * Added `List#mediaGroupId` extension * Added utility `T#asReference(): WeakReference(T)` extension * Added `UpdatesPoller` class which can be instantiated for manage updates polling * Separated execute extensions (now they are in file `Executes`) and poller creating extensions * `BaseMessageUpdate#toMediaGroupUpdate()` will also check condition when update-receiver already is `MediaGroupUpdate` ### 0.12.1 Hotfix for media groups * Added additional media group types (like `MessageMediaGroupUpdate`) * Fixed handling of media group updates in `UpdatesFilter` ### 0.12.2 * New in `MediaGroupUpdate`: * It is subtype of `Update` and can be use as regular update with list of messages * Data now is list with `MediaGroupMessage` * Added field `origins` which represent origin updates for `MediaGroupMessage` * `updateId` now represent LAST id of origins updates * `UpdatesFilter` and other objects now work with `UpdateReceiver` as common supertype for receivers. ### 0.12.3 Cleaning * Refactor, optimizing and cleaning of code * Removed deprecated method `T#toJsonWithoutNulls()` * Renamed instances of `MediaGroupMessage`s and refactored their interfaces. `ChannelMediaGroupMessage` will not contain `user` field (but `CommonMediaGroupMessage` will have) * Now `MediaCollectionContent` is `MediaContent` (classes of this interface must choose best media for present out) * `PhotoContent` now choose biggest photo size from its collection as `media` * Fix in order of media group messages which was received by webhooks ### 0.12.4 * Optimized preparing of media group in `UpdatesPoller` * Add `CommonLimiter` * Add `MessageEntity#asHtmlSource` and `String#toHtml` * Add tools for work with html captions and texts * `MessageContent` which using captions or text now have default parse mode `HTMLParseMode` due to issue with escaping of `]` in links titles * Added `Markdown` and `HTML` type aliases which actually means `MarkdownParseMode` and `HTMLParseMode` * `ChatId` now have extension `link` which will automatically create link like `tg://user?id=` * Created a few of methods for all supported formats of text like bold, italic, links and others * Rewritten `MessageEntities` to use new formatting options ### 0.12.5 ## 0.11.0 * Kotlin `1.3.11` -> `1.3.21` * Kotlin coroutines `1.1.0` -> `1.1.1` * Kotlin serialization `0.9.1` -> `0.10.0` * Ktor `1.1.1` -> `1.1.2` ## 0.10.0 * Most part of abstractions was replaced from `requests` and `types` on more high level * Added abstraction `CommonVenueData` * Added abstraction `CommonContactData` * Added `InputMessageContent` * Update some types and requests according to abstractions replacing * Add all `InlineQueryResult`, `InputMessageContent` and other inline mode types * Fixes in edition of inline messages and their result types * Replace basic exception and add `ReplyMessageNotFound` exception ### 0.10.1 * Change algorithm of `executeUnsafe`: now it use loop instead of recursive calling * Add additional `startGettingUpdates` with better management of received updates for media groups * Now `MediaGroupMessage` is `CommonMessage` with `MediaGroupContent` content * Added extensions `replyTo`, `forwarded` and `chat` for `List` for comfortable work with media groups lists * Fix `parseMode` of `InputTextMessageContent` ### 0.10.2 * Fixes in `Username` * Now you can create username object using string which is not starting with `@` * Now `Username` correctly comparing with strings, which are not starting with `@` * Now most part of usernames in library have type `Username` * Fix `replyMarkup` in `InlineQueryResultArticle` ### 0.10.3 * Hotfix for username data class ## 0.9.0 * Old extension `OkHttpClient.Builder#useWith` now deprecated and must be replaced by the same in `com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor` package * Replace `ProxySettings` data class in `settings` package, deprecate old link * `BaseRequestsExecutor` now have no it's own scope * Add `RequestLimiter` and base realisations * Now `KtorRequestsExecutor` can receive as one of parameters `RequestLimiter` (by default - `EmptyLimiter`) ### 0.9.1 * Updated built-in lengths restrictions * Apply restrictions of text limit for sending messages * Add `RegularTextMessageEntity` which is useful for representing regular text message entity * Add `convertToFullMessageEntityList` which create list of entities with `RegularTextMessageEntity` on places where must be regular text * Change signature of `createMarkdownText`: now it will return list of strings * Deprecate old signatures of `createMarkdownText`, `toMarkdownCaption`, `toMarkdownText` * Add `ResendableContent#createResends` which create adapted list of resends for content * Add `TextContent` own `createResends` realisation ### 0.9.2 * `RequestsExecutor#executeAsync(Request, CoroutineScope)` now will return `Deferred` for cases when you need result * `RequestsExecutor#executeUnsafe` will automatically retry request if it was unsuccessful and retries > 0 ### 0.9.3 * `KtorRequestsExecutor` now can use custom `JSON` string formatter (by default - non strict) * `ResponseParameters` renamed to `Response` * Add `RequestError` sealed class and described in documentation known errors * Add `ResponseParametersRaw` which can create error based on input parameters * Add `parameters` field in `Response` and remove useless fields from `Response` * Add `leftToRetry` parameter in `RetryAfterError` * Add handling of `RetryAfterError` in `KtorRequestsExecutor` ### 0.8.5 * Add extension `String#toMarkdown` * Fix of inserting of text when create Markdown-adapted text from text and text entities * Fix default realisation of MessageEntity#asMarkdownSource ### 0.8.4 * Added `createMarkdownText` and extensions for `CaptionedMediaContent` and `TextContent` * Added `ResendableContent` and realize in different contents * Animation * Audio * Document * Photo * Sticker * Video * VideoNote * Voice * `MessageContent` now is `ResendableContent` * Now all media sending factories which contains `thumb` have default `null` value * `ChatIdentifier` classes now are `data` classes * Now `MediaGroupContent` interface contains `toMediaGroupMemberInputMedia` method for easily creating mirror input media * Change signature of `Update` * Now `Update` is untyped and data is `Any` * Media groups now are separated type of updates and you can subscribe on that receiving directly * Now `AdministratorChatMember` is interface and `CreatorChatMember` implement it ### 0.8.3 * Now `ForwardedMessage` contains nullable `from` ### 0.8.2 * Add `FromUserMessage` which must be implemented in all messages realisations which have `user` field * Add `CommonMediaGroupMessage` which in fact extension of `MediaGroupMessage` with implementation of `FromUserMessage` * `CommonMessageImpl` now implementing `FromUserMessage` ### 0.8.1 * Update `MediaGroupMessage` interface * Add implementation of `MediaGroupMessage` * Add generating of `MediaGroupMessage` in `RawMessage`