52 KiB
TelegramBotAPI changelog
0.28.0
THIS VERSION CONTAINS BREAKING CHANGES
PROJECT PACKAGES WERE CHANGED
-
Project
TelegramBotAPI
->TelegramBotAPI-core
-
Project
TelegramBotAPI-all
->TelegramBotAPI
-
Common
:- Version updates:
Kotlin
:1.3.72
->1.4.0
Coroutines
:1.3.8
->1.3.9
Serialization
:0.20.0
->1.0.0-RC
Klock
:1.11.14
->1.12.0
UUID
:0.1.1
->0.2.1
Ktor
:1.3.2
->1.4.0
buildMimeType
function now is cache-oriented getter which will save already got mime types into internal map- All deprecations from previous versions were removed
- Version updates:
-
TelegramBotAPI-core
:- Typealias
TelegramBot
was added - Fully rebuilt
KtorCallFactory
interface to be able to handle custom answers from telegram bot api system - New implementation of
KtorCallFactory
was added:DownloadFileRequestCallFactory
DownloadFile
request was added
- All included
KtorCallFactory
realizations (except of abstract) now are objects:MultipartRequestCallFactory
SimpleRequestCallFactory
MediaGroupMemberInputMedia
members now will not havearguments
property due to redundancy and buggy of that- Field
media
now is common for allInputMedia
objects
- Typealias
-
TelegramBotAPI-extensions-api
:- Extensions
TelegramBot#downloadFile
were added
- Extensions
-
TelegramBotAPI-extensions-utils
:- All extensions for media groups (except of
mediaGroupId
) have changed their context:List<MediaGroupMessage>
->List<CommonMessage<MediaGroupContent>>
forwardInfo
replyTo
chat
createResend
(several extensions)
- Several extensions for downloading of files:
HttpClient#loadFile
PathedFile#download
- All extensions for media groups (except of
0.27.0
Common
:- Versions updates:
Kotlin
:1.3.71
->1.3.72
Klock
:1.10.3
->1.10.5
- Versions updates:
TelegramBotAPI
:- Typealias
LongSeconds
was added for correct explanation of seconds inLong
primitive type - Several new fields was added:
explanationField
explanationEntitiesField
openPeriodField
closeDateField
- Extension
List<TextPart>#justTextSources
was added for mapping ofList<TextPart>
toList<TextSource>
- Field
SendPoll#closeInfo
was added- Range
openPeriodPollSecondsLimit
was added and used in allSendPoll
requests for checking income data
- Range
SendQuizPoll
now able to use fieldscaption
andparseMode
forexplanation
functionalityquizPollExplanationLimit
was added for checkingQuizPoll
explanation size
- Field
TextLinkTextSource#url
was added - Field
TextMentionTextSource#user
was added - Sealed class
ScheduledCloseInfo
was added- Class
ExactScheduledCloseInfo
was added for cases withclose_date
- Class
ApproximateScheduledCloseInfo
was added for cases withopen_period
- Class
- Field
Poll#scheduledCloseInfo
was added - Sealed class
MultipleAnswersPoll
was added- Class
RegularPoll
now extendsMultipleAnswersPoll
- Class
Dice
class was replaced into new package- Sealed class
DiceAnimationType
was added- Field
Dice#animationType
was added asemoji
API representation SendDice
now receiveanimationType
as second parameter
- Field
- For
List<TextSource>
was added several extensions:toMarkdownCaptions
toMarkdownTexts
toMarkdownV2Captions
toMarkdownV2Texts
toHtmlCaptions
toHtmlTexts
- Typealias
TelegramBotAPI-extensions-api
:- All
RequestsExecutor#sendDice
extensions now acceptDiceAnimationType?
as second parameter - All
RequestsExecutor#sendRegularPoll
extensions now acceptScheduledCloseInfo
fourth parameter - All
RequestsExecutor#sendQuizPoll
extensions now accept additional parameterscaption: String
andparseMode: ParseMode
forexplanation
functionality andcloseInfo: ScheduledCloseInfo?
for autoclose poll functionality
- All
TelegramBotAPI-extensions-utils
:- Several shortcuts for
ScheduledCloseInfo
was added:closePollExactAt
closePollExactAfter
closePollAfter
- Several shortcuts for
0.27.11
TelegramBotAPI
:- Extension
String#filenameFromUrl
was created- Extension
PathedFile#filename
was created
- Extension
- Extension
TelegramBotAPI-extensions-utils
:Flow<Iterable<T>>.flatMap
extension was added- Extensions for
FlowUpdatesFilter
were added:FlowsUpdatesFilter#allSentMessagesFlow
(combination ofmessageFlow
andchannelPostFlow
)FlowsUpdatesFilter#allSentMediaGroupsFlow
(combination ofmessageMediaGroupFlow
andchannelPostMediaGroupFlow
)FlowsUpdatesFilter#sentMessages
FlowsUpdatesFilter#sentMessagesWithMediaGroups
FlowsUpdatesFilter#photoMessagesWithMediaGroups
FlowsUpdatesFilter#imageMessagesWithMediaGroups
FlowsUpdatesFilter#videoMessagesWithMediaGroups
FlowsUpdatesFilter#mediaGroupMessages
FlowsUpdatesFilter#mediaGroupPhotosMessages
FlowsUpdatesFilter#mediaGroupVideosMessages
- A lot of extensions like
Flow<BaseSentMessageUpdate>#textMessages
were added:Flow<BaseSentMessageUpdate>#animationMessages
Flow<BaseSentMessageUpdate>#audioMessages
Flow<BaseSentMessageUpdate>#contactMessages
Flow<BaseSentMessageUpdate>#diceMessages
Flow<BaseSentMessageUpdate>#documentMessages
Flow<BaseSentMessageUpdate>#gameMessages
Flow<BaseSentMessageUpdate>#invoiceMessages
Flow<BaseSentMessageUpdate>#locationMessages
Flow<BaseSentMessageUpdate>#photoMessages
Flow<BaseSentMessageUpdate>#imageMessages
Flow<BaseSentMessageUpdate>#pollMessages
Flow<BaseSentMessageUpdate>#stickerMessages
Flow<BaseSentMessageUpdate>#textMessages
Flow<BaseSentMessageUpdate>#venueMessages
Flow<BaseSentMessageUpdate>#videoMessages
Flow<BaseSentMessageUpdate>#videoNoteMessages
Flow<BaseSentMessageUpdate>#voiceMessages
Flow<BaseSentMessageUpdate>#mediaGroupMessages
Flow<BaseSentMessageUpdate>#mediaGroupPhotosMessages
Flow<BaseSentMessageUpdate>#mediaGroupVideosMessages
0.27.10
TelegramBotAPI-extensions-api
:- Function
telegramBot(TelegramAPIUrlsKeeper)
was added
- Function
TelegramBotAPI-extensions-utils
:- Extension
Route#includeWebhookHandlingInRouteWithFlows
was added - A lot of extensions like
FlowsUpdatesFilter#textMessages
were added:FlowsUpdatesFilter#animationMessages
FlowsUpdatesFilter#audioMessages
FlowsUpdatesFilter#contactMessages
FlowsUpdatesFilter#diceMessages
FlowsUpdatesFilter#documentMessages
FlowsUpdatesFilter#gameMessages
FlowsUpdatesFilter#invoiceMessages
FlowsUpdatesFilter#locationMessages
FlowsUpdatesFilter#photoMessages
FlowsUpdatesFilter#imageMessages
FlowsUpdatesFilter#pollMessages
FlowsUpdatesFilter#stickerMessages
FlowsUpdatesFilter#textMessages
FlowsUpdatesFilter#venueMessages
FlowsUpdatesFilter#videoMessages
FlowsUpdatesFilter#videoNoteMessages
FlowsUpdatesFilter#voiceMessages
- Extension
0.27.9
Common
- Versions updates:
Gradle Wrapper
:6.5-all
->6.5.1-bin
Coroutines
:1.3.7
->1.3.8
Klock
:1.11.3
->1.11.14
UUID
:0.1.0
->0.1.1
- Versions updates:
0.27.8
TelegramBotAPI
:UnknownUpdateType
was renamed toUnknownUpdate
- Refactoring and optimization of
FlowsUpdatesFilter
Venue
type was replaced to a new package:com.github.insanusmokrassar.TelegramBotAPI.types.venue.Venue
Venue
type now implementsLocationed
and delegate realisation to itslocation
fieldFoursquareId
andFoursquareType
typealiases were added
TelegramBotAPI-extensions-utils
:- Several new functions
makeLinkToMessage
was added Foursquare
data class was added- Extension
Venue#foursquare
was added - Factory function
Venue
withFoursquare
parameter was added
- Extension
- Several new functions
0.27.7
TelegramBotAPI
:- Operator function
unaryPlus
was added toRowBuilder
. Now it is possible to writerow { +button }
- Function
flatMatrix
was added for single-row columns - Operator extension
RowBuilder#plus
was added to be able to write things likerow { this + button }
- Operator function
TelegramBotAPI-extensions-api
:- Extensions
RequestsExecutor#sendVenue
withLocation
args were added
- Extensions
TelegramBotAPI-extensions-utils
:- Function
InlineKeyboardMarkup
for flat keyboards was added - Function
ReplyKeyboardMarkup
for flat keyboards was added
- Function
0.27.6
Common
:- Versions:
Kotlin Coroutines
:1.3.6
->1.3.7
- Versions:
TelegramBotAPI
:- Interface
PossiblySentViaBot
has been added- Additional interface
PossiblySentViaBotCommonMessage
was added for more explicit typing declaration for compiler- Currently, only
ChannelMessage
andCommonMessageImpl
are implementing the interfacePossiblySentViaBotCommonMessage
. It could be changed in future
- Currently, only
- Additional interface
- Factory
buildMimeType
was added BuiltinMimeTypes
was added- Abstraction
ThumbedWithMimeTypeInlineQueryResult
withthumbMimeType
field was addedInlineQueryResultGif
andInlineQueryResultMpeg4Gif
now extendThumbedWithMimeTypeInlineQueryResult
instead ofThumbedInlineQueryResult
- Interface
TelegramBotAPI-extensions-utils
:- New extensions
onlyCommonMessages
,onlySentViaBot
andwithoutSentViaBot
was added
- New extensions
0.27.5
Common
:- Versions:
Klock
:1.11.1
->1.11.3
- Versions:
TelegramotAPI
:- Fix: for sending requests caption and text lengths limits were updated
- New variant of
row
was added makeLinkToMessage
extensions has been deprecated (replaced intoTelegramBotAPI-extensions-utils
)- Next things was deprecated and replaced into
TelegramBotAPI-extensions-utils
:- All
String
formatting public extensions and functions - All extensions like
CaptionedInput#toHtmlCaptions
- All helper extensions for
List<BaseMessageUpdate>
- All
RequestsExecutor#executeAsync
andRequestsExecutor#executeUnsafe
- All
BotCommand
now more strictly check commands which passed to it- Regex
BotCommandNameRegex
was added
- Regex
TelegramBotAPI-extensions-api
:- A lot of
RequesstExecutor#getChat
extensions was added for more explicit types showing - New
RequesstExecutor#setMyCommands
extension was added - New field
BotBuilder#ktorClientEngineFactory
introduced- Field
BotBuilder#ktorClientEngine
now is deprecated
- Field
- A lot of
TelegramBotAPI-extensions-utils
:safely
function was introduced. It is inPreviewFeature
state currentlymakeLinkToMessage
extensions has been addedmakeLinkToAddStickerSet
function and its variations were added- Next tools was added from
TelegramBotAPI
:- All
String
formatting extensions and functions - All extensions like
CaptionedInput#toHtmlCaptions
- All helper extensions for
List<BaseMessageUpdate>
- Several new extensions for
SentMediaGroupUpdate
were added:SentMediaGroupUpdate#forwardInfo
SentMediaGroupUpdate#replyTo
SentMediaGroupUpdate#chat
SentMediaGroupUpdate#mediaGroupId
- Several
List<MediaGroupMessage>.createResend
extensions were added
- Several new extensions for
RequestsExecutor#executeAsync
andRequestsExecutor#executeUnsafe
- All
0.27.4
TelegramBotAPI-extensions-utils
:- Several extensions for updates was added:
onlyBaseMessageUpdates
onlySentMessageUpdates
onlyEditMessageUpdates
onlyMediaGroupsUpdates
onlySentMediaGroupUpdates
onlyEditMediaGroupUpdates
- Renames in chat filters extensions:
filterBaseMessageUpdates
->filterBaseMessageUpdatesByChatId
andfilterBaseMessageUpdatesByChat
filterSentMediaGroupUpdates
->filterSentMediaGroupUpdatesByChatId
andfilterSentMediaGroupUpdatesByChat
- Several extensions for updates was added:
0.27.3
TelegramBotAPI
:UpdateDeserializationStrategy
is publicly available now- All
setWebhook
extensions was marked as deprecated, renamed and replaced intoTelegramBotAPI-extensions-utils
- Typealias
ExceptionHandler
was added - it will be used forhandleSafely
SetWebhook
factories signatures was changed (backward compatibility was not broken)executeUnsafe
now working differently- Now it is possible to pass exceptions handler into
executeUnsafe
- Now it is possible to pass exceptions handler into
BasketballDiceAnimationType
was addedUnknownDiceAnimationType
now is deprecated due to renaming - currently it is typealias forCustomDiceAnimationType
CustomDiceAnimationType
now isdata
class instead of common class
FlowsUpdatesFilter
will use size 64 by default for internal broadcast channels
TelegramBotAPI-extensions-api
:- Long Polling extensions now are deprecated in this project. It was replaced into
TelegramBotAPI-extensions-utils
- Several
telegramBot
functions was renamed intotelegramBotWithCustomClientConfig
- Add one more
setWebhookInfo
realisation
- Long Polling extensions now are deprecated in this project. It was replaced into
TelegramBotAPI-extensions-utils
:- Extension
toTelegramUpdate
was added - Long Polling extensions were added
- Updates utils were added
- New extensions
startListenWebhooks
,setWebhookInfoAndStartListenWebhooks
andincludeWebhookHandlingInRoute
was added - New extension
CoroutineScope#updateHandlerWithMediaGroupsAdaptation
was added - New extension
flowsUpdatesFilter
was added
- Extension
TelegramBotAPI-all
:- Project was created
0.27.2
Common
:- Versions:
- Coroutines:
1.3.5
->1.3.6
- Klock:
1.10.5
->1.11.1
- Coroutines:
- Versions:
TelegramBotAPI
:- Expected class
MimeType
was added- Field
MimeTyped#mimeType
now typed byMimeType
instead ofString
- Field
MediaGroupMemberInputMedia
children now can be deserialized (but only those ones who are declared inside library)
- Expected class
TelegramBotAPI-extensions-utils
:- Chat events splitters added:
- Extension
Flow<ChatEventMessage>#onlyChannelEvents
was added - Extension
Flow<ChatEventMessage>#onlyGroupEvents
was added - Extension
Flow<ChatEventMessage>#onlySupergroupEvents
was added
- Extension
- Chat events splitters added:
0.27.1
TelegramBotAPI
:- Interface
Explained
and subsinterfacesExplainedInput
andExplainedOutput
was added- Class
QuizPoll
now implementExplainedInput
- In
QuizPoll#caption
andQuizPoll#captionEntities
are deprecated now - Class
SendQuizPoll
now implementExplainedOutput
- In
SendQuizPoll#caption
is deprecated now
- Class
explanationLimit
range was added as future replacement ofquizPollExplanationLimit
quizPollExplanationLimit
now is deprecated
- Extensions
toMarkdownExplanations
,toMarkdownV2Explanations
andtoHtmlExplanations
was added - Typealias
FullTextSourcesList
was added- All extensions
fullEntitiesList
now returnFullTextSourcesList
- All extensions of
List<TextSource>
now are extensions forFullTextSourcesList
- All extensions
- Interface
TelegramBotAPI-extensions-api
:sendQuizPoll
now is usingexplanation
parameter instead ofcaption
0.26.0
Common
:- Versions updates:
Klock
:1.10.0
->1.10.3
- Versions updates:
TelegramBotAPI
:- Request
SendDice
was added (calling sendDice) - Class
Dice
was added (type dice) - Class
DiceContent
was added (for including it in message object) BotCommand
was addedGetMyCommands
request was addedSetMyCommands
request was addedGetMe
now is object instead of classGetMe
was replaced into packagecom.github.insanusmokrassar.TelegramBotAPI.requests.bot.GetMe
CreateNewStickerSet
renamed toCreateStaticNewStickerSet
CreateNewAnimatedStickerSet
request was added (it handle work withtgs_sticker
)StickerSet#thumb
was addedAddStickerToSet
renamed toAddStaticStickerToSet
AddAnimatedStickerToSet
request was addedSetStickerSetThumb
request was added- Most of sticker actions now implements
StandardStickerSetAction
instead ofStickerSetAction
getUpdatesLimit
was added to be ensure in get updates limitGetUpdates
now will check count of requesting updates and throw exception if it is not in range1 .. 100
GetUpdates#limit
now is not nullable and by default set up to 100
- Request
TelegramBotAPI-extensions-api
:- Extensions
sendDice
was added - Extension
getMyCommands
request was added - Extension
setMyCommands
request was added - Extension
getMe
was replaced into packagecom.github.insanusmokrassar.TelegramBotAPI.extensions.api.bot.GetMeKt.getMe
- All extensions
createNewStickerSet
was renamed tocreateNewStaticStickerSet
- Extensions
createNewAnimatedStickerSet
was added - All extensions
addStickerToSet
was renamed toaddStaticStickerToSet
- Extensions
addAnimatedStickerToSet
was added - Extensions
setStickerSetThumb
was added - Extension
startGettingUpdates
now will dropSentMediaGroupUpdate
in case if it is the last in updates group and size of retrieved updates is equal to 100 (max count of retrieved updates) - Extensions
getUpdates
now will receive only not nullablelimit
parameter
- Extensions
0.26.4
TelegramBotAPI
:- Now any getting of updates will return
UnknownUpdateType
when inside of deserialization will beSerializationException
orNotImplemented
error CallbackGame
currently is an object- It is possible to use
CallbackGame
for nowCallbackGameInlineKeyboardButton
now will not acceptcallbackGame
as income object
- It is possible to use
- Now it is possible to pass exception handler in webhook
- Now any getting of updates will return
0.26.3
TelegramBotAPI
:CallbackGameInlineKeyboardButton
was added (Issue-79, PR-80)UnknownInlineKeyboardButton
was added. It is unavailable for creating, but you can receive it, for example, inInlineQueryResult
Update
now will be created even if wasSerializationException
inside of creating the update instance - in this case will be createdUnknownUpdateType
UnknownUpdateType$rawJson
value now is included (JsonElement
)- EXPERIMENTALLY
BaseEditMessageUpdate#data
now isCommonMessage<*>
- Suspend inline function
handleSafely
was addedKtorRequestsExecutor
now usehandleSafely
instead oftry
withsupervisorScope
UpdatesPolling
now usehandleSafely
instead oftry
withsupervisorScope
0.26.2
TelegramBotAPI
:- Now
EditMediaGroupUpdate
also extendsBaseEditMessageUpdate
- EXPERIMENTALLY Now all
TextSource
realisations will containsource
field as a property inside of them
- Now
TelegramBotAPI-extensions-api
:startGettingFlowsUpdates
extension which do not require filter (but return a new one) was added
TelegramBotAPI-extensions-utils
:- Subproject was added
filterBaseMessageUpdates
,filterSentMediaGroupUpdates
andfilterEditMediaGroupUpdates
extensions was addedfilterCommandsWithArgs
,filterExactCommands
andfilterCommandsInsideTextMessages
extensions was addedasContentMessagesFlow
,asChatEventsFlow
andasUnknownMessagesFlow
extensions was addedwithContentType
extension was addedonlyAnimationContentMessages
extension was addedonlyAudioContentMessages
extension was addedonlyContactContentMessages
extension was addedonlyDiceContentMessages
extension was addedonlyDocumentContentMessages
extension was addedonlyGameContentMessages
extension was addedonlyInvoiceContentMessages
extension was addedonlyLocationContentMessages
extension was addedonlyPhotoContentMessages
extension was addedonlyPollContentMessages
extension was addedonlyStickerContentMessages
extension was addedonlyTextContentMessages
extension was addedonlyVenueContentMessages
extension was addedonlyVideoContentMessages
extension was addedonlyVideoNoteContentMessages
extension was addedonlyVoiceContentMessages
extension was added
0.26.1
TelegramBotAPI
:BotCommand
now will check and throw error in case when command or description lengths is/are incorrectStorageFile
now is common for all platforms- JavaScript realization was removed due to its redundancy
- JVM realization was replaced with
fun
factory StorageFile
now able to accept any factory ofInput
StorageFileInfo
was added to avoid strange collisions with throws inStorageFile
- Fixes issue with
hashTag
for markdown InvalidPhotoDimensionsException
was added for cases whenPHOTO_INVALID_DIMENSION
answer received- Other fixes
0.25.0
- Common:
- Versions updates:
Kotlin
:1.3.61
->1.3.70
Kotlin coroutines
:1.3.3
->1.3.5
Kotlin serialization
:0.14.0
->0.20.0
Ktor
:1.3.1
->1.3.2
Klock
:1.8.7
->1.10.0
UUID
:0.0.7
->0.1.0
- Versions updates:
TelegramBotAPI
:Bot
implementations (as andBot
itself) now have not nullableusername
File#toInputFile
extension now will throw error when file does not existsInlineKeyboardMarkup
will check thatPayInlineKeyboardButton
is the first in case if it is exists inkeyboard
makeLinkToMessage
now is notPreviewFeature
- All deprecations was removed
RequestException
now extendsio.ktor.utils.io.errors.IOException
instead ofkotlinx.io.IOException
Any#toJson
now is NOTinline
FlowsUpdatesFilter
now as marked my annotationFlowPreview
PathedFile#fullUrl
now is notinline
functionSimpleRequest#json
now is notinline
andinternal
functionFlowsUpdatesFilter
now have two additional flows:pollAnswerFlow
,unknownUpdateTypeFlow
ExtendedUser
(typealias
) was added as aPreviewFeature
0.25.1
- Update kotlin:
1.3.70
->1.3.71
- Fix of error inside of update utils for media groups
0.24.0
TelegramBotAPI
:- All suspend functions for
RequestsExecutor
was removed (due to replacement into TelegramBotAPI extensions project) ForwardFromChannelInfo#channelChat
now isChannelChat
instead ofChat
- All suspend functions for
TelegramBotAPI-extensions-api
:- Most part of sending media messages functions was removed and replaced with their
InputFile
args analogs
- Most part of sending media messages functions was removed and replaced with their
0.24.1
TelegramBotAPI
:UpdateReceiver
was replaced to the packagecom.github.insanusmokrassar.TelegramBotAPI.updateshandlers
- All functions inside
com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.UpdatesPolling
are deprecated and will be removed in some soon versions. Their replacement are able insideTelegramBotAPI-extensions-api
UpdatesFilter
is interface for now- Previous
UpdatesFilter
class was renamed toSimpleUpdatesFilter
and for backward compatibility was added builder functionUpdatesFilter
, which will be removed in near releases FlowsUpdatesFilter
now implementsUpdatesFilter
- Previous
BaseSentMessageUpdate
andBaseEditMessageUpdate
interfaces was addedEditChannelPostUpdate
now is implementingBaseEditMessageUpdate
interfaceEditMessageUpdate
now is implementingBaseEditMessageUpdate
interfaceChannelPostUpdate
now is implementingBaseSentMessageUpdate
interfaceMessageUpdate
now is implementingBaseSentMessageUpdate
interface
UpdatesPoller
and all its usages, childs and childs usages now are deprecatedGetUpdates#timeout
type now isSeconds
(in fact it isInt
as previously)KtorRequestsExecutor
now is using a copy of incomingHttpClient
object and installHttpTimeout
featureAbstractRequestCallFactory
now setting up a custom delay in case if request isGetUpdates
TelegramBotAPI-extensions-api
:- All functions from
com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.UpdatesPolling
now available in packagecom.github.insanusmokrassar.TelegramBotAPI.extensions.api.updates.UpdatesPolling
- Now new method of getting updates available:
startGettingUpdates
withUpdatesFilter
as incoming first parameter startGettingUpdates
withreceiver
andallowedUpdates
parameters now will handle updates by itself
- All functions from
0.23.0 TelegramBotAPI 4.6
Poll
now is sealed classRegularPoll
type was added to represent polls with typeregular
QuizPoll
type was added to represent polls with typequiz
UnknownPollType
type was added to represent polls which are unknown in current version
AnonymousPollOption
was renamed toSimplePollOption
SendPoll
was rewritten as sealed classSendRegularPoll
was created and representsendPoll
method with typeregular
SendQuizPoll
was created and representsendPoll
method with typequiz
Poll#createRequest
extension was addedPollAnswerUpdate
type of update was addedPollAnswer
type was addedUpdatesFilter
now support work withPollAnswerUpdate
language
field in PreTextSource now correctly passed from telegram MessageEntitiesKeyboardButton
now is sealed class- Fixed problem of incorrect representation of this class (any type of request can be created separately)
- Added new types of
KeyboardButton
:UnknownKeyboardButton
SimpleKeyboardButton
RequestContactKeyboardButton
RequestLocationKeyboardButton
RequestPollKeyboardButton
- Added new type
KeyboardButtonPollType
:UnknownKeyboardButtonPollType
RegularKeyboardButtonPollType
QuizKeyboardButtonPollType
User
now is sealed classCommonUser
was added as representation of defaultUser
Bot
was added as representation of bot user (it is sealed class)ExtendedBot
with additional infoCommonBot
with simple info
GetMe
now returnExtendedBot
object- Now extension
javaLocale
is extension forCommonUser
0.23.1
- Versions updates:
- Klock
1.8.6
->1.8.7
- Ktor
1.3.0
->1.3.1
- Klock
- Now it is possible to get updates by polling with custom executor engine
CommonMultipartFileRequest
now is internal- Added
LiveLocation
class for more useful tracking live locations InvoiceOfPayment
is renamed toInvoiceContent
and now isMessageContent
instead ofPaymentInfo
SendInvoice
now returnContentMessage<InvoiceContent>
paymentInfo
inside ofCommonMessageImpl
now can be set only toSuccessfulPaymentInfo
- Added
RecordVideoNoteAction
andUploadVideoNoteAction
forrecord_video_note
andupload_video_note
actions - For most part of messages was added
RequestsExecutor
extensions for more useful way of usage toInputFile
extensions now will return more exact types- Now it is possible to send broadcast channels size for
FlowsUpdatesFilter
0.23.2
- Fixes in
InputMedia
-media
field was not included to serialization
0.23.3 Project separating prepare version
API Extensions
- Project created
- For
SendPhoto
was added new functions for uploading ofMultipartFile
deleteWebhook
extension forRequestsExecutor
was added
Telegram Bot API
- All
RequestsExecutor
extensions related to Telegram Bots API was replaced intoAPI Extensions
project
0.22.0
-
KtorCallFactory
must returnHttpStatement
instead ofHttpClientCall
-
SendMessage
was renamed toSendTextMessage
and previousSendMessage
is deprecated -
All
AbleToBe*
interfaces was renamed toPossibly*
AbleToBeEditedMessage
->PossiblyEditedMessage
AbleToBeForwardedMessage
->PossiblyForwardedMessage
AbleToBeMarkedUp
->PossiblyMarkedUp
AbleToBeEditedMessage
->PossiblyEditedMessage
-
ForwardedMessage
type was renamed toForwardInfo
AnonymousForwardedMessage
->AnonymousForwardInfo
UserForwardedMessage
->UserForwardInfo
ForwardedFromChannelMessage
->ForwardFromChannelInfo
PossiblyForwardedMessage#forwarded
field now renamed toforwardInfo
-
All serializers in library now are
internal
. If you have used some of them or I have marked as internal by a mistake - don't hesitate to say this. -
EditChatMessage
now have generic type and extendsSimpleRequest<ContentMessage<GenericType>>
-
ResendableContent
now extendsRequest<out Message>
instead ofRequest<Message>
-
Most part of requests have changed return type. They are listed below:
ForwardMessage
GetChatAdministrators
EditChatMessageLiveLocation
StopChatMessageLiveLocation
EditChatMessageText
EditChatMessageCaption
EditChatMessageMedia
EditChatMessageReplyMarkup
SendAnimation
SendAudio
SendContact
SendLocation
SendTextMessage
SendPoll
SendVenue
SendGame
SendDocument
SendMediaGroup
SendPhoto
SendVideo
SendVideoNote
SendVoice
SendSticker
-
Changed type of
createResend
GameContent
LocationContent
PollContent
TextContent
VenueContent
AnimationContent
AudioContent
DocumentContent
ContactContent
PhotoContent
VideoContent
VideoNoteContent
VoiceContent
StickerContent
-
Version updates:
- Ktor
1.2.6
->1.3.0
- Ktor
0.22.1 MediaContent#asInputMedia
- All
MediaContent
instances now can create theirInputMedia
analog - New annotation
PreviewFeature
was added to mark new thing as preview for the time while they can work incorrectly - Added links utils:
makeLinkToMessage
have two signatures - for direct creating using username and for abstract creating using chat id
0.22.2 CashTag and independent updates handling
cashtag
entity type was added- Several
Unknown*
realizations was added:UnknownUpdateType
UnknownMessageType
UnknownChatType
UnknownCallbackQueryType
UpdatesFilter
now have one additional income callback:unknownUpdateTypeCallback
createSimpleUpdateFilter
can receive one more callback:unknownCallback
(forunknownUpdateTypeCallback
)
0.21.0 TelegramBotAPI 4.5
-
All
MessageEntity
'es now are replaced withTextPart
-
Added support of strikethrough and underline
- Added
UnderlineTextSource
- Added
StrikethroughTextSource
- Added support in
RawMessageEntity
- Added
-
Added support of
MarkdownV2
-
Now will not be thrown exception when there is income unknown type of
RawMessageEntity
. Instead of this will be createdRegularTextSource
with the same text -
Fixed problem that usually string formatting did not trigger escaping of control characters
-
Actualized work with
pre
type of text - now it is possible to uselanguage
for formatting of text -
Removed constructor of
TextMentionTextSource
, which was deprecated previously -
All
TelegramMediaFile
instances now have fieldfileUniqueId
, which representsfile_unique_id
field from API -
Now
ChatPhoto
have two additional fields:smallFileUniqueId
andbigFileUniqueId
-
Now any administrator object instance have
customTitle
nullable field -
Added the new request
SetChatAdministratorCustomTitle
to manage the custom titles of administrators promoted by the bot. -
Added the field
slowModeDelay
to theExtendedSupergroupChat
objects. -
CaptionedInput
now have extensionfullEntitiesList
which will return list ofTextPart
withRegularSource
's -
TextPart
added - it will be used as part of some text and can be not related to telegram bot -
MultilevelTextSource
was added - it is type ofTextSource
, which can have subsources as parts of this text -
In all
TextSource
s all fields now are lazy for avoiding of potential risk for performance issues -
Updates in versions:
- Coroutines
1.3.2
->1.3.3
- Klock
1.8.0
->1.8.6
- UUID
0.0.6
->0.0.7
- Coroutines
0.20.0 MPP Migration
- Time library change:
joda-time
->com.soywiz.korlibs.klock:klock
Currencied
now using ascurrency
value with typeString
- For
Java
there isCurrencied#javaCurrency
extension function, which will give an old currency work way
- For
User
now have no fielduserLocale
- For
Java
there isUser#javaLocale
extension function, which will give an old locale work way
- For
0.20.1
User
now implementPrivateChat
TextMentionMessageEntity
now acceptPrivateChat
instead ofUser
in main constructorTextMentionMessageEntity
now contains not user, but containsPrivateChat
- Fixed:
TextMentionMessageEntity#asHtmlSource
previously worked incorrect
- Abstraction
TextSource
MessageEntity
now extendsTextSource
createFormattedText
method now acceptList<TextSource>
createHtmlText
method now acceptList<TextSource>
createMarkdownText
method now acceptList<TextSource>
- A lot of
TextSource
implementors was added. More info here- All
MessageEntity
implementations now are using newTextSource
analogues as delegates
- All
0.20.2
- New exception type
MessageIsNotModifierException
was added - New exception type
MessageToEditNotFoundException
was added - Now exceptions in requests will be caught correctly
0.20.3
- Now
LeftChatMamber
is aCommonEvent
0.20.4
- Now
setWebhook
supports setting up of path for listening - Now
setWebhook
supports custom listen address even if certificate was not provided
0.19.0 ImplicitReflection removing
- Total rework of serialization for requests. Now all
SimpleRequest
children have:requestSerializer
- field, which must provide serializer of current typeresultDeserializer
- field, which must provide opportunity to deserializer result. Previously it was a function
- Removed deprecations:
com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.WebhookPrivateKeyConfig
com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.UpdatesFilter
com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.createSimpleUpdateFilter
com.github.insanusmokrassar.TelegramBotAPI.utils.createMarkdownText
com.github.insanusmokrassar.TelegramBotAPI.utils.toMarkdownCaption
com.github.insanusmokrassar.TelegramBotAPI.utils.toMarkdownText
com.github.insanusmokrassar.TelegramBotAPI.updateshandlers.KtorUpdatesPoller
com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.CaptionedMediaContent
com.github.insanusmokrassar.TelegramBotAPI.types.message.CommonForwardedMessage
com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.CaptionedInputMedia
com.github.insanusmokrassar.TelegramBotAPI.types.games.Game#text
com.github.insanusmokrassar.TelegramBotAPI.types.games.Game#textEntities
com.github.insanusmokrassar.TelegramBotAPI.types.files.PathedFileKt.makeFileUrl
com.github.insanusmokrassar.TelegramBotAPI.types.files.PathedFileKt.downloadingFilesBaseUrl
com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.base.Data
com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ByInlineMessageId
com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ByMessageId
com.github.insanusmokrassar.TelegramBotAPI.bot.RequestException
com.github.insanusmokrassar.TelegramBotAPI.bot.exceptions.ReplyMessageNotFound
com.github.insanusmokrassar.TelegramBotAPI.bot.BaseRequestsExecutor#baseUrl
com.github.insanusmokrassar.TelegramBotAPI.bot.BaseRequestsExecutor#constructor(token, hostUrl)
com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.KtorRequestsExecutor#constructor(token, client, hostUrl, callsFactories, excludeDefaultFactories, requestsLimiter, jsonFormatter)
com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.KtorRequestsExecutor#constructor(token, engine, hostUrl)
0.18.0 Raws cleaning
-
Made internal and not available outside of library:
RawMessage
RawUpdate
RawChatMember
RawMessageEntity
RawInlineQuery
RawCallbackQuery
RawChosenInlineResult
-
All
RawMessage
usages was replaced withMessage
interface (with some of other raw classes was made the same things)TelegramBotAPIMessageDeserializationStrategy
was created. It was used for deserialization of Telegram Bot API incoming messagesTelegramBotAPIMessageDeserializeOnlySerializer
was created. It MUST NOT be used to serialize messages
-
Update of description
-
Make
Game
object a little bit more standartizated -
Game
now is not serializable and have no additional trash, related to serialization -
TelegramFile
was removed
0.18.1 Libraries update
- Update libraries:
kotlin
: 1.3.41 -> 1.3.61kotlin coroutines
: 1.2.2 -> 1.3.2kotlin serialization
: 0.11.1 -> 0.14.0joda time
: 2.10.3 -> 2.10.5ktor
: 1.2.3 -> 1.2.6
BotAction
now will be deserialized in a little bit other wayBotActionSerializer
now is internal
- Most part of serializers now are objects (instead of classes as was previously)
0.17.0 July 29, 2019 API Update
Libraries updates:
- Kotlin version
1.3.31
->1.3.41
- Kotlin Coroutines version
1.2.1
->1.2.2
- Kotlin Serialization version
0.11.0
->0.11.1
- Joda Time version
2.10.1
->2.10.3
- ktor version
1.1.4
->1.2.3
Changes according to July 29, 2019 Telegram Bot API update:
Sticker
andStickerSet
now have fieldisAnimated
ChatPermissions
object was added,GroupChat
interface gotpermissions
field, requestSetChatPermissions
was addedGroupChat
object now have no fieldallMembersAreAdmins
SpecialRightsChatMember
was added for administrators and restricted members rights union, chat members abstractions was replaced intoabstracts
package and available permissions was updatedRestrictChatMember
request now acceptpermissions
object instead of separated permissions- All
GroupChat
instances have description
Other important changes:
- Totally reworked chats hierarchy.
Extended
abstractions was added for cases when calledGetChat
request RawChat
boilerplate was removed and replaced by serializersBotCommandMessageEntity#command
will not contain/
/!
parts and also will cut outside of command begin token (/
or!
) and username token (@
) or end of command (any space character)RequestsExecutor
now isCloseable
TelegramAPIUrlsKeeper
was added to provide more comfortable work with file urls and other things like this
0.16.0 Bot API 4.3
LoginURL
andLoginURLInlineKeyboardButton
has been addedreplyMarkup
field was added to theCommonMessage
objects viaAbleToBeMarkedUp
interfaceSwitchInlineQueryCurrentChatInlineKeyboardButton#switchInlineQueryCurrentChat
field fixedInlineKeyboardButton
now is sealed class and all its possible realisations are inside of its class fileString#asUsername
method renamed toString#toUsername
- Several
toChatId
extensions added
0.16.1
- Now old uncommon
CaptionedMediaContent
andCaptionedInputMedia
are replaced by almost the same interfacesCaptionedInput
andCaptionedOutput
. They are both implementingCaptioned
interface AnimationContent
now isCaptionedInput
0.15.0
- Old
UpdatesPoller
removed (was deprecated) UpdatesPoller
renamed toKtorUpdatesPoller
- Now
KtorUpdatesPoller
do not use additional delay between requests and await answer from Telegram all timeout time - Added abstraction
UpdatesPoller
- Changed signature of the most count of
startGettingOfUpdates
:- They are not
suspend
for now - They are return
UpdatesPoller
- They are using
timeoutMillis
instead ofrequestsDelayMillis
- They are not
- Added
CIO
ktor client engine as lightweight default engine for long-polling
0.14.0
- Now library have no default engine for both webhooks and requests executor. It is required for clients to set some default library
- All proxy help methods was removed . They are will be replaced in separated project
Ktor
version1.1.3
->1.1.4
- Requests results now always decoding as
UTF-8
AbstractRequestCallFactory
was added with cache of methods urls to avoid memory leaks- Small refactoring of work with response in
KtorRequestsExecutor
- Kotlin version
1.3.30
->1.3.31
- Kotlin coroutines
1.2.0
->1.2.1
CommonForwardedMessage
was renamed toUserForwardedMessage
- All forwarded messages are now just childs of
ForwardedMessage
:AnonymousForwardedMessage
- for messages without forwarded infoUserForwardedMessage
- for messages from users and groups (contains not message id)ForwardedFromChannelMessage
- for messages from channels
- Changed logic of forwarded messages preparing
0.14.1
- Replace
UpdatesFilter
andUpdatesPoller
into another package - Replace
WebhookPrivateKeyConfig
- Added
FlowsUpdatesFilter
UpdatesFilter
now have additional callback for pollsStopPoll#replyMarkup
now is optional
0.14.2 MediaGroups edit hotfixes
convertWithMediaGroupUpdates
extension added- All media group converting extensions are internal for now
- Fixes according to updates in converting of updates to media group updates
0.13.0 Telegram Polls
- Type
PollOption
andAnonymousPollOption
added - Type
Poll
added - Type
PollUpdate
added and implemented inRawUpdate
. NowPollUpdate
can be retrieved fromRawUpdate
- Type
PollContent
added - now it can be a value ofContentMessage#content
- Request
SendPoll
added andPollContent#createResend
now use it ByInlineMessageId
is deprecated (useInlineMessageAction
instead)ByMessageId
is deprecated (useMessageAction
instead)- Most part of requests which are working with identifiers of messages now implement
MessageAction
directly or by their parents StopPoll
implemented- All current
Chat
abstractions are deprecated and rewritten as typealiases. UseChat
abstractions fromcom.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts
package - Common Groups now may have pinned message
is_member
field added intoRestrictedChatMember
- BREAK CHANGES Now
ForwardedMessages
can beAnonymousForwardedMessage
andPublicForwardedMessage
. Old implementations now extendPublicForwardedMessage
0.12.0 Webhooks
- Added
DataRequest
interface which replaceData
interface MultipartRequestImpl
now useDataRequest
- All requests which implements
Data
now implementDataRequest
- 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 andWebhookInfo
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
toReplyMessageNotFoundException
- Added
List<BaseMessageUpdate>#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 isMediaGroupUpdate
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 forMediaGroupMessage
updateId
now represent LAST id of origins updates
- It is subtype of
UpdatesFilter
and other objects now work withUpdateReceiver<Update>
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 containuser
field (butCommonMediaGroupMessage
will have) - Now
MediaCollectionContent
isMediaContent
(classes of this interface must choose best media for present out)PhotoContent
now choose biggest photo size from its collection asmedia
- 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
andString#toHtml
- Add tools for work with html captions and texts
MessageContent
which using captions or text now have default parse modeHTMLParseMode
due to issue with escaping of]
in links titles- Added
Markdown
andHTML
type aliases which actually meansMarkdownParseMode
andHTMLParseMode
ChatId
now have extensionlink
which will automatically create link liketg://user?id=<chatId>
- 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 MediaContent
improvements
- Now
MediaGroupContent
isMediaContent
- All
MedaContent
now have no generics and have basicTelegramMediaFile
media field
0.12.6 Libraries updates
kotlin
version1.3.21
->1.3.30
kotlin coroutines
version1.1.1
->1.2.0
kotlin serialization
version0.10.0
->0.11.0
ktor
version1.1.2
->1.1.3
- Added
DeleteWebhook
request - All default
startGettingOfUpdates
(in fact - methodstart
ofUpdatesPoller
) are suspend and will try to delete webhook
0.12.7 Hotfix version
- Now temporary all requests of input media will contains
file
field
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
andtypes
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
isCommonMessage
withMediaGroupContent
content - Added extensions
replyTo
,forwarded
andchat
forList<BaseMessageUpdated>
for comfortable work with media groups lists - Fix
parseMode
ofInputTextMessageContent
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 you can create username object using string which is not starting with
- Now most part of usernames in library have type
Username
- Fix
replyMarkup
inInlineQueryResultArticle
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 incom.github.insanusmokrassar.TelegramBotAPI.bot.Ktor
package - Replace
ProxySettings
data class insettings
package, deprecate old link BaseRequestsExecutor
now have no it's own scope- Add
RequestLimiter
and base realisations - Now
KtorRequestsExecutor
can receive as one of parametersRequestLimiter
(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 withRegularTextMessageEntity
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
owncreateResends
realisation
0.9.2
RequestsExecutor#executeAsync(Request, CoroutineScope)
now will returnDeferred
for cases when you need resultRequestsExecutor#executeUnsafe
will automatically retry request if it was unsuccessful and retries > 0
0.9.3
KtorRequestsExecutor
now can use customJSON
string formatter (by default - non strict)ResponseParameters
renamed toResponse
- Add
RequestError
sealed class and described in documentation known errors - Add
ResponseParametersRaw
which can create error based on input parameters - Add
parameters
field inResponse
and remove useless fields fromResponse
- Add
leftToRetry
parameter inRetryAfterError
- Add handling of
RetryAfterError
inKtorRequestsExecutor
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 forCaptionedMediaContent
andTextContent
- Added
ResendableContent
and realize in different contents- Animation
- Audio
- Document
- Photo
- Sticker
- Video
- VideoNote
- Voice
MessageContent
now isResendableContent
- Now all media sending factories which contains
thumb
have defaultnull
value ChatIdentifier
classes now aredata
classes- Now
MediaGroupContent
interface containstoMediaGroupMemberInputMedia
method for easily creating mirror input media - Change signature of
Update
- Now
Update
is untyped and data isAny
- Now
- Media groups now are separated type of updates and you can subscribe on that receiving directly
- Now
AdministratorChatMember
is interface andCreatorChatMember
implement it
0.8.3
- Now
ForwardedMessage
contains nullablefrom
0.8.2
- Add
FromUserMessage
which must be implemented in all messages realisations which haveuser
field - Add
CommonMediaGroupMessage
which in fact extension ofMediaGroupMessage
with implementation ofFromUserMessage
CommonMessageImpl
now implementingFromUserMessage
0.8.1
- Update
MediaGroupMessage
interface - Add implementation of
MediaGroupMessage
- Add generating of
MediaGroupMessage
inRawMessage