Kotlin Telegram Bot API Library (tgbotapi)
159 subscribers
17 photos
1 video
1 file
276 links
https://github.com/InsanusMokrassar/ktgbotapi

Channel with updates from Kotlin Multiplatform TelegramBotAPI library

DM: @InsanusMokrassar
Forum: @ktgbotapi_forum
Projects Releases: @inmodev
Support me: https://t.me/inmodev/431
Download Telegram
Hello :) Currently in 0.36.0 I am preparing special version of BehaviourBuilder with FSM. How do you think, it would be better to include FSM in common BehaviourBuilder or create new extension with FSM?
Final Results
50%
New package with FSM - to avoid explicit things including if you want not to use FSM
50%
Including FSM in old BehaviourBuilder - to avoid new packages and enhance logic of standard builder
A little update is on the way :)
New version 0.36.0 has been released and it contains a lot of important changes:

• As always, all deprecations have been removed
• New packages for extensions 😊 now you may write tgbotapi.api instead tgboatpi.extensions.api and similarly for all other extensions. Old packages will be available until next major release
• New keyboard DSL: say goodbye to ReplyKeyboardMarkup(matrix { row { ... } }) and hello to replyKeyboard { row { simpleButton("") } }
• New integration of FSM into Behaviour Builder in new package tgbotapi.behaviour_builder.fsm: in this realization taken attention for more closed work with FSM inside of telegram bots
• New type WithUser. Now FromUser is extending WithUser and any tgbotapi type with user implements type WithUser. It is imortant, that constructors of classes-implementors of FromUser has changed their incoming parameters names from user to from due to renames inside of FromUser, but you still may use user field for FromUser objects

Besides, I recommend you to read a small note about flows and changes of mechanisms inside of behaviour builder and full changelog if you want to know all news
Hello :) currently @djaler is preparing improvement for Entities Builder. This improvement will add separator TextSource to EntitiesBuilder which will be automatically added between incoming text sources automatically. We faced with one important moment: we want to reuse separator in sub builders, BUT we are not sure how to make it good. There are several options we found:
For some explanation:

buildEntities variant:

buildEntities {
bold(
buildEntities { +"Some bold" + italic("and italic") }
)
+ "and regular"
}


Should print "Some bold and italic and regular"

Second variant mostly about renaming buildEntities extension in the example to make it more obvious (it is not very predictive on first try that the second buildEntities will reuse its parent separator)

Of course, your solutions are welcome too
Hello :) as you know, Telegram Bot API 5.4 has been introduced and becides I had updated FSM in my microutils libs. Due to these updates it was solved to:

• Make new major version
• Make breaking changes in FSM subproject
• Of course, implement telegram bot api 5.4 😊

Due to changes in FSM, it is not recommended to start some project with that. I plan to release new version in one week (ideally, this monday), so, I hope that the delay will not be big :)
Which JVM do you use in your bots?
Anonymous Poll
25%
Android :)
25%
8 (1.8)
0%
9
6%
10
63%
11
44%
>11
Version 0.37.0 is out and you may use Telegram Bot API 5.4 in your bots. Besides here:

• Improvements in Behaviour Builder FSM for more stype-strict using of states
• Dependencies updates
Deprecations removing

P. S. See Examples migration commit for help in migration
Forwarded from inmo.dev
InsanusMokrassar/TelegramBotAPI: 0.37.1

Common:
Version:
Serialization: 1.3.0 -> 1.3.1
Klock: 2.4.7 -> 2.4.8
MicroUtils: 0.8.1 -> 0.8.2
I have added several docker-oriented files in the template project. So, now it must be easier to create your projects from template and run your bot in the docker environment
Hello :) I plan to remove several functions in MicroUtils library which seems to be useless. Could you answer, which one of these functions do you use in your projects? (thank you :) )
Anonymous Poll
100%
safely {}
100%
safelyWithouExceptions {}
100%
safelySkippingExceptions {}
100%
launchWithoutExceptions {}
100%
safelyWithResult {}
0%
runCatchingSafely {}
0%
safelyWithContextExceptionHandler {}
0%
runCatchingSafelyWithoutExceptions {}
Hello :) with the new update of Bots API was introduced the field has_protected_content. I suppose, that this field will be added as additional interface PossiblyProtectedContentMessage, but when I tried to add it, I faced to the fact that all Possibly* interfaces could be extenders of ContentMessage instead of just Message. The problem here is that ContentMessage require generic parameter and result PossiblyReplyMessage could looks like:

* PossiblyReplyMessage when it extends ContentMessage<MessageContent>
* PossiblyReplyMessage<MessageContent> when it extends ContentMessage<T>

So, lets answer next question - what would be better?