1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2025-11-16 12:00:18 +00:00

Compare commits

..

1132 Commits

Author SHA1 Message Date
f5b248f534 update micro_utils 2021-06-05 15:48:38 +06:00
3ebcbe2860 builder extending 2021-06-04 01:07:53 +06:00
3829e04b0c Update CHANGELOG.md 2021-06-04 00:32:42 +06:00
39fa36426f Update CHANGELOG.md 2021-06-03 23:25:19 +06:00
a265e5ecbf Update CHANGELOG.md 2021-06-03 23:09:46 +06:00
86e78c4ba0 Update packages_publishing.yml 2021-05-30 01:20:25 +06:00
a6451ca394 update workflows to separate build and publishing 2021-05-29 17:05:18 +06:00
521a3a8c35 fix internal deprecations 2021-05-29 16:02:55 +06:00
173839c677 small refactoring 2021-05-29 15:51:45 +06:00
bb7d47a33b fix build 2021-05-29 15:46:13 +06:00
5c0e58caec buildable except of jvm tests 2021-05-29 15:34:14 +06:00
72c3623d30 small fillup of changelog 2021-05-29 14:32:45 +06:00
fe1831fc19 deprecations removed 2021-05-29 14:31:44 +06:00
7825ec3010 a lot of types has been converted to sealed 2021-05-29 14:23:25 +06:00
12184cd2be InlineKeyboardButton now is an interface 2021-05-29 13:40:48 +06:00
e90e25ab01 BotAction now is an interface 2021-05-29 13:39:43 +06:00
004ff0b490 update dependencies and changelog 2021-05-29 13:29:01 +06:00
07faba7d38 Update CHANGELOG.md 2021-05-27 00:04:42 +06:00
e5584cd8b4 Update gradle.properties 2021-05-27 00:04:11 +06:00
6acc9ef2b0 update klock 2021-05-26 22:00:57 +06:00
169fc0401a update dependencies 2021-05-26 21:55:09 +06:00
dcfcea65cb start 0.35.0 2021-05-26 21:51:29 +06:00
eedb36ede7 Merge pull request #383 from InsanusMokrassar/gradle-wrapper/6.9
Update gradle-wrapper
2021-05-08 17:19:21 +06:00
eaee334ff6 Update gradle-wrapper.properties 2021-05-08 16:44:14 +06:00
5c694e8625 Update CHANGELOG.md 2021-05-06 13:24:23 +06:00
0306c40fb2 Update CHANGELOG.md 2021-05-06 13:24:11 +06:00
fd915553e3 Merge pull request #381 from InsanusMokrassar/0.34.1
0.34.1
2021-05-05 19:37:32 +06:00
ec1c0ba8bb update microutils 2021-05-05 19:20:51 +06:00
12a64ec1d1 update ktor 2021-05-05 19:12:59 +06:00
59d7a7c781 fix in text sources list creating 2021-05-05 19:02:22 +06:00
cabfd7c76b start 0.34.1 2021-05-05 18:53:26 +06:00
f12f52899c Merge pull request #369 from InsanusMokrassar/renovate/org.jetbrains.dokka-gfm-plugin-1.x
Update dependency org.jetbrains.dokka:gfm-plugin to v1.4.32
2021-04-30 09:55:54 +06:00
Renovate Bot
ed067db20f Update dependency org.jetbrains.dokka:gfm-plugin to v1.4.32 2021-04-29 13:36:31 +00:00
b055268979 Merge pull request #362 from InsanusMokrassar/0.34.0
0.34.0
2021-04-29 19:03:29 +06:00
2584839d66 update core readme 2021-04-29 19:02:51 +06:00
63946e860d note about UnknownExtendedChat 2021-04-29 17:45:19 +06:00
90df436c63 small refactor of usage TextedInput 2021-04-29 17:40:01 +06:00
d3c8b49b10 Update CHANGELOG.md 2021-04-29 17:33:27 +06:00
c1372b55bc Note about ChatType in CHANGRLOG 2021-04-29 15:26:08 +06:00
b6c7ece995 small hotfix 2021-04-29 15:09:45 +06:00
44e7c80f43 remove redundant extensions for parseCommandsWithParams 2021-04-29 15:08:05 +06:00
1e41e95333 fixes in parseCommandsWithParams 2021-04-29 15:07:16 +06:00
03d4d715c0 hotfix 2021-04-29 11:59:44 +06:00
ab060d02ea deprecate Explained 2021-04-29 11:59:44 +06:00
f447be02dc Update InlineKeyboardMarkup.kt 2021-04-29 01:18:07 +06:00
eb923a6338 fixes 2021-04-28 23:22:13 +06:00
0914710cc7 update voice chats 2021-04-28 20:08:02 +06:00
1f7450844f optimize imports 2021-04-28 19:59:30 +06:00
167c214e35 migration to avoid using of TextPart 2021-04-28 19:54:57 +06:00
42a8d649cd Update CHANGELOG.md 2021-04-27 23:43:04 +06:00
eb3f180cc6 textSources now is main property 2021-04-27 16:08:36 +06:00
70f96ac8fa completing of captioned input deprecation 2021-04-26 21:34:13 +06:00
d69b2e09d5 migration from CaptionedInput 2021-04-26 21:25:52 +06:00
946b0222df fix botaction tests 2021-04-26 21:10:38 +06:00
7da315dbaf fix botaction tests 2021-04-26 21:08:52 +06:00
87071ca52c deprecation of an old record audio and upload audio bot actions 2021-04-26 21:02:11 +06:00
b2770e3ecc record_voice and upload_voice 2021-04-26 20:52:20 +06:00
df63ccfe07 VoiceChatScheduled 2021-04-26 20:47:03 +06:00
694bec22a2 include chat_type 2021-04-26 20:42:26 +06:00
6a3588bb8d InputInvoiceMessageContent 2021-04-26 20:23:26 +06:00
a26568aa29 maxTipAmounts and suggestedTipAmounts support in SendInvoice 2021-04-26 20:01:14 +06:00
cd30660256 update SendInvoice 2021-04-26 19:28:19 +06:00
1846d20b0d start 0.34.0 2021-04-26 19:15:55 +06:00
f13207064e Merge pull request #361 from InsanusMokrassar/0.33.4
0.33.4
2021-04-17 16:02:14 +06:00
61be689aca fix of build 2021-04-17 14:36:23 +06:00
03f8d65bb6 fix of build 2021-04-17 11:14:35 +06:00
2dc8beba8a update classcasts 2021-04-16 22:00:45 +06:00
5451adf4ac FromUserMessage extends Message 2021-04-16 18:07:27 +06:00
9982534001 updates in TextSourceSerializer 2021-04-15 14:34:05 +06:00
c0451d4c8f Update gradle-wrapper.properties 2021-04-15 13:56:52 +06:00
a9d65944e6 update MicroUtils 2021-04-13 15:53:35 +06:00
39598dcb69 fill CHANGELOG 2021-04-13 01:54:45 +06:00
3069a6084c fixes in parseCommandsWithParams 2021-04-13 01:50:41 +06:00
e7bbce3fa7 update uuid dependency 2021-04-12 23:32:50 +06:00
0b361163f2 TextSourceSerializer 2021-04-12 23:23:18 +06:00
6aba2ff641 start 0.33.4 2021-04-12 20:57:12 +06:00
6b761ab37d Update gradle wrapper 2021-04-11 04:06:30 +06:00
b9c8a89af9 Merge pull request #357 from InsanusMokrassar/0.33.3
0.33.3
2021-04-05 19:41:52 +06:00
a42c5c63c4 fillup changelog 2021-04-05 19:08:12 +06:00
fc1a029acb fix of #358 2021-04-05 19:06:49 +06:00
f90ae2f918 include weakLaunch in behaviour builder 2021-04-05 18:15:10 +06:00
019b260888 update ktor 2021-04-05 18:11:29 +06:00
0831f2fa75 update microutils 2021-04-05 17:21:59 +06:00
32ae9d2b16 hotfix 2021-04-05 16:50:31 +06:00
b975a1b036 updates in behaviour builder 2021-04-05 16:41:27 +06:00
f4b1e4a150 start 0.33.3 2021-04-05 13:42:48 +06:00
97031512d4 Merge pull request #356 from InsanusMokrassar/0.33.2
0.33.2
2021-04-03 15:39:14 +06:00
353df43109 update microutils 2021-04-03 15:13:20 +06:00
4e55460834 fix in doInSubContext 2021-04-03 15:05:25 +06:00
e2e235bd6c behaviour builder updates 2021-04-03 14:51:21 +06:00
8ced95bc2f start 0.33.2 2021-04-03 14:24:24 +06:00
685e4af8f5 Merge pull request #345 from InsanusMokrassar/0.33.1
0.33.1
2021-03-26 09:13:15 +06:00
0b2f7a3899 update condition for ReplyMessageNotFoundException 2021-03-26 07:03:33 +06:00
112c86c9da remove caption based messages extension for parsing of commands 2021-03-24 13:56:51 +06:00
1ddd138ff7 update kdocs for new function 2021-03-24 13:44:27 +06:00
1a5d1cde78 add parseCommandsWithParams for text inputs 2021-03-24 13:43:32 +06:00
5b620014cb update kotlin version 2021-03-24 13:14:09 +06:00
80093cb5a9 Update kdocs.yml 2021-03-21 23:22:16 +06:00
9f8e8ee21b update dependencies 2021-03-19 20:20:07 +06:00
3de3bb6133 start 0.33.1 2021-03-19 20:18:32 +06:00
308fb9274b Update kdocs.yml 2021-03-17 21:14:05 +06:00
d14ca7bbdc Update kdocs.yml 2021-03-17 21:13:52 +06:00
dbdd9b5ad2 update dokka 2021-03-16 23:01:26 +06:00
6dd27cb0bf fixes in names of workflows 2021-03-16 22:41:45 +06:00
210a52485b add kdocs yml config 2021-03-16 22:39:54 +06:00
5c11b60ea6 fix dokka config 2021-03-16 22:33:53 +06:00
60c3a0d7af update core info about current version 2021-03-16 22:21:15 +06:00
8d777e1c0e Update dokka version 2021-03-16 16:30:13 +06:00
4e019eb8bb Update packages_publishing.yml 2021-03-12 20:11:26 +06:00
bd80562c2a Merge pull request #337 from InsanusMokrassar/0.33.0
0.33.0
2021-03-12 15:47:24 +06:00
9fc07f2ff3 fix build 2021-03-12 15:03:11 +06:00
a4bae5133a fill changelog 2021-03-12 14:58:13 +06:00
7bb272f2fa update compatibility note 2021-03-12 14:39:27 +06:00
72cf38d3bb fill Behaviour Builder for ChatMemberUpdated 2021-03-12 14:36:10 +06:00
0adee13cba remove deprecations 2021-03-11 22:28:56 +06:00
f9e3e57f24 migrate 0.32.10 -> 0.33.0 2021-03-11 21:44:08 +06:00
d7d4adc8e4 optimize imports 2021-03-11 21:39:34 +06:00
e9b074a36c updates of FlowsUpdatesFilter 2021-03-11 21:36:29 +06:00
65cba0f014 fill api of chat invite links 2021-03-11 21:25:11 +06:00
36202133a1 update classcasts 2021-03-11 21:06:25 +06:00
66f7801b32 fix ChatInviteLinkRequest 2021-03-11 20:41:47 +06:00
e7265829d1 include ChatMemberUpdated functionality 2021-03-11 20:17:08 +06:00
9ad5bfbc57 remove BotInviteChatLink 2021-03-11 16:36:15 +06:00
aba62ba930 chatmember serializers are public 2021-03-11 16:00:47 +06:00
40d702a311 add representations of all chat invite link functionality 2021-03-10 22:46:56 +06:00
233d893b5a add isOff extension for MessageAutoDeleteTimerChanged 2021-03-09 22:33:05 +06:00
0faca5838c fixes in events builder behaviours 2021-03-09 22:14:16 +06:00
838f62aa84 shortcuts seconds24Hours and seconds7Days are consts for now 2021-03-09 22:06:20 +06:00
bc21a680bc fixes for MessageAutoDeleteTimerChanged 2021-03-09 22:00:17 +06:00
8bb60bea34 now MessageAutoDeleteTimerChanged implementing ChannelEvent and GroupEvent 2021-03-09 21:37:25 +06:00
8daadcff95 now MessageAutoDeleteTimerChanged implementing ChannelEvent and GroupEvent 2021-03-09 21:35:53 +06:00
2a1e624641 VoiceChatParticipantsInvited type now is data class 2021-03-09 20:23:03 +06:00
696822db02 add behaviour builder events updates 2021-03-09 20:04:44 +06:00
ded501d963 remove regular build 2021-03-09 19:52:46 +06:00
86e506c33d include message_auto_delete_timer_change 2021-03-09 19:45:19 +06:00
9902b00e85 include revokeMessages in kickChatMember 2021-03-09 19:33:05 +06:00
53524abcbb include canManageChat 2021-03-09 19:26:30 +06:00
7639b15dc6 voice chats functionality included 2021-03-09 19:19:15 +06:00
61b720c61f fix of content waiters and expecters 2021-03-09 16:54:32 +06:00
baf4c74b69 update micro_utils 2021-03-09 16:46:08 +06:00
367cfff2cb start 0.32.10 2021-03-09 16:45:13 +06:00
75e8d0f62d Merge pull request #325 from InsanusMokrassar/0.32.9
0.32.9
2021-03-05 01:08:58 +06:00
c521a5f9a4 Update CHANGELOG.md 2021-03-03 22:32:44 +06:00
c5513365c2 Update gradle.properties 2021-03-03 22:31:29 +06:00
d184ce7a0f Update mpp_publish_template.kpsb 2021-03-03 01:39:18 +06:00
a3bff3f24d Update publish.gradle 2021-03-03 01:37:38 +06:00
a835b1dcbb Update mpp_publish_template.kpsb 2021-03-03 01:33:50 +06:00
ffed2b80a5 update publish scripts to avoid useless repos 2021-03-02 16:45:13 +06:00
ff24b9f35b add workflow for packages publication 2021-03-02 16:25:55 +06:00
1287852334 update microutils version 2021-03-02 15:26:52 +06:00
fc2f177e38 update dependencies 2021-02-28 22:24:34 +06:00
1efd4dce6e start 0.32.9 2021-02-28 22:21:57 +06:00
69b5a16b17 Update gradle-wrapper.properties 2021-02-23 09:53:45 +06:00
77b531ad06 Merge pull request #307 from InsanusMokrassar/0.32.8
0.32.8
2021-02-22 01:35:40 +06:00
a98d5d9abd update micro_utils 2021-02-21 22:50:47 +06:00
104653ac41 update serialization 2021-02-21 21:15:40 +06:00
63337b8285 start 0.32.8 2021-02-21 21:13:23 +06:00
5cc0bbb31b Merge pull request #303 from InsanusMokrassar/0.32.7
0.32.7
2021-02-18 00:34:46 +06:00
563d784603 RestrictionsChatPermissions 2021-02-18 00:28:36 +06:00
0d9f18f346 DiceAnimationType class casts 2021-02-17 22:29:29 +06:00
23ceaf8e97 LeftRestrictionsChatPermissions 2021-02-17 22:12:58 +06:00
fe2dffd8b5 BehaviourContext updates 2021-02-17 22:11:26 +06:00
eeb46817c3 start 0.32.7 2021-02-17 22:00:46 +06:00
5ab00da31d Merge pull request #300 from InsanusMokrassar/0.32.6
0.32.6
2021-02-17 17:15:40 +06:00
841ae73f7c replyWithDice 2021-02-17 17:10:21 +06:00
41b4d29917 updates in slot machine utils 2021-02-17 16:58:57 +06:00
f8b3c44146 update micro_utils 2021-02-16 13:48:32 +06:00
f0eb670c3f start 0.32.6 2021-02-16 13:47:31 +06:00
fe5d94f31e Update README.md 2021-02-13 10:09:33 +06:00
7901d0a223 Update README.md 2021-02-13 01:42:35 +06:00
799f9123ba Update README.md 2021-02-13 01:38:31 +06:00
f77f010e66 Update README.md 2021-02-11 13:38:55 +06:00
67ddf8d809 Update README.md 2021-02-11 13:37:24 +06:00
81afa46253 Update README.md 2021-02-11 13:36:53 +06:00
a5bba76f07 Update README.md 2021-02-11 13:35:06 +06:00
d882cf9c97 update readme 2021-02-11 12:06:34 +06:00
2e27b8b64d Merge pull request #295 from InsanusMokrassar/0.32.5
0.32.5
2021-02-09 19:13:42 +06:00
4df800eaa9 fix of #291 2021-02-09 19:07:31 +06:00
8d27349868 update content resends and different other things 2021-02-09 18:26:10 +06:00
2a89c41a58 fix of #292 2021-02-09 17:15:28 +06:00
098b5cc393 rewrite createAccumulatedUpdatesRetrieverFlow onto channelFlow 2021-02-09 16:33:48 +06:00
10f4817283 solution of #293 2021-02-08 19:35:32 +06:00
4449893608 fix of #294 2021-02-08 18:15:54 +06:00
3a53f41f66 start 0.32.5 2021-02-08 11:36:20 +06:00
7cd366d893 Update README.md 2021-02-07 18:02:20 +06:00
1309a4111c Merge pull request #290 from InsanusMokrassar/0.32.4
content messages renames
2021-02-07 16:59:51 +06:00
0ca815760b content messages renames 2021-02-07 16:54:48 +06:00
eca0680f2f update readme 2021-02-07 12:44:38 +06:00
d472d371ed Merge pull request #282 from InsanusMokrassar/0.32.4
0.32.4
2021-02-07 12:43:08 +06:00
4748b6813a ExceptionsOnlyLimiter now will not use Result to provide success/failure state of result 2021-02-07 12:40:05 +06:00
a2ea15d4b0 update wrapper version 2021-02-07 11:02:13 +06:00
27dc302f5d update for compiling 2021-02-06 11:53:30 +06:00
baf8ed3a77 now JVM part will be compiled with IR 2021-02-06 00:52:39 +06:00
18913af3c3 update publishing scripts 2021-02-06 00:50:51 +06:00
51871ea94c update micro_utils version 2021-02-05 16:08:45 +06:00
6a625d7b9f update publishing scripts 2021-02-05 16:08:28 +06:00
0b93b472a3 update klock 2021-02-05 14:22:42 +06:00
ff16f9a315 Update README.md 2021-02-05 01:18:38 +06:00
86bfe043a5 update dependencies 2021-02-03 23:05:17 +06:00
fa18e7299d 0.32.4 2021-02-03 22:59:37 +06:00
c986025075 Merge pull request #277 from InsanusMokrassar/0.32.3
0.32.3
2021-02-02 11:44:53 +06:00
e8a7ea9ce4 inline qieries expectators and waiters 2021-02-02 11:17:51 +06:00
30f35e5488 start 0.32.3 2021-02-02 11:07:30 +06:00
b626974ea7 Create dependabot.yml 2021-02-01 23:22:26 +06:00
128b782a27 Merge pull request #276 from InsanusMokrassar/0.32.2
0.32.2
2021-02-01 21:43:21 +06:00
dc83b8d77a fix of #275 and several other internal problems 2021-02-01 21:09:11 +06:00
2aac6c0bde start 0.32.2 2021-02-01 21:04:54 +06:00
b637d0d2a6 Merge pull request #274 from InsanusMokrassar/0.32.1
0.32.1
2021-01-30 21:06:15 +06:00
d12cba2343 replacing of withContent and requireWithContent and extending of extensions receivers types 2021-01-30 20:59:26 +06:00
450c7e6474 fix of #273 2021-01-30 20:05:07 +06:00
a35fb40a66 fix of #272 2021-01-30 19:35:53 +06:00
8731aa2c26 start 0.32.1 2021-01-30 19:33:38 +06:00
32e305537d Merge pull request #260 from InsanusMokrassar/0.32.0
0.32.0
2021-01-29 17:00:06 +06:00
ec0a10e36e fillup changelog 2021-01-29 13:28:18 +06:00
131ec4d6d5 renames of EncryptedPassportElements 2021-01-29 12:44:13 +06:00
ecc608f51a add additional variant of doInDecryptionContextWithPKCS8Key 2021-01-29 10:44:11 +06:00
040654f131 refill readme 2021-01-29 01:18:44 +06:00
9e73d0c461 add opportunity to manually set up delay for media groups webhooks 2021-01-29 00:56:47 +06:00
d67c80bc99 ClassCasts update for SecureValue 2021-01-28 22:21:21 +06:00
b0eef4f82d update ktor 2021-01-28 22:06:52 +06:00
fbe91a6321 complete preview tools for passport 2021-01-28 22:03:14 +06:00
15066c9d63 add SecureData and DecryptedCredentials 2021-01-28 17:08:25 +06:00
e0bf67d8f9 global update of passport 2021-01-28 16:03:30 +06:00
1dc3ce2fb5 add passport in API 2021-01-25 10:43:51 +06:00
0c71133969 add expectations and triggers for passport 2021-01-25 10:29:11 +06:00
1359dd549f Create regular-build.yml 2021-01-25 04:42:23 +06:00
c425e2ecc3 update classcasts 2021-01-23 21:10:57 +06:00
4d63e3a17d complete tools for handling of encrypted data 2021-01-23 20:50:46 +06:00
d34deade0d temporal state (currently tools for files decryption in JS do work 2021-01-23 18:49:41 +06:00
2f52ad45a4 add tools for passport files hashes calculation 2021-01-23 12:21:57 +06:00
1d99e632a4 fix of SetPassportDataErrors request parent interface 2021-01-22 23:40:33 +06:00
cdcfaf5a29 fixes in passport errors serialization and replacing of PassportElementError 2021-01-22 23:14:24 +06:00
f3590762f3 add PassportElementError realization 2021-01-22 23:01:37 +06:00
e0ff14b7fe update gradle wrapper 2021-01-22 21:57:23 +06:00
9983e111ec update EncryptedElementSerializer 2021-01-22 21:53:37 +06:00
08b8710772 add asAction and several variants of oneOf 2021-01-19 20:19:28 +06:00
fc71e028c4 improving work of behaviour_builder 2021-01-19 18:50:45 +06:00
30a4a7bd8b update micro_utils dependency 2021-01-19 13:52:06 +06:00
b973278b0a add note about breaking changes 2021-01-19 11:00:12 +06:00
ae2f4579e2 start 0.32.0 as a migration from 0.31.1 due to breaking changes in MediaGroupMessage type 2021-01-19 10:52:30 +06:00
a4bf6911c7 Update micro_utils version note 2021-01-19 00:40:29 +06:00
73b3daa68b Update micro_utils dependency 2021-01-19 00:39:46 +06:00
09748615ae optimize imports 2021-01-18 23:43:21 +06:00
2dc8521aed now all data field are predecrypted with Base64StringSerializer 2021-01-17 16:44:56 +06:00
81de59f37c fix of translations in UtilityBill 2021-01-17 16:34:05 +06:00
fb61a94c5e fix defaults in encrypted passport data 2021-01-17 16:30:25 +06:00
26fd5e51bf filesSize in PassportFile is nullable for now 2021-01-17 16:24:33 +06:00
c1ab9da4c4 fix error with deserialization of passport data 2021-01-17 16:11:38 +06:00
6b414d64b0 remove redundant imports 2021-01-17 15:45:20 +06:00
5a3edc2b44 add passportMessages extension 2021-01-17 15:43:08 +06:00
6dcdc2ab7f now PassportMessage contains user too 2021-01-17 15:35:25 +06:00
a2ae4f71de new PassportMessage type 2021-01-15 16:27:22 +06:00
5d87b86afe update passport data to use Base64StringSerializer 2021-01-15 16:02:16 +06:00
ef22735894 add base64 serialization dependency and update micro_utils up to 0.4.17 2021-01-14 21:27:58 +06:00
c0ea479fe3 add primitives for Telegram Passport API 2021-01-14 14:03:25 +06:00
0846e816e9 start 0.31.1 2021-01-14 12:37:31 +06:00
d837c9d605 update publication scripts 2021-01-13 14:21:35 +06:00
d1993842c3 Merge pull request #257 from InsanusMokrassar/0.31.0
0.31.0
2021-01-10 13:08:00 +06:00
4e8a9dcff0 update changelog 2021-01-09 22:35:41 +06:00
10eb15e172 several RiskFeature updates 2021-01-09 22:18:31 +06:00
0320da7614 updates in long polling methods 2021-01-09 22:10:38 +06:00
7aa3ff180e several refactoring things and docs appending 2021-01-09 21:50:02 +06:00
a882a212c2 remove different internal strings things 2021-01-09 21:24:13 +06:00
1b15748f65 optimize imports 2021-01-09 20:59:37 +06:00
044fe5eadf full removing of old redundant "fullEntitiesList" 2021-01-09 20:52:21 +06:00
9453ec37e7 update gradle wrapper 2021-01-09 19:01:14 +06:00
3d0cbc2d2b small refactor 2021-01-09 19:00:41 +06:00
198b551ebf deprecations removing 2021-01-09 18:25:11 +06:00
1452e32293 behaviours documentatio and changing of buildBehaviour signature 2021-01-09 18:04:45 +06:00
946b7abcae start 0.31.0 2021-01-08 16:58:25 +06:00
879943622a Merge pull request #254 from InsanusMokrassar/0.30.13
0.30.13
2021-01-08 16:50:14 +06:00
c0b4b523cf update micro_utils version 2021-01-08 16:41:08 +06:00
49e6e9cfe3 fix in new project publication scripts 2021-01-08 16:39:29 +06:00
ffadb6355b fixes in readme 2021-01-08 16:37:03 +06:00
9cc402b42d ContentMessage -> CommonMessage in behaviour_builder, fill readme of behaviour_builder and update projects schema 2021-01-08 16:28:00 +06:00
b9341f89ac add media groups triggers and waiters 2021-01-08 11:02:18 +06:00
ac07f44c81 change public signature of waiters 2021-01-08 10:29:29 +06:00
2e53247726 now content waiters and triggers may have set up manually parameter "includeMediaGroups" 2021-01-08 10:22:29 +06:00
e2dddf96a1 several small additions 2021-01-08 00:30:29 +06:00
ce0fceb240 include media groups 2021-01-08 00:22:19 +06:00
633239961a update FlowsUsh 2021-01-07 19:02:35 +06:00
8b79b15777 FlowsUpdatesFilter#allUpdatesWithoutMediaGroupsGroupingFlow 2021-01-07 19:01:02 +06:00
a28cf5ddff now BehaviourContext is UpdateFilterm TelegramBot and CoroutineScope 2021-01-07 18:20:23 +06:00
8c2cffc8e3 rename steps subproject to behaviour_builder 2021-01-07 18:17:50 +06:00
b933361258 optimize imports in steps 2021-01-07 18:12:37 +06:00
383e722d07 rename scenario to behaviour context 2021-01-07 18:11:24 +06:00
3125c2fc1b add callback query expectations and triggers 2021-01-07 17:57:08 +06:00
965b8c3c50 add chat event triggers and expectations in steps 2021-01-07 17:24:58 +06:00
94745ef373 add docs to base expectations 2021-01-07 16:01:25 +06:00
aee5ab564b optimize imports 2021-01-07 12:45:54 +06:00
c70f0b65dd add content triggers and update command 2021-01-07 12:45:30 +06:00
30e6f68228 small update of scenarios 2021-01-06 23:21:33 +06:00
00873a255c preview state of steps 2021-01-06 23:06:48 +06:00
6bd423dc11 class casts for ResendableContent and TextSource 2021-01-06 20:49:55 +06:00
c5ada8cea0 start 0.30.13 2021-01-06 15:41:27 +06:00
0cb3df4d1a Merge pull request #251 from InsanusMokrassar/0.3.12
0.3.12
2021-01-05 23:06:35 +06:00
b22118b400 add suppressing of unchecked casts 2021-01-05 23:04:09 +06:00
2006e45b57 last update of classcasts 2021-01-05 23:02:00 +06:00
c091098feb remove *Impl casts 2021-01-05 22:37:52 +06:00
6cf8d47cbf update classcasts 2021-01-05 22:27:42 +06:00
3dc4e9dda4 preview of solution for #145 2021-01-05 11:54:02 +06:00
6407ad1a93 Revert "one more update of klassindex"
This reverts commit f974e5787f.
2021-01-05 11:11:50 +06:00
f974e5787f one more update of klassindex 2021-01-05 11:11:37 +06:00
28a9bbd310 Revert "add klassindex"
This reverts commit 599d5a51e3.
2021-01-05 01:37:01 +06:00
599d5a51e3 add klassindex 2021-01-05 01:36:52 +06:00
25f8d15a4b start 0.3.12 2021-01-05 00:16:11 +06:00
66c2cb2d30 Merge pull request #243 from InsanusMokrassar/0.30.11
0.30.11
2021-01-04 14:35:56 +06:00
74fb448378 update klock 2021-01-04 14:29:06 +06:00
3417ec060f Update README.md 2021-01-03 15:22:19 +06:00
4f54a00003 Update README.md 2021-01-03 15:20:42 +06:00
4fb187da30 Update README.md 2021-01-03 15:19:35 +06:00
7637b6f69a Update README.md 2021-01-03 15:17:58 +06:00
9df9af193c bot actions got class-cast shortcuts 2021-01-02 16:06:00 +06:00
ba4b4c4b64 bot actions shortcut 2021-01-02 15:51:26 +06:00
fa0861b8bc update micro_utils 2020-12-23 13:42:00 +06:00
20494e1d4a Update CHANGELOG.md 2020-12-22 17:34:14 +06:00
a404008dee Update dependencies 2020-12-22 17:33:20 +06:00
881205dd80 update dependencies 2020-12-16 14:25:09 +06:00
2096c44811 start 0.30.11 2020-12-13 22:25:57 +06:00
1a3da33589 Merge pull request #237 from InsanusMokrassar/0.30.10
0.30.10
2020-12-08 14:25:00 +06:00
be28c9bd5d update dependencies 2020-12-08 12:03:45 +06:00
a193ef5fd5 buildBot 2020-12-04 16:29:50 +06:00
7c43d3aaa5 update dependencies 2020-12-04 16:13:02 +06:00
e034afc75c start 0.30.10 2020-12-04 16:06:14 +06:00
08e3326d1a Merge pull request #226 from InsanusMokrassar/0.30.9
0.30.9
2020-11-27 00:59:33 +06:00
6dd1825b98 update dependencies 2020-11-27 00:44:29 +06:00
bd4eb29fc1 update limits of dices 2020-11-26 19:37:35 +06:00
2cc66ef13c BowlingDiceAnimationType 2020-11-25 23:09:49 +06:00
9a8175d1c8 update dependencies 2020-11-25 23:02:54 +06:00
25285b2e8a start 0.30.9 2020-11-25 23:01:19 +06:00
bb09f05d7b Merge pull request #223 from InsanusMokrassar/0.30.8
0.30.8
2020-11-21 16:37:47 +06:00
da5e46e59f remove several PreviewFeature 2020-11-21 15:19:31 +06:00
a3f315a73a update micro_utils 2020-11-21 15:15:07 +06:00
43583a885a update versions 2020-11-21 14:40:34 +06:00
ec02257ecd start 0.30.8 2020-11-21 14:32:32 +06:00
29ee4a9396 update publishing urls 2020-11-18 17:51:53 +06:00
2717cb4fc6 exprimentally update publishing scripts 2020-11-18 17:18:51 +06:00
1ce2526401 Merge pull request #217 from InsanusMokrassar/0.30.7
0.30.7
2020-11-17 16:32:19 +06:00
74c480b07e one new telegramBot function 2020-11-17 16:18:58 +06:00
657e9aa770 add KtorRequestsExecutorBuilder 2020-11-17 16:06:25 +06:00
0d19952ba7 PowLimiter and CommonLimiter rewriting (#210) 2020-11-17 15:48:58 +06:00
f8cccc3e17 update gradle 2020-11-17 14:41:53 +06:00
bc1b7c3f25 fix ending of host url in TelegramAPIUrlsKeeper 2020-11-17 13:18:11 +06:00
ec74111a9d update micro_utils version 2020-11-17 12:51:55 +06:00
2dadeb7eb7 start 0.30.7 2020-11-17 12:50:54 +06:00
24bd65501b Update README.md 2020-11-16 21:59:25 +06:00
574ca803fa Update README.md 2020-11-16 21:56:31 +06:00
947e3bf34e add fast start 2020-11-16 21:55:22 +06:00
488158d8fb Merge pull request #214 from InsanusMokrassar/0.30.6
0.30.6
2020-11-16 16:29:46 +06:00
41bf3c7f0b filling of changelog and renaming of new function makeLink -> makeUsernameLink 2020-11-16 16:25:10 +06:00
c2032d21cd TextSource properties has been renamed 2020-11-16 13:32:20 +06:00
6650dd9cfe reworking of links extension 2020-11-16 13:22:08 +06:00
af1d6d6f1a start 0.30.6 2020-11-15 23:05:19 +06:00
a5861d659d Merge pull request #212 from InsanusMokrassar/0.30.5
0.30.5
2020-11-14 19:44:26 +06:00
b36f80a6d3 update micro_utils 2020-11-14 19:41:26 +06:00
7c4f034a6c fixes in imports 2020-11-14 14:41:16 +06:00
3b08bc6dd2 serialization of ChatMember and changing of id type in User 2020-11-14 14:38:54 +06:00
ed87c0ad95 start 0.30.5 2020-11-14 11:19:53 +06:00
c8c0fc2ce8 Merge pull request #211 from InsanusMokrassar/0.30.4
0.30.4
2020-11-12 23:05:49 +06:00
1f40ce1a81 add a lot of shortcuts for events 2020-11-12 22:35:27 +06:00
b0219389fc add several functions and changelog notes 2020-11-12 22:23:10 +06:00
f6ec82b449 deprecate old asChatEventsFlow 2020-11-12 22:04:46 +06:00
71dac70635 deprecations in old functions 2020-11-12 22:02:06 +06:00
98f68a9e1e filling of changelog 2020-11-12 21:54:14 +06:00
e7199e7451 fix use user in group messages 2020-11-12 21:46:33 +06:00
33b50c6c68 events filters 2020-11-12 21:17:11 +06:00
e4ce6f8fc7 fixes in events 2020-11-12 17:44:33 +06:00
8764f18ca8 TextContent now implements TextedInput 2020-11-12 16:57:32 +06:00
b2fa7fee9d rename MultilevelTextSource#textSources 2020-11-12 16:37:17 +06:00
0121e3a104 update micro_utils 2020-11-12 16:33:48 +06:00
f6e5664632 start 0.30.4 2020-11-12 16:31:02 +06:00
c5b7c4e1f5 Merge pull request #209 from InsanusMokrassar/0.30.3
0.30.3
2020-11-11 11:25:25 +06:00
53800d49bf small rework in ExceptionsOnlyLimiter 2020-11-11 11:23:24 +06:00
d83e3eb10a add handling of 429 status 2020-11-11 11:15:19 +06:00
66b4d06064 limiter rework 2020-11-11 10:23:20 +06:00
4fab01b2a2 update micro_utils 2020-11-11 10:15:06 +06:00
b81086c4bb start 0.30.3 2020-11-11 10:14:10 +06:00
d776071cac Update build.gradle 2020-11-11 01:32:25 +06:00
5f33d05deb Update extensions utils dependencies 2020-11-11 01:31:28 +06:00
912cc7217c Update extensions api dependencies 2020-11-11 01:30:31 +06:00
96e00f6e31 Merge pull request #207 from InsanusMokrassar/0.30.2
0.30.2
2020-11-10 21:52:37 +06:00
f8ea5f9515 fix in changelog 2020-11-10 21:45:07 +06:00
9f11c4f1c4 update ktor 2020-11-10 20:56:11 +06:00
9c91980d5d webhook fixes 2020-11-10 20:44:39 +06:00
7376eb5b10 start 0.30.2 2020-11-10 20:01:22 +06:00
6654f27f9d Merge pull request #202 from InsanusMokrassar/0.30.1
0.30.1
2020-11-09 15:16:26 +06:00
d29acce417 add suppressing of unused in EntitiesBuilder 2020-11-09 15:14:48 +06:00
f0f18209f3 a little bit improve EntitiesBuilder 2020-11-09 15:12:57 +06:00
324018a0f6 update publication scripts 2020-11-09 14:45:29 +06:00
b621325e92 update version of microutils and changelog 2020-11-09 08:37:30 +06:00
43e92555c2 Merge pull request #203 from Djaler/entities-dsl
Add builder-style dsl for text sources
2020-11-09 08:26:44 +06:00
Kirill Romanov
5f1ca51e60 Add builder-style dsl for text sources 2020-11-08 23:12:32 +03:00
83edda2dfe add link to bot template 2020-11-08 18:58:52 +06:00
1974c20229 start 0.30.1 2020-11-08 12:07:14 +06:00
499d9b1791 Update README.md 2020-11-08 00:03:41 +06:00
6caa7dd428 Merge pull request #163 from InsanusMokrassar/0.30.0
0.30.0
2020-11-07 23:00:35 +06:00
e8ded44562 rename StorageFile in jvm of common 2020-11-07 22:28:20 +06:00
1e6b0381ee StorageFile factories 2020-11-07 14:44:05 +06:00
1cf7ae7438 add micro_utils and deprecate old coroutine methods 2020-11-07 13:42:10 +06:00
311512b5db fix chat interfaces serializers 2020-11-07 01:34:22 +06:00
d73fa4076f add several extension properties to texted/captioned/explained interfaces 2020-11-06 19:13:59 +06:00
3620350cc0 add simple text dsl for textsources 2020-11-06 18:52:59 +06:00
54cfea9adf fill changelog 2020-11-06 14:42:30 +06:00
6665b6ef03 reorganize text sources and text parts 2020-11-06 14:37:13 +06:00
ee6f0f3d5d add separation of text sources 2020-11-06 12:59:55 +06:00
6ec0fcadd2 rewrite telegramBot functions 2020-11-06 12:29:51 +06:00
c89aa7b9ba telegramBot improvements 2020-11-06 12:07:46 +06:00
cf47cee36a Merge pull request #198 from madhead/issues/190
Fix #190: Support for Google Places values in venue-related methods and types
2020-11-06 11:23:29 +06:00
madhead
824fa9ba09 Fix #190: Support for Google Places values in venue-related methods and types 2020-11-06 00:06:33 +03:00
654d84b1b4 Merge pull request #197 from madhead/issues/175
Fix #175: Support for message_id field in unpinChatMessage method
2020-11-06 02:17:11 +06:00
madhead
c7259e7699 Fix #175: Support for message_id field in unpinChatMessage method 2020-11-05 23:15:23 +03:00
00a75801a8 fixes 2020-11-06 01:14:48 +06:00
e45f9cf46a return serialname for messageId in RawMessage 2020-11-06 00:37:56 +06:00
3b1803e851 remove deprecations 2020-11-06 00:12:14 +06:00
bf1e353615 fix build 2020-11-06 00:05:05 +06:00
99bb8d6e0d update extnsions.api 2020-11-05 23:48:23 +06:00
98d7b9c651 update coroutines :) 2020-11-05 21:42:31 +06:00
765caefc32 implementation of allow sending without reply (#191) 2020-11-05 21:33:11 +06:00
6bdefb6f8f new request CopyMessage (#187) 2020-11-05 20:27:45 +06:00
d5e283e7ba Update all classes which must have "entities"/"caption_entities" fields (#189) 2020-11-05 20:18:16 +06:00
a5982ac881 partially restructurize InlineQueryResult and several its implementators 2020-11-05 18:00:40 +06:00
c0e81b1d6d partially complete rewriting of things according to #189 2020-11-05 16:53:26 +06:00
eb879963f8 isAnonymous support in api 2020-11-05 12:48:44 +06:00
f835167f66 isAnonymous support 2020-11-05 12:47:14 +06:00
ff34b23777 implementation of sender_chat and author_signature 2020-11-05 12:39:59 +06:00
ec806dfd83 Merge pull request #195 from madhead/issues/184
Fix #184: Anonymous Admins: support for is_anonymous flag
2020-11-05 11:38:24 +06:00
madhead
0a73dfb799 Fix #184: Anonymous Admins: support for is_anonymous flag 2020-11-05 01:57:26 +03:00
53b8cc4625 update pollQuestionTextLength 2020-11-05 01:15:03 +06:00
201def826e locations updates 2020-11-05 01:12:14 +06:00
609a959b99 DiceAnimationType#valueLimits 2020-11-04 23:52:22 +06:00
6a05a7ecab add footbal dice animation type 2020-11-04 23:47:01 +06:00
159ea6f1cc UnpinAllChatMessages 2020-11-04 23:44:13 +06:00
0886781d61 add docs for PinChatMessage 2020-11-04 23:41:19 +06:00
60d5581ec6 supporting of private chats in pinChatMessage 2020-11-04 23:38:40 +06:00
2a33216006 disableContentTypeDetection 2020-11-04 23:33:48 +06:00
179bb66183 return SetWebhook without certificate 2020-11-04 23:21:25 +06:00
7a2ecd2dbf getChat updates completing 2020-11-04 23:10:39 +06:00
fd1a15cb5d ExtendedPrivateChat#bio 2020-11-04 22:46:08 +06:00
86a472e814 SetWebhook updates 2020-11-04 22:43:26 +06:00
6d6c544aaf logout and close 2020-11-04 22:17:17 +06:00
dd4d5cd15d start 0.30.0 2020-11-04 22:06:44 +06:00
23dfa4f69d Merge pull request #162 from InsanusMokrassar/0.29.4
0.29.4
2020-11-02 21:51:23 +06:00
a10d766295 slotmachine utils 2020-11-02 20:32:46 +06:00
ea6ab8f024 start 0.29.4 2020-11-02 20:10:38 +06:00
f377d61bf0 Merge pull request #158 from InsanusMokrassar/0.29.3
0.29.3
2020-11-02 14:21:54 +06:00
18c9d4e468 fill changelog 2020-11-02 14:14:08 +06:00
20b931138c update FlowsUpdatesFilter 2020-11-02 14:11:26 +06:00
d7bca15693 deprecations 2020-11-02 13:57:44 +06:00
957649603b fix for media fields in input media 2020-11-02 13:51:20 +06:00
bbc56fe94c hotfix in changelog 2020-11-02 13:26:06 +06:00
d048958423 WrongFileIdentifierException 2020-11-02 13:25:40 +06:00
f0e9267664 fixes in files and filling of changelog 2020-11-02 13:16:46 +06:00
5dd7207e09 update serialization version 2020-11-02 12:56:29 +06:00
d96d47e32c make different interfaces for audio and documents media content 2020-11-02 12:51:09 +06:00
1ee73dd406 sending media groups api updates 2020-11-02 12:39:12 +06:00
e9a05c4930 include audio playlists, documents and slot machine dice 2020-11-02 12:02:12 +06:00
9e771fa04a fixes 2020-11-02 11:13:16 +06:00
06ba21fc1f add changelog for audio and document media items 2020-10-30 20:40:44 +06:00
7d72d72f2c Revert "Revert "Revert "Revert "add slot machine, but currently it is not working""""
This reverts commit b457d11067.
2020-10-30 20:38:04 +06:00
80d4bdfe17 make audio and documents able to be media group items 2020-10-30 20:38:02 +06:00
b457d11067 Revert "Revert "Revert "add slot machine, but currently it is not working"""
This reverts commit 46fe16fd73.
2020-10-30 19:45:55 +06:00
46fe16fd73 Revert "Revert "add slot machine, but currently it is not working""
This reverts commit f317e144e6.
2020-10-30 19:37:26 +06:00
8e1cafb1b6 start 0.29.3 2020-10-30 19:36:48 +06:00
68d971f874 Merge pull request #155 from InsanusMokrassar/0.29.2
0.29.2
2020-10-27 15:55:17 +06:00
37a23c7e79 fixes in aggregation of flows 2020-10-27 15:51:48 +06:00
b053c29ea3 update aggregateFlows 2020-10-27 15:26:32 +06:00
23a1fed7dd Revert "update greetings config"
This reverts commit 87d2537bda.
2020-10-27 15:16:04 +06:00
87d2537bda update greetings config 2020-10-27 15:14:45 +06:00
6d782f28c3 updates after coroutines version change 2020-10-27 15:11:57 +06:00
d8dbbdf549 update coroutines 2020-10-27 15:01:30 +06:00
f317e144e6 Revert "add slot machine, but currently it is not working"
This reverts commit 4f9cb531c0.
2020-10-27 14:53:22 +06:00
05c27804ce update travis config 2020-10-22 19:19:55 +06:00
eb97a8e151 Merge pull request #154 from Megamiun/gm/update-dokka
Gm/update dokka
2020-10-22 19:18:51 +06:00
Gabryel Monteiro
06639e5f3c Update gradle.properties 2020-10-22 09:41:06 -03:00
82b7bf676f Update .travis.yml 2020-10-20 02:05:34 +06:00
4f9cb531c0 add slot machine, but currently it is not working 2020-10-19 20:26:36 +06:00
09bbb1945c start 0.29.2 2020-10-19 20:12:18 +06:00
7bedc4caf0 Merge remote-tracking branch 'original/master' into gm/update-dokka 2020-10-19 19:51:03 +06:00
6a73aa1525 add travis dokka step 2020-10-19 19:50:41 +06:00
e1ee541005 extend max heap size for gradle 2020-10-19 19:45:46 +06:00
Gabryel Monteiro
2d2fe01227 Changing Dokka version 2020-10-19 01:51:09 -03:00
Gabryel Monteiro
af53682b1f Removing kts notation 2020-10-19 00:45:29 -03:00
Gabryel Monteiro
c8a5552c9e Adding projects 2020-10-19 00:40:24 -03:00
Gabryel Monteiro
ffa78ebfe1 Update to 1.4.0 2020-10-18 22:38:16 -03:00
e85e7d02f7 Merge pull request #149 from InsanusMokrassar/0.29.1
0.29.1
2020-10-13 16:08:19 +06:00
37ad279ab4 Merge pull request #148 from leobia/master
Reformat CHANGELOG.md
2020-10-12 15:27:09 +06:00
3b41dc1fbf Merge remote-tracking branch 'original/0.29.1' 2020-10-12 15:26:11 +06:00
5747383ed1 Update README.md 2020-10-12 01:08:56 +06:00
18a6efabb8 post fixes for serialization update 2020-10-09 11:49:24 +06:00
dcb837b155 update serialization version 2020-10-09 11:41:08 +06:00
03755e9eef start 0.29.1 2020-10-09 11:35:33 +06:00
lbia
b9db2d544d Reformat CHANGELOG.md 2020-10-08 22:11:39 +02:00
800d14561e add conversations between AudioFile and VoiceFile 2020-10-04 20:00:43 +06:00
2378237fc5 Merge pull request #146 from InsanusMokrassar/0.29.0
0.29.0
2020-10-04 19:46:22 +06:00
35e28c00cb fix help for versions before 0.28.0 2020-10-04 19:31:45 +06:00
1913f1a900 update libraries schema 2020-10-04 19:26:16 +06:00
cbfd34098d READMEs fixes 2020-10-04 18:54:57 +06:00
e5618f4705 more fixes to god of fixes (docs fixes) 2020-10-04 18:50:05 +06:00
c9f2166e7d fixes in md files 2020-10-04 18:46:28 +06:00
eb960290c6 remove redundant changes 2020-10-04 18:39:03 +06:00
100f8b564a remove redundant changes 2020-10-04 18:37:55 +06:00
8e1ad9ffbc artifacts names has been changed 2020-10-04 18:34:03 +06:00
8875e2a986 update changelog parser 2020-10-04 17:43:25 +06:00
7478b151eb fixes in readmes 2020-10-04 17:41:30 +06:00
959136479e add information about migration in examples project 2020-10-04 17:35:24 +06:00
a52a62837e add migration notes 2020-10-04 17:17:52 +06:00
17dd694044 change package group and readmes 2020-10-04 17:10:03 +06:00
34fcfe2e20 migrate core project in new package 2020-10-04 17:06:30 +06:00
64862ecd2d experimentaly change package for extensions projects 2020-10-04 16:59:27 +06:00
c9edbbf7af migration onto major changes 0.29.0 2020-10-04 16:52:00 +06:00
a2f9a5a432 hotfix after SendVoice signature change 2020-10-04 16:49:43 +06:00
8337da34ca fix of #144 plus several other changes 2020-10-04 16:47:30 +06:00
f45956b554 hotfix for changelogs 2020-10-04 13:19:19 +06:00
bec1255d67 replaces of RequestsExecutor by TelegramBot typealias in TelegramBotAPI-extensions-api 2020-10-04 13:18:24 +06:00
39ca29279f fix forward_from_chat for SupergroupChat 2020-10-02 18:07:16 +06:00
70b592baad ForwardFromSupergroupInfo 2020-10-02 14:59:10 +06:00
403aa684a8 start 0.28.5 2020-10-02 14:58:27 +06:00
48c6f103b5 Update README.md 2020-10-02 14:27:07 +06:00
e326d289cb Create pull_request_template.md 2020-10-02 13:26:32 +06:00
7fd9c4c897 Create CONTRIBUTING.md 2020-10-02 13:10:01 +06:00
347a6212d4 Merge pull request #141 from InsanusMokrassar/0.28.4
0.28.4
2020-09-28 13:29:22 +06:00
e10e257c80 update ktor 2020-09-28 13:18:03 +06:00
5e7bc96b44 add deprecations 2020-09-28 13:11:41 +06:00
79d0eda61d add changelog 2020-09-28 13:09:58 +06:00
9916b3f469 Merge pull request #140 from madhead/issues/139
Fix #139: Add "from" field to chat events
2020-09-28 12:55:13 +06:00
2bac5f0eed start 0.28.4 2020-09-28 12:54:01 +06:00
madhead
01eb072caa Fix #139: Add "from" field to chat events 2020-09-27 13:26:10 +03:00
496af479b0 Revert "add karma for tests"
This reverts commit 386e91e28b.
2020-09-22 22:42:01 +06:00
386e91e28b add karma for tests 2020-09-22 22:33:45 +06:00
91dbcecefc add autoPublishing 2020-09-22 18:53:48 +06:00
2d743e4c19 Merge pull request #136 from InsanusMokrassar/0.28.3
0.28.3
2020-09-22 18:32:06 +06:00
8804a24013 small refactoring 2020-09-22 18:12:48 +06:00
8b5244d8df hotfix 2020-09-22 18:06:50 +06:00
034901a479 add publication of github release via changelog 2020-09-22 18:04:10 +06:00
7043647584 changelog parser script has been added 2020-09-22 15:15:20 +06:00
acd9505a5d inline queries extensions 2020-09-22 14:47:34 +06:00
46c33d5ec4 update dependencies 2020-09-22 11:33:47 +06:00
89dc7a4b2a InlineQueryResult#id type change 2020-09-20 20:16:14 +06:00
e4f305b3ec start 0.28.3 2020-09-20 20:11:27 +06:00
d56c132201 Reorder 0.28.* changelogs 2020-09-16 19:28:05 +06:00
d336e177dd Merge pull request #135 from InsanusMokrassar/0.28.2
0.28.2
2020-09-16 11:45:22 +06:00
15e29286fb commonMessages and sent via bot shortcuts updates 2020-09-14 00:12:28 +06:00
314ceed78e signature change in filterCommandsWithArgs 2020-09-13 23:58:09 +06:00
3fa3aa50d9 commands shortcuts 2020-09-13 23:42:59 +06:00
571296b9a0 start 0.28.2 2020-09-13 23:32:47 +06:00
3f13e5d062 Merge pull request #132 from InsanusMokrassar/0.28.1
0.28.1
2020-09-12 22:38:24 +06:00
1874023c05 fixes in build + changes in signature of executeUnsafe 2020-09-12 16:22:39 +06:00
dc0fda2066 update handleSafely 2020-09-12 16:18:00 +06:00
c0d4a4f01b update gradle wrapper version 2020-09-12 15:49:09 +06:00
603762bc22 update kotlin and UUID versions 2020-09-12 15:44:44 +06:00
4db82d6ce2 start 0.28.1 2020-09-12 15:40:12 +06:00
9bf8f56254 update SimpleInputFilesTest 2020-08-29 19:52:46 +06:00
9c926a2265 update SimpleInputFilesTest 2020-08-29 19:51:10 +06:00
747854f4f4 Merge pull request #123 from InsanusMokrassar/0.28.0
0.28.0
2020-08-29 18:46:16 +06:00
dcfb14553d JS/JVM errors opportunity note 2020-08-29 18:37:02 +06:00
6eaa9d699b crutch for inputmediaphoto 2020-08-29 12:08:37 +06:00
6788c4d1dd make the test failing again 2020-08-24 00:34:30 +06:00
6420737a82 remove arguments 2020-08-24 00:27:37 +06:00
4c36750431 add failing test which normally must be working ok 2020-08-23 23:42:50 +06:00
fd022742aa files downloading extensions in utils 2020-08-23 23:37:29 +06:00
0472e35752 Merge pull request #124 from sleshJdev/feature/download-pathed-file-extension
Extended PathedFile to get it as file/stream
2020-08-23 21:44:53 +06:00
768d00eedd total rework (by accident) 2020-08-23 21:43:58 +06:00
e9347075ed Merge remote-tracking branch 'upstream/0.28.0' into feature/download-pathed-file-extension 2020-08-23 18:57:03 +06:00
slesh
3da74b0c66 Converted to expression body 2020-08-23 01:05:12 +03:00
slesh
8b79c5c76b Use DEFAULT_BUFFER_SIZE 2020-08-23 01:04:01 +03:00
slesh
a1b471d2ca Added asBytes method. Used InputStream.copyTo 2020-08-23 01:02:50 +03:00
slesh
e2c7125f6c Extended PathedFile to get it as file/stream 2020-08-23 00:47:17 +03:00
ec8df3c31c start work with publication 2020-08-20 22:26:35 +06:00
94a35349aa temporal update 2020-08-20 17:35:26 +06:00
046402454f Revert "try to fix problem with arguments in InputMedia"
This reverts commit c3978f2dab.
2020-08-20 16:07:01 +06:00
c3978f2dab try to fix problem with arguments in InputMedia 2020-08-20 15:58:11 +06:00
1019fd4d19 turn on incremental building and add TelegramBot typealias 2020-08-20 15:00:45 +06:00
76a9fd1a55 updates in readmes 2020-08-20 13:55:34 +06:00
aec4c7323a fill changelog 2020-08-20 12:02:28 +06:00
7bdfd5cf69 update README 2020-08-20 11:58:37 +06:00
ce95a60fbc migration of artifacts names 2020-08-20 11:55:39 +06:00
3c17a67b01 rewrite on BOTH for JS 2020-08-20 10:51:05 +06:00
35bf5b9e9d fix of formatter in ChatSerializers 2020-08-20 02:00:42 +06:00
0087d02b5f potential fix of build 2020-08-20 01:17:32 +06:00
212d8946c8 update travis build 2020-08-19 13:52:18 +06:00
319e43901a several more changes in build.script's 2020-08-19 13:49:30 +06:00
da01955507 pass old way for building of js part 2020-08-19 12:14:28 +06:00
095382040c update travis build config 2020-08-19 00:31:14 +06:00
5545708d38 fix after ktor update 2020-08-19 00:28:16 +06:00
5d06d86549 update ktor version 2020-08-19 00:19:09 +06:00
c081e5c457 add IR compiling 2020-08-19 00:07:55 +06:00
555c2ffa04 try to fix 2020-08-18 20:49:27 +06:00
bcee64c103 try to fix 2020-08-18 20:44:31 +06:00
44a35bd26e upgrade travis config 2020-08-18 13:50:26 +06:00
1f5c719294 deprecations removing and several warnings fixes 2020-08-18 13:45:15 +06:00
6013c3ba86 versions updates 2020-08-18 12:50:11 +06:00
d4551490f7 start 0.28.0 2020-08-18 10:56:05 +06:00
cc0498a89a Update README.md 2020-08-14 23:44:21 +06:00
0b78c0382f Merge branch '0.27.11' 2020-08-14 19:29:16 +06:00
c91426a910 filename created 2020-08-14 19:26:51 +06:00
5d1c59ff75 Merge pull request #97 from InsanusMokrassar/0.27.11
0.27.11
2020-08-14 18:43:51 +06:00
d2228e274c sentMessages extension for FlowsUpdatesFilter 2020-08-13 15:28:10 +06:00
790959ea49 add a lot of extension for FlowUpdatesFilter and Flow 2020-08-13 14:55:21 +06:00
ce9f7f35dc fix scope of one of startGettingOfUpdatesByLongPolling 2020-08-13 13:45:25 +06:00
4f984d1dbc update documentation for FlowsAggregation 2020-08-13 12:53:04 +06:00
c83da6be70 Merge pull request #98 from InsanusMokrassar/renovate/configure
Configure Renovate
2020-08-13 02:24:42 +06:00
Renovate Bot
710438489c Add renovate.json 2020-08-12 20:21:10 +00:00
6f650f6d6c Flow<BaseSentMessageUpdate> extensions 2020-08-13 01:19:12 +06:00
2d15e13ae6 started 0.27.11 2020-08-13 01:08:44 +06:00
d60ee7b8a5 Merge pull request #96 from InsanusMokrassar/0.27.10
0.27.10
2020-08-11 12:58:45 +06:00
8f882e9825 fix links in toc of extensions readme 2020-08-10 20:02:11 +06:00
48e946c2d0 add a simple fix in readme 2020-08-10 20:00:45 +06:00
1758d80020 new telegramBot 2020-08-10 13:38:19 +06:00
63b2bd61b5 add aggregation of flows 2020-08-10 11:53:54 +06:00
ff2c70fc76 FlowsUpdatesFiler extensions 2020-08-10 11:41:46 +06:00
e3bfc4472a includeWebhookHandlingInRouteWithFlows 2020-08-10 10:46:18 +06:00
1cff6f616f start 0.27.10 2020-08-10 10:45:46 +06:00
1dfe4bf276 Merge pull request #95 from InsanusMokrassar/0.27.9
0.27.9
2020-08-06 21:38:39 +06:00
e4b09032cd deprecate PositionedInlineQueryResult 2020-08-03 12:15:59 +06:00
e8e54a0aea add labeler config for versions 2020-08-03 11:46:38 +06:00
8f85b4cba3 versions update 2020-08-03 11:41:14 +06:00
46d65a271d start 0.27.9 2020-07-29 15:38:32 +06:00
e088329ce1 Update README.md 2020-07-20 15:15:06 +06:00
8d9ebb754b Merge pull request #94 from InsanusMokrassar/0.27.8
0.27.8
2020-07-02 16:39:04 +06:00
c0a43077ad optimize imports 2020-07-02 16:15:06 +06:00
1811a63a13 update last added sendVenue 2020-07-02 16:00:38 +06:00
cba0e30710 sendVenue with Location 2020-07-02 15:55:14 +06:00
ff0b7faa48 Foursquare and fixes of deprecations in methods 2020-07-02 00:52:52 +06:00
975898660c TelegramBotAPI Venue and foursquare additions 2020-07-01 23:57:20 +06:00
cfb7f35d20 add several makeLinkToMessage 2020-06-27 10:11:03 +06:00
147889a66a update readme 2020-06-27 09:59:57 +06:00
ed9ed715a0 update defaults for new FlowsUpdatesFilter 2020-06-27 09:51:18 +06:00
a9a3f55c8d refactoring of FlowsUpdatesFilter 2020-06-27 09:44:50 +06:00
58943f2504 small refactor of BaseMessagesUpdatesConversations 2020-06-27 09:31:29 +06:00
5f7633a57e start 0.27.8 2020-06-27 09:30:25 +06:00
65cfc3220d add hierarchy diagram 2020-06-26 19:11:59 +06:00
36d30ef91b Merge pull request #92 from InsanusMokrassar/0.27.7
0.27.7
2020-06-26 17:50:05 +06:00
41e5c579a2 add excluding of CHANGELOG file for labeler 2020-06-26 17:45:16 +06:00
bbf63c51ec Revert "add com.soywiz.korlibs.krypto:krypto dependency"
This reverts commit acfb7066d2.
2020-06-25 15:45:38 +06:00
fb91199f83 Revert "start implement passport"
This reverts commit d76c09ffb2.
2020-06-25 15:45:35 +06:00
d76c09ffb2 start implement passport 2020-06-25 15:45:15 +06:00
acfb7066d2 add com.soywiz.korlibs.krypto:krypto dependency 2020-06-25 12:07:48 +06:00
7507c107b4 add one more flatMatrix 2020-06-24 20:54:22 +06:00
2acb177ad6 first keyboards improvements 2020-06-24 20:51:48 +06:00
b5a14077fd start 0.27.7 2020-06-24 20:25:51 +06:00
5f60bf003f Add useful links 2020-06-07 17:27:20 +06:00
f9b2c4c403 update README 2020-06-05 17:01:37 +06:00
c909774403 Merge pull request #91 from InsanusMokrassar/0.27.6
0.27.6
2020-06-05 15:44:30 +06:00
670cfcca13 update kotlin coroutines 2020-06-05 15:17:14 +06:00
130e00b62b extensions for CommonMessage 2020-06-05 14:57:58 +06:00
ca4beee95f add PossiblySentViaBotCommonMessage and fix error in build 2020-06-05 14:25:19 +06:00
ca784e67df add BuiltInMimeTypes, ThumbedWithMimeTypeInlineQueryResult and buildMimeType factory 2020-06-05 14:01:19 +06:00
835b8b34f9 add via_bot 2020-06-05 13:40:12 +06:00
e6430a729c work on version 0.27.6 has been started 2020-06-05 13:37:11 +06:00
6c4c9f2fc6 by default dokka task will not set up exact folder for docs 2020-06-03 15:42:00 +06:00
310a7e6e82 update docs build gradle to be able to put dokka where it is required 2020-06-03 15:39:54 +06:00
7375894645 Merge pull request #90 from InsanusMokrassar/0.27.5
0.27.5
2020-06-02 22:26:07 +06:00
69973c597b update BotCommandNameRegex 2020-06-02 22:10:33 +06:00
22e8b06fda BotBuilder fixes 2020-06-02 21:18:49 +06:00
7ede53fdbb BotCommandNameRegex and strict check of incoming command 2020-06-02 20:16:55 +06:00
ca9051920d new setMyCommands extension added 2020-06-02 19:54:13 +06:00
b477e8d585 extend getChat extensions 2020-06-02 13:54:30 +06:00
8ae2f57d55 update description of PreviewFeature annotation 2020-06-02 13:47:28 +06:00
1fb2ecf15f executes was replaced 2020-06-02 13:39:09 +06:00
6073d914d5 hotfixes in new media groups shortcuts 2020-06-02 13:22:36 +06:00
16f55d70af resend and other media group utils replaced into TelegramBotAPI_extensions-utils 2020-06-02 13:21:38 +06:00
b484a31a4a replacement of CaptionAndTextSourcesToText 2020-06-02 13:05:15 +06:00
0a162c4129 StringFormattiing replacement 2020-06-02 01:26:46 +06:00
648f1b488b add makeLinkToAddStickerSet 2020-06-02 01:15:08 +06:00
5fbde4bc06 new "row" 2020-06-02 01:02:38 +06:00
2a276d9272 safely function 2020-06-01 12:56:48 +06:00
9ae252717d versions update 2020-06-01 12:00:06 +06:00
456143a266 complete refresh of CaptinAndTextSourcesToText 2020-06-01 11:55:48 +06:00
0bcc98e126 update caption errors 2020-06-01 11:53:33 +06:00
ab9ceba41c updates in caption and text lengths 2020-06-01 11:44:58 +06:00
7cd5666e88 use maxTextLength inside of CaptionAndTextSourcesToText 2020-05-31 22:53:04 +06:00
35dcd6ada7 fix in SendMessage 2020-05-31 22:51:42 +06:00
ec37df82a9 start 0.27.5 2020-05-31 22:43:35 +06:00
220cb47615 update look like of kdocs badge 2020-05-23 15:46:49 +06:00
d79b8a337a add kdocs badge 2020-05-23 15:43:47 +06:00
cef6a6f741 update telegram badge 2020-05-23 15:27:45 +06:00
9471df1f2d Merge pull request #89 from InsanusMokrassar/0.27.4
0.27.4
2020-05-23 15:22:13 +06:00
f121e5f9c3 renames for JVM signature duplication avoiding 2020-05-23 12:53:42 +06:00
7f4fe318c5 update filters 2020-05-22 16:40:30 +06:00
dbf5c2dbb2 update publish scripts 2020-05-22 14:03:48 +06:00
105415873d updates extensions 2020-05-22 13:21:22 +06:00
ff32fd1dfc 0.27.4 started 2020-05-22 12:56:50 +06:00
006251ed07 fixes 2020-05-17 15:10:02 +06:00
9307582654 Add TelegramBotAPI-all status to readme 2020-05-17 01:30:05 +06:00
fe11a2119e Return opts in telegram bot api 2020-05-16 22:24:50 +06:00
c31403c1a2 Merge pull request #88 from InsanusMokrassar/0.27.3
0.27.3
2020-05-16 22:07:56 +06:00
0260e7bedc fixes of warnings 2020-05-16 22:02:57 +06:00
fa43a55f26 one more update of labeler 2020-05-16 21:54:54 +06:00
e9e1f4b9cf Merge branch 'master' into 0.27.3 2020-05-16 21:24:14 +06:00
e7b5b9184d update rules for labelers 2020-05-16 21:22:37 +06:00
81aa3f2307 update labeler task 2020-05-16 21:19:38 +06:00
a9fe584504 add TOC for TelegramBotAPI-extensions-utils 2020-05-16 21:14:10 +06:00
4c8861ba79 change visibility of internalSetWebhookInfoAndStartListenWebhooks 2020-05-16 20:57:57 +06:00
0ec18cbf06 dice changes 2020-05-16 20:46:49 +06:00
7008f312dc fixes 2020-05-16 20:43:09 +06:00
85317a510e update docs 2020-05-16 11:09:31 +06:00
d629aa206e fixes 2020-05-15 22:14:19 +06:00
6394e1a52b setWebhookInfo 2020-05-15 22:02:53 +06:00
23dca3d307 small grammar fix in WebhookInfo 2020-05-15 19:19:30 +06:00
3032aa8474 renaming of telegramBot functions 2020-05-15 19:14:09 +06:00
db19b69ca0 fails handler in executeUnsafe 2020-05-15 19:04:10 +06:00
f3827f81a7 change mechanism of executeUnsafe 2020-05-15 18:59:42 +06:00
0532dbb1ae fixes 2020-05-15 18:39:12 +06:00
efc2681da8 add additional signatures for setWebhookInfoAndStartListenWebhooks 2020-05-15 18:35:16 +06:00
735ed9fd86 change flowsUpdatesFilter signature 2020-05-15 18:31:49 +06:00
e856dc4754 add flowsUdatesFilter 2020-05-15 18:17:55 +06:00
0706ff1f95 Update labeler.yml 2020-05-15 18:06:29 +06:00
336b830b0b Merge branch 'master' into 0.27.3 2020-05-15 18:05:57 +06:00
1a638fe0a5 update labeler
one more update of labeler
2020-05-15 18:05:00 +06:00
45467e5bd7 Create labeler.yml 2020-05-15 18:05:00 +06:00
8419b0ab6a Create label.yml 2020-05-15 18:05:00 +06:00
49573607fb Create greetings.yml 2020-05-15 18:05:00 +06:00
35fe48db35 Create labeler.yml 2020-05-15 17:05:53 +06:00
590db3e672 Create label.yml 2020-05-15 17:02:33 +06:00
ea40474c47 add opportunity to set up media groups devounce time 2020-05-15 16:53:21 +06:00
7354389f2d Create greetings.yml 2020-05-15 15:49:10 +06:00
1f20ae16aa Update README.md 2020-05-15 00:54:00 +06:00
095c91bf39 update readmes with updates handling 2020-05-15 00:48:34 +06:00
dc173d752c optimize imports 2020-05-15 00:29:17 +06:00
a1788e35b2 clean up in webhooks 2020-05-15 00:28:16 +06:00
ea224fd765 add javax.activation dependency 2020-05-14 21:18:33 +06:00
7f51544bb9 Fix links in TelegramBotAPI-all readme 2020-05-14 16:25:39 +06:00
dfb22b0e89 update readme of all includer 2020-05-14 14:26:42 +06:00
e675e841da update urls 2020-05-14 14:23:26 +06:00
dea43aad8e update subprojects implementation types 2020-05-14 14:11:33 +06:00
52e25e934d add TelegramBotAPI-all 2020-05-14 14:07:23 +06:00
acc067585d add build instructions in README 2020-05-14 13:44:18 +06:00
47aa1a0795 fixes in CHANGELOG and docs 2020-05-14 13:26:56 +06:00
b40cc0c1ea fixes 2020-05-14 13:11:46 +06:00
b5632626ad small extention docs for RequestsExecutor 2020-05-14 12:21:38 +06:00
67fafdac00 add docs for RequestsExecutor 2020-05-14 12:14:38 +06:00
738e628a89 small change of deprecations message 2020-05-13 23:25:22 +06:00
420b846466 replace long polling and webhook tools 2020-05-13 23:22:35 +06:00
05e8c9c90d replace webhooks work into api subproject 2020-05-13 21:21:07 +06:00
e776c5182f additional setWebhook 2020-05-13 20:56:03 +06:00
be5b3745b9 extension was added 2020-05-13 20:01:58 +06:00
0de1d9cfda UpdateDeserializationStrategy currently is public 2020-05-13 19:53:27 +06:00
01da98d2fe start 0.27.3 2020-05-13 19:48:07 +06:00
e985100c21 Update README.md 2020-05-13 19:41:46 +06:00
671faabef9 add telegramBot function 2020-05-12 18:52:37 +06:00
bb9c9e22a2 remove dokka docs from github 2020-05-12 00:14:16 +06:00
42228f0eaa Merge pull request #86 from InsanusMokrassar/0.27.2
0.27.2
2020-05-11 23:42:17 +06:00
dafd0a8ece add docs 2020-05-11 23:37:38 +06:00
bee9d82372 update folder of dokka 2020-05-11 23:24:26 +06:00
ec6cf0f029 docs 2020-05-11 20:44:03 +06:00
9cee22165d start normal filling of docs 2020-05-11 20:32:14 +06:00
a58aad1198 update docs generation 2020-05-11 13:56:45 +06:00
aa78d99179 add docs project 2020-05-11 01:09:07 +06:00
603efe9259 small update of utils readme 2020-05-10 16:40:53 +06:00
21e3e10222 renames 2020-05-10 16:33:44 +06:00
34eb6eb4bf add ChatEventsConversations and refill README of telegramboapi-extensions-utils 2020-05-10 16:25:42 +06:00
565a724b9c remove todo from thumbed input media 2020-05-10 15:30:23 +06:00
e87c4a0126 MediaGroupMemberInputMedia deserialization 2020-05-10 15:26:07 +06:00
9b16d5d82b add MimeType 2020-05-10 14:37:55 +06:00
9747c8bff1 warnings fixes 2020-05-09 21:04:56 +06:00
3ee84700f4 update versions 2020-05-09 20:57:55 +06:00
04a463f42c start 0.27.2 2020-05-09 20:52:52 +06:00
668a201789 Merge pull request #85 from InsanusMokrassar/0.27.1
0.27.1
2020-04-25 10:12:53 +06:00
b336b17eef FullTextSourcesList 2020-04-25 09:57:59 +06:00
76b25d719a explanation small utils and explanationLimit 2020-04-25 09:48:23 +06:00
a4d077dd17 add Explained interface and use it in polls 2020-04-25 09:41:04 +06:00
469712150b started 0.27.1 2020-04-25 09:26:10 +06:00
fad27ede78 Merge pull request #84 from InsanusMokrassar/0.27.0
0.27.0
2020-04-24 21:25:11 +06:00
1de90412b3 addition in changelog 2020-04-24 21:24:24 +06:00
215c8793e1 optimize imports 2020-04-24 20:25:53 +06:00
54835f97d1 update TelegramBotAPI utils readme 2020-04-24 20:23:25 +06:00
923e929670 update TelegramBotAPI readme 2020-04-24 20:16:12 +06:00
37488e92e6 utils ScheduledCloseInfo shortcuts 2020-04-24 20:01:20 +06:00
830ca8122d add openPeriodPollSecondsLimit and checks 2020-04-24 19:46:47 +06:00
fbb2758bdb update changelog 2020-04-24 19:26:57 +06:00
a5c3e06f1c remove List<TextPart> extensions for texts due to JVM signature conflict and actualize TelegramBotAPI-extensions-api 2020-04-24 19:24:49 +06:00
c6fb50c4a6 SendPoll#closeInfo functionality 2020-04-24 19:08:54 +06:00
976c0b86dc send quiz poll functionality 2020-04-24 18:46:26 +06:00
fee5d8f925 texts and captions utils 2020-04-24 18:44:04 +06:00
808746e12d Dice#emoji support 2020-04-24 18:25:47 +06:00
3fb80dd475 add support of income explanation functionality in polls and polls auto close functionality 2020-04-24 17:51:09 +06:00
db8ea0da94 update versions 2020-04-24 16:18:07 +06:00
fbdfb714a3 started 0.27.0 2020-04-24 16:13:02 +06:00
1facfbc2b7 Merge pull request #83 from InsanusMokrassar/0.26.4
0.26.4
2020-04-22 15:08:35 +06:00
914a0662a9 CallbackGameInlineKeyboardButton now have only one income parameter 2020-04-22 14:11:46 +06:00
eda3003b7d change the way how we are deserializing updates in webhooks 2020-04-22 13:20:15 +06:00
459942de36 webhook update handling enhancement 2020-04-22 13:16:46 +06:00
17f64f9b48 CallbackGame update 2020-04-22 13:08:05 +06:00
3f896c2240 fix not implemented error thrown 2020-04-22 13:05:57 +06:00
94f8c971c5 started 0.26.4 2020-04-22 13:01:17 +06:00
c43109c063 Update README.md 2020-04-17 15:52:47 +06:00
f6058e29b4 Update README.md 2020-04-17 15:52:28 +06:00
3a37311331 Update README.md 2020-04-17 15:52:03 +06:00
9fe1472e64 update readme for help on JS platform 2020-04-17 15:43:43 +06:00
f1480c40a7 Merge pull request #81 from InsanusMokrassar/0.26.3
0.26.3
2020-04-13 12:55:48 +06:00
88eebdc448 small optimization of updates polling exception handling 2020-04-13 12:53:02 +06:00
8c76283db5 suspend inline function handleSafely was added 2020-04-13 12:40:14 +06:00
7668c48081 BaseEditMessageUpdate#data now is CommonMessage 2020-04-13 12:09:59 +06:00
35d2135f73 update serialization of InlineKeyboardButton 2020-04-13 11:31:36 +06:00
1cb0e096be fixes in InlineKeyboardButtonSerializer 2020-04-13 11:20:39 +06:00
31f7c7f31b UnknownUpdateType even if serialization exception 2020-04-13 11:17:15 +06:00
82d3b3bc48 add UnknownInlineKeyboardButton 2020-04-13 11:11:09 +06:00
b3734a5c2a fix of changelog 2020-04-13 01:46:58 +06:00
55b8736d50 Merge pull request #80 from Djaler/inline-keyboard-button-callback-game
Add support for inline keyboard buttons with callback_game field
2020-04-13 01:40:52 +06:00
3334fd3ca6 started 0.26.3 2020-04-13 01:39:31 +06:00
Kirill Romanov
e2416b405a add support for inline keyboard buttons with callback_game field 2020-04-12 22:30:37 +03:00
14f012fbfa Update README.md 2020-04-09 01:24:55 +06:00
1ff55057f2 Merge pull request #78 from InsanusMokrassar/0.26.2
0.26.2
2020-04-08 16:48:00 +06:00
71b5e33dbc update common README 2020-04-08 15:28:03 +06:00
08d9d183f4 add filterCommandsWithArgs 2020-04-08 15:23:12 +06:00
7183634fd6 experimentally make source string available inside of text sources 2020-04-08 15:17:13 +06:00
cf9f270651 rename new getting updates extension to avoid JVM signature collisions 2020-04-08 14:56:56 +06:00
bd87938e9c fixes in UpdatesChatFilters 2020-04-08 14:51:26 +06:00
ba76eaeb90 update readmes 2020-04-08 14:34:55 +06:00
d8492ae168 fixes, new readme 2020-04-08 14:02:55 +06:00
0db85232d3 fixes in changelog 2020-04-08 13:20:48 +06:00
bcf2325be8 make new startGettingOfUpdates more useful 2020-04-08 13:19:19 +06:00
51174a13de added some of extensions in TelegramBotAPI-extensions-utils 2020-04-08 11:50:47 +06:00
dfc1fa4d7e refill of changelog 2020-04-08 11:11:31 +06:00
10a1d1cb38 add TelegramBotAPI-extensions-utils 2020-04-08 11:05:48 +06:00
6c39dc4d06 new startGettingOfUpdates extension 2020-04-08 10:44:44 +06:00
4877b8958e start 0.26.2 2020-04-08 10:37:05 +06:00
db9c460e66 Merge pull request #75 from InsanusMokrassar/0.26.1
0.26.1
2020-04-06 12:15:27 +06:00
2bd5d53b2a fill changelog 2020-04-06 12:11:14 +06:00
577436843d fixes 2020-04-06 12:09:59 +06:00
048aa93044 InvalidPhotoDimensionsException 2020-04-05 14:06:40 +06:00
4e49de0dd7 fix in hashtag 2020-04-04 12:12:12 +06:00
9dc5a7624d complete CHANGELOG 2020-04-03 14:26:32 +06:00
21a15db031 StorageFile improvement 2020-04-03 14:22:34 +06:00
a6aa4b8758 BotCommand checks 2020-04-01 10:08:44 +06:00
e85d5df03e started 0.26.1 2020-04-01 10:05:30 +06:00
6833640c48 Create write-good.yml 2020-03-31 19:13:48 +06:00
c22c1bb144 Merge pull request #74 from InsanusMokrassar/0.26.0
0.26.0
2020-03-31 11:45:47 +06:00
8293d6683c optimize imports 2020-03-31 11:41:58 +06:00
7e6e892c45 libraries updates 2020-03-31 11:31:24 +06:00
43ac09a79b fixes in startGettingUpdates 2020-03-31 11:28:48 +06:00
ee1f115d77 refill TelegramBotAPI-extensions-api 2020-03-31 11:11:37 +06:00
7d85b6fb88 update readme of telegram bot api 2020-03-31 11:00:22 +06:00
013944c5c9 real fix:) 2020-03-30 22:52:57 +06:00
55ed3e165b resolve compiling errors 2020-03-30 22:47:20 +06:00
9c0106d229 StickerSetAction -> StandardStickerSetAction 2020-03-30 22:31:54 +06:00
9cd2a6220c add setStickerSetThumb 2020-03-30 22:29:34 +06:00
033ec8f2da update version 2020-03-30 22:18:59 +06:00
274afe8efc addAnimatedStickerToSet 2020-03-30 22:12:31 +06:00
e60630b331 add StickerSet#thumb 2020-03-30 22:07:13 +06:00
f6692a22d1 create new animated sticker set 2020-03-30 22:03:59 +06:00
53257ff131 hotfix for setMyCommands request 2020-03-30 21:53:36 +06:00
ec70813e49 commands handling added 2020-03-30 21:52:00 +06:00
54589ed17b BotCommand 2020-03-30 21:40:36 +06:00
1d3736c44e add realisation of DiceContent#createResend 2020-03-30 21:37:30 +06:00
8ef7acab2d sendDice in extensions api 2020-03-30 21:33:17 +06:00
c3fca5c6c4 include dice in TelegramBotAPI 2020-03-30 21:30:22 +06:00
84d2c88032 started 0.25.2 2020-03-30 21:16:04 +06:00
b7ec2f2b86 Merge pull request #71 from InsanusMokrassar/0.25.1
0.25.1
2020-03-26 14:36:00 +06:00
97d6d3ad13 update kotlin 2020-03-26 14:27:17 +06:00
3dd428c7d9 fix of error inside of update utils for media groups 2020-03-26 14:26:44 +06:00
688de1053b started 0.25.1 2020-03-26 14:13:00 +06:00
a4fae36b22 hotfix for ExtendedUser 2020-03-22 22:57:01 +06:00
909a7fd26a add ExtendedUser 2020-03-22 22:37:26 +06:00
041232e260 FlowUpdatesFilter update 2020-03-22 17:21:01 +06:00
d4c409107a Merge pull request #69 from InsanusMokrassar/0.25.0
0.25.0
2020-03-22 16:50:50 +06:00
a0db95d929 suppressions nad compiler args 2020-03-22 16:41:48 +06:00
fb34b0bec1 optimize imports 2020-03-22 16:04:11 +06:00
d18863b7b3 TelegramDateTests now using strict json 2020-03-22 15:56:05 +06:00
c5c8a743e6 fixes in ChatIdentifierSerializer 2020-03-22 15:53:37 +06:00
89881a7349 removing of deprecations 2020-03-22 15:15:01 +06:00
865edf385f fix several todo 2020-03-22 14:07:00 +06:00
c85faa73c0 fixes 2020-03-22 13:53:42 +06:00
6b3f836096 new libraries versions adaptation 2020-03-22 13:37:01 +06:00
574ffbc44d update versions 2020-03-22 13:04:40 +06:00
a0120afb08 now bot username is not nullable 2020-03-22 12:56:52 +06:00
0b4b4950c2 started 0.25.0 2020-03-22 12:54:15 +06:00
b3391330a0 add setting up of socketTimeoutMillis inside of abstract request call factory for GetUpdates 2020-03-19 12:41:16 +06:00
518dee46b3 now startGettingOfUpdates have exceptions handler as argument 2020-03-19 12:03:40 +06:00
c9de4bc79e hotfix for installing of HttpTimeout inside of client only in case when it was not installed previously 2020-03-19 11:10:18 +06:00
badb138bc1 Merge pull request #67 from InsanusMokrassar/0.24.1
0.24.1
2020-03-18 23:02:01 +06:00
4b980d3f44 remove redundant import from webhooks 2020-03-18 22:58:23 +06:00
b11da02c8b refactor UpdatesUtils 2020-03-18 22:56:57 +06:00
71c0b688e8 fixes and improvements 2020-03-17 21:24:04 +06:00
d61aa8b50e getting updates refactoring 2020-03-17 20:24:31 +06:00
be64287c42 copypaste functions from TelegramBotAPI to TelegramBotAPI-extensions-api with adaptation of updates 2020-03-17 19:50:25 +06:00
e7027047cb abstracts for difference between sent and edited messages updates 2020-03-17 19:46:42 +06:00
944d15f326 new startGettingUpdates method 2020-03-17 17:20:42 +06:00
ba2c4cbb30 UpdatesFilter now is interface 2020-03-17 17:16:14 +06:00
244a1e5175 replacement of UpdatesPolling help functions 2020-03-17 16:59:28 +06:00
9c9a938d94 started 0.24.1 2020-03-17 16:47:59 +06:00
a2a403045b a little fix on README 2020-03-17 13:30:01 +06:00
6858af14f8 update info sections 2020-03-17 13:25:10 +06:00
779009c2a6 Merge pull request #66 from InsanusMokrassar/0.24.0
0.24.0
2020-02-25 21:01:46 +06:00
b22d8a5a25 ForwardFromChannelInfo#channelChat now is ChannelChat 2020-02-25 13:45:32 +06:00
54e3c43999 Most part of sending media messages functions was removed and replaced with their InputFile args analogs 2020-02-23 21:29:31 +06:00
f8a312acb3 removing of deprecations 2020-02-23 20:23:33 +06:00
a51e68be04 Update LICENSE 2020-02-19 22:29:53 +06:00
39dab0b970 Replace build badge and link it with travis 2020-02-19 20:12:54 +06:00
b42a6ca0cf Create .travis.yml 2020-02-19 20:08:15 +06:00
a34e67722b update telegrambotapi-extensions-api readme 2020-02-18 19:10:08 +06:00
c0e660c8d3 replace awesome badge 2020-02-17 15:35:33 +06:00
7cca12930c fixes and fill up 2020-02-17 15:33:28 +06:00
5da60b4ac2 update README 2020-02-17 15:25:08 +06:00
51dac40e45 now for extensions api system environment will be checked too 2020-02-17 11:49:48 +06:00
51fc33960a now group is common 2020-02-17 11:47:43 +06:00
b89b798eb6 remove redundant readme 2020-02-15 16:58:26 +06:00
a9326bb374 Merge pull request #65 from InsanusMokrassar/0.23.3
0.23.3
2020-02-15 16:57:29 +06:00
edad64c6e3 actualize changelog 2020-02-15 16:56:15 +06:00
8c06322586 now LiveLocation is deprecated in TelegramBotAPI and placed into TelegramBotAPI-extensions-api 2020-02-15 16:19:12 +06:00
9684e55c12 update group badge
update group badge

update group badge
2020-02-15 16:11:42 +06:00
d7d92cd83f fixes in readme 2020-02-15 15:49:29 +06:00
7229d96ce7 remove redundant .gitignore 2020-02-15 15:38:24 +06:00
c32ab031dd fill changelog 2020-02-15 15:37:15 +06:00
a8d7104145 extract RequestsExecutor extensions 2020-02-15 15:33:04 +06:00
ff550fafde add subproject TelegramBotAPI-extensions-api 2020-02-15 01:23:52 +06:00
1dbb0e669d started 0.23.3 2020-02-15 00:55:37 +06:00
723818f04f improve badge 2020-02-15 00:54:44 +06:00
0c107bc512 replace TelegramBotAPI to the separated subproject 2020-02-15 00:50:35 +06:00
945df1bc5f Add chat badge in README 2020-02-14 19:18:15 +06:00
239d740587 Make text in chat badge less 2020-02-14 19:15:36 +06:00
5fdcf252b2 Create chat.svg 2020-02-14 19:14:30 +06:00
a17ae07e50 InputMedia#media fix (version 0.23.2) 2020-02-14 12:06:54 +06:00
8bbfa2ee24 Create FUNDING.yml 2020-02-10 23:13:07 +06:00
4b908f9975 Now it is possible to send broadcast channels size for FlowsUpdatesFilter 2020-02-09 15:15:36 +06:00
542fcef6da optimize imports 2020-02-08 00:00:52 +06:00
0959c0b0d7 Merge pull request #64 from InsanusMokrassar/0.23.1
0.23.1
2020-02-07 23:12:13 +06:00
34f606545e additional fixes in live location 2020-02-07 22:45:57 +06:00
0e33b123e9 additional fixes in live location 2020-02-07 22:43:48 +06:00
d6bbb0cadc update LiveLocation logic 2020-02-07 22:36:15 +06:00
8fd6a09763 toInputFile specifying return types 2020-02-07 22:12:18 +06:00
aa333d7c58 fill CHANGELOG and update README 2020-02-07 11:00:21 +06:00
fe8c3392fa Actialize bot action tests 2020-02-07 10:49:16 +06:00
c2c7ac0d1e InvoiceOfPayment is renamed to InvoiceContent 2020-02-07 10:47:35 +06:00
04e4407b96 fill changelog about new actions 2020-02-07 10:36:31 +06:00
60a30f972f add additional methods for quiz poll 2020-02-07 10:33:36 +06:00
9ed1500bee add additional methods for regular poll 2020-02-07 10:31:22 +06:00
7d0009039f logical fixes 2020-02-07 10:12:21 +06:00
e43ad41d2f complete filling of requests extensions 2020-02-07 00:56:32 +06:00
c7d5fdd2e0 fill edit and stop live location methods 2020-02-07 00:40:47 +06:00
e7bdc85279 precomplete of games extensions 2020-02-07 00:29:50 +06:00
dcfa198c8c send game and other extensions 2020-02-07 00:25:24 +06:00
a846d0031c updates in sendInvoice and its extensions 2020-02-07 00:15:28 +06:00
0dd632eb46 add send invoice extensions 2020-02-07 00:01:21 +06:00
dfe5595fd3 add delete sticker from set 2020-02-06 23:55:17 +06:00
945dd05cfd add add sticker to set and set sticker position in set extensions 2020-02-06 23:54:14 +06:00
09c623c1d7 add create new sticker set extensions 2020-02-06 23:46:16 +06:00
269a4dd707 add upload sticker file extensions 2020-02-06 23:39:57 +06:00
2399dc0d0a add get sticker set extensions 2020-02-06 23:38:37 +06:00
3a0be49cc5 additions in sendSticker 2020-02-06 23:35:51 +06:00
28898ea2d4 add sendSticker extensions 2020-02-06 23:33:58 +06:00
679f282bd2 refactor delete extensions 2020-02-06 23:28:46 +06:00
02fa83c92a small refactor in PinChatMessage 2020-02-06 23:17:55 +06:00
69f81785bf rename RequestsExecutor#setChatPermissions -> RequestsExecutor#setDefaultChatMembersPermissions 2020-02-06 23:15:13 +06:00
86f1e3ea36 add get file info extensions 2020-02-06 23:12:49 +06:00
be4043f3c2 fix in RequestsExecutor#getUserProfilePhotos extension 2020-02-06 23:09:01 +06:00
b4d0ca507b add get user profile photos extensions 2020-02-06 23:08:13 +06:00
cc433d4091 add send bot action extensions 2020-02-06 23:06:29 +06:00
f8ffd5fec3 add send polls extensions 2020-02-06 22:52:10 +06:00
799eadd7a7 add send contact extensions 2020-02-06 22:44:26 +06:00
bc7cfc0d32 add send venue extensions 2020-02-06 22:40:19 +06:00
4ca8125637 add send location extensions and LiveLocation 2020-02-06 22:32:20 +06:00
5475f27a24 add send video note extensions 2020-02-06 21:41:46 +06:00
6d425cc0f6 add send video extensions 2020-02-06 21:36:18 +06:00
ff3ef6e957 add send voice extensions 2020-02-06 21:27:42 +06:00
28eecfa3ef add send animation extensions 2020-02-06 21:23:59 +06:00
56663d8e73 add send document extensions 2020-02-06 21:15:17 +06:00
2fd842746b add send audio extensions 2020-02-06 21:05:16 +06:00
5e5dc105a5 refactor type inside edit messages extensions 2020-02-06 20:36:29 +06:00
6cf836708d complete filling of until SendPhoto for usefull extensions 2020-02-06 14:25:17 +06:00
5e6ff01940 complete update methods 2020-02-06 14:05:36 +06:00
2cfabb1c2a update Chat dependency in methods 2020-02-06 13:38:52 +06:00
de1d6aa70c LeaveChat and ExportChatInviteLink now have one more extension 2020-02-06 13:31:53 +06:00
90d5833021 CommonMultipartFileRequest now is internal 2020-02-06 13:29:14 +06:00
527b718f55 chat methods now have additional usefull extensions 2020-02-06 13:27:58 +06:00
2eb2d25662 complete answers extensions 2020-02-06 12:54:55 +06:00
9c25254937 AnswerInlineQuery simple sending extensions 2020-02-06 12:38:56 +06:00
601958a513 AnswerCallbackQuery simple sending extensions 2020-02-06 12:12:20 +06:00
ab6688bbaa additional KtorUpdatesPoller method 2020-02-06 12:08:31 +06:00
4f2a8e49bc Add maven version badge 2020-02-04 13:46:07 +06:00
0ce9080efc Add awesome badge due to merged PR in kotlin awesome
https://github.com/KotlinBy/awesome-kotlin/pull/526
2020-02-04 13:42:06 +06:00
f2701b920f start 0.23.1 2020-02-01 14:14:45 +06:00
a3b29f7db5 update link to unsupported passport API changelog 2020-01-29 12:04:40 +06:00
43a36072f1 Merge pull request #63 from InsanusMokrassar/0.23.0
0.23.0
2020-01-23 22:37:34 +06:00
0c11be7fe4 rewrite work with Bot class 2020-01-23 22:32:45 +06:00
7a880ba2bd UnknownPollType now can be created only inside of library 2020-01-23 22:15:08 +06:00
1a258ae912 RequestPollKeyboardButton#requestPoll is required parameter for now 2020-01-23 22:09:06 +06:00
9dc3e1ecc6 fixes in KeyboardButtonPollType serialization 2020-01-23 21:52:28 +06:00
b9e674821b fix in createRequest for Poll 2020-01-23 20:45:02 +06:00
f4a731940e QuizPoll#correctOptionId now is nullable 2020-01-23 20:40:56 +06:00
43ef7656d0 startGettingUpdates now have parameter for pollAnswer 2020-01-23 20:13:32 +06:00
b9ab7f2955 AnonymousPollOption renamed to SimplePollOption 2020-01-23 20:11:24 +06:00
00886dcfb7 now user have correct serializer 2020-01-23 19:31:09 +06:00
46573512a2 fix in javaLocale extension 2020-01-23 19:14:33 +06:00
a8ae0a296a separated User object and additional fields for Bot representation 2020-01-23 19:08:02 +06:00
8687a2ba6b "KeyboardButton" now is sealed class 2020-01-23 18:06:22 +06:00
dbd9c72249 UpdatesFilter now support PollAnswerUpdate 2020-01-23 17:32:04 +06:00
7aef76f432 PollAnswerUpdate 2020-01-23 17:29:09 +06:00
aece0784ab fixes in PollContent#createResend, added Poll#createRequest 2020-01-23 17:25:57 +06:00
4e1dbb8741 PollAnswer 2020-01-23 17:17:24 +06:00
41db785696 "language" field im RawMessageEntity 2020-01-23 17:07:28 +06:00
4e39f77b53 SendRegularPoll, SendQuizPoll 2020-01-23 17:01:13 +06:00
258ab44bac added votes count field to poll 2020-01-23 16:40:57 +06:00
423efafa04 extend polls 2020-01-23 16:36:25 +06:00
229334e781 start 0.23.0 2020-01-23 16:00:46 +06:00
c4f22c2c43 Merge pull request #62 from InsanusMokrassar/0.22.2
0.22.2
2020-01-23 04:23:23 +06:00
2980b345a9 optimize imports 2020-01-23 04:23:06 +06:00
ca24416934 UpdatesFilter#unknownUpdateTypeCallback 2020-01-23 04:21:45 +06:00
c006b47429 fix in cashTag internal fun 2020-01-23 04:08:56 +06:00
8487ee1f31 fixes in calling of "asUpdate" 2020-01-23 04:01:24 +06:00
f4fe680cac UnknownCallbackQueryType 2020-01-23 03:59:59 +06:00
cf814fcecb update gradle.properties 2020-01-23 03:51:08 +06:00
a967b06d2e remove redundant line from changelog 2020-01-23 03:48:33 +06:00
83e5d40443 UnknownUpdate -> UnknownUpdateType, unknown types for messages and chats 2020-01-23 03:47:43 +06:00
a8ca45a4bd replace UnknownUpdate 2020-01-23 03:35:56 +06:00
961fa65415 UnknownUpdate 2020-01-23 03:31:56 +06:00
4182d66f6e cashtag entity type was added 2020-01-23 03:05:28 +06:00
971589fe99 start 0.22.2 2020-01-23 03:03:38 +06:00
257574324a Update README.md 2020-01-21 16:03:02 +06:00
cf3e372ca3 Added a cut for README 2020-01-21 16:01:53 +06:00
502a53fd62 fixes in new "asInputMedia" functions 2020-01-21 14:30:33 +06:00
353891eb37 Merge pull request #60 from InsanusMokrassar/0.22.1
0.22.1
2020-01-20 22:39:23 +06:00
5f593439a3 remove file link maker 2020-01-20 22:38:45 +06:00
f99873dd70 hotfix 2020-01-20 22:10:46 +06:00
d330cd2bfc hotfix 2020-01-20 20:14:52 +06:00
92224b95df PreviewFeature, message links 2020-01-20 16:35:36 +06:00
63e0f5c054 0.22.1 2020-01-20 14:42:38 +06:00
dd76e704a8 Update README.md 2020-01-17 08:29:22 +06:00
4845a61539 Update README.md 2020-01-17 08:24:38 +06:00
9dfb16f534 update publish scripts 2020-01-15 21:41:52 +06:00
50ae9ef955 Merge pull request #59 from InsanusMokrassar/0.22.0
0.22.0
2020-01-15 13:35:08 +06:00
f80bb18ca5 ResendableContent change fill in changelog 2020-01-15 13:30:28 +06:00
40eaffb8e3 EditChatMessage change fill in changelog 2020-01-15 13:27:29 +06:00
0c9f9f59c1 update changelog 0.22.0 type of title 2020-01-15 13:12:35 +06:00
12496f8261 make all serializers are internal 2020-01-15 13:03:42 +06:00
3fe7bd1382 AbleToBe -> Possibly and ForwardedMessage -> ForwardInfo 2020-01-15 12:52:52 +06:00
e3117f3679 migrate 0.21.1 -> 0.22.0 2020-01-15 12:31:17 +06:00
562459f0b7 update ktor 2020-01-15 12:28:06 +06:00
e98e61747c update README 2020-01-15 11:49:55 +06:00
e1082c3741 update README 2020-01-15 11:48:44 +06:00
3fa2071847 now most part of request have changed return types 2020-01-15 11:17:53 +06:00
4c60b8fd82 Merge branch 'master' into 0.21.1 2020-01-15 09:50:57 +06:00
cb30beaa31 one more fix for publishing 2020-01-13 23:21:57 +06:00
10df8cbc55 one more fix for publishing 2020-01-13 23:21:07 +06:00
4b66617db6 one more fix for publishing 2020-01-13 21:47:41 +06:00
9ddab0bf29 updates in publish script 2020-01-13 11:26:52 +06:00
e43d7350ed started 0.21.1 2020-01-08 12:11:57 +06:00
82129205fa add availability info about maven 2020-01-06 22:47:43 +06:00
034b30d65f update publishing scheme to be able to publish with signed artifacts 2020-01-06 22:44:31 +06:00
0d72c51448 Set theme jekyll-theme-cayman 2020-01-06 22:44:23 +06:00
fe11b088fc Update README.md 2020-01-05 21:39:04 +06:00
336f280b8a Update README.md 2020-01-05 21:30:17 +06:00
0f9e048274 Update README.md 2020-01-05 21:26:43 +06:00
f8b6073cd4 update compatibility info in README 2020-01-05 20:58:07 +06:00
0899a69762 update versions 2020-01-05 20:45:50 +06:00
031c61a872 Merge pull request #54 from InsanusMokrassar/0.21.0
0.21.0 TelegramBotAPI 4.5
2020-01-05 20:31:37 +06:00
33d8dcf977 update CHANGELOG 2020-01-05 20:30:42 +06:00
2f09504f08 fix in formatting of hashtag text 2020-01-05 20:28:44 +06:00
f4c11cacc6 fix in formatting of hashtag text 2020-01-05 20:18:05 +06:00
4ac01d5331 all fields in text sources are lazy 2020-01-05 20:07:51 +06:00
bb3ebb455e update CHANGELOG 2020-01-05 19:58:29 +06:00
7694b25d33 optimize imports 2020-01-05 19:51:32 +06:00
b095f07b9c add subcondition for adding subparts in raw message entities 2020-01-05 19:50:04 +06:00
72127ce133 rework in part of text message entities 2020-01-05 19:24:17 +06:00
398adf06ff Actualized work with pre type of text - now it is possible to use language for formatting of text 2020-01-03 00:27:24 +06:00
dbef69ffac fixed problem that usually string formatting did not trigger escaping of control characters 2020-01-03 00:04:49 +06:00
f68edebd24 RawMessageEntity will not throw exception 2020-01-02 23:58:16 +06:00
482d924070 refactor and preparing to multilevel message entities 2020-01-02 23:55:26 +06:00
e7495468a2 added support of strikethrough and underline 2020-01-02 23:10:39 +06:00
bba37d8889 all TelegramMediaFile instances now have field fileUniqueId, which represents file_unique_id field from API 2020-01-01 22:26:19 +06:00
198e15a937 now ChatPhoto have two additional fields: smallFileUniqueId and bigFileUniqueId 2020-01-01 22:20:08 +06:00
5ee472305c add restrictions check in SetChatAdministratorCustomTitle 2020-01-01 21:56:53 +06:00
47428dd6f9 now any administrator object instance have nullable field 2020-01-01 21:51:11 +06:00
b4e4bed622 added the new request SetChatAdministratorCustomTitle to manage the custom titles of administrators promoted by the bot. 2020-01-01 21:45:39 +06:00
4dd2a8437c added the field slowModeDelay to the ExtendedSupergroupChat objects 2020-01-01 21:38:05 +06:00
8b93922f82 starts 0.21.0 2020-01-01 21:28:00 +06:00
43b08e9319 Now setWebhook supports custom listen address even if certificate was not provided 2020-01-01 14:43:32 +06:00
62d474b7cc Merge pull request #52 from InsanusMokrassar/0.20.4
0.20.4
2020-01-01 14:34:07 +06:00
0066e814b3 a little reorder of arguments in setWebhook 2020-01-01 14:12:37 +06:00
ef7e94ba68 now setWebhook supports setting up of path for listening 2020-01-01 14:07:17 +06:00
27aba72a5a started 0.20.4 2020-01-01 14:06:03 +06:00
680e960037 [0.20.3] hotfix in LeftChatMember parents 2019-12-16 23:24:40 +06:00
ff47168fdc update build status place 2019-12-14 00:13:10 +06:00
a68c31f9d1 0.20.2 - MessageToEditNotFoundException 2019-12-13 23:55:06 +06:00
ac915b79f7 fix of exceptions catching 2019-12-13 23:54:02 +06:00
1659f6f909 a little fix 2019-12-13 23:36:31 +06:00
5249fb517f 0.20.2 - MessageIsNotModifierException 2019-12-13 23:34:58 +06:00
fdf45d7566 a little fix in changelog 2019-12-11 17:05:48 +06:00
dc93997b8c Merge pull request #48 from InsanusMokrassar/0.20.1
0.20.1
2019-12-11 17:05:12 +06:00
6dd701d33c TextSource analogues of MessageEntities 2019-12-11 14:06:09 +06:00
6f1f5e640a add TextSource 2019-12-11 13:49:17 +06:00
dd0e3c04bc fix of TextMentionMessageEntity#asHtmlSource 2019-12-11 10:53:41 +06:00
a17af67f83 User as PrivateChat 2019-12-11 10:18:12 +06:00
761e08afc6 start 0.20.1 2019-12-11 09:45:31 +06:00
a09af8870a optimize imports 2019-12-06 16:46:38 +06:00
0ef4341baf Merge pull request #46 from InsanusMokrassar/0.20.0
0.20.0
2019-12-06 16:28:29 +06:00
91d8fbb232 update README 2019-12-03 12:51:52 +06:00
0c1df47dbb add js target 2019-12-03 12:40:21 +06:00
b582adc3a0 change target version 2019-12-03 12:18:46 +06:00
7660102435 Merge pull request #45 from InsanusMokrassar/task/28-migration_to_mpp
Migration onto Kotlin Multiplatform
2019-12-03 12:17:45 +06:00
5dbfeca18f fix way how multipart messages are sending 2019-12-03 12:15:15 +06:00
f3fc0769ef migration 2019-12-03 11:07:25 +06:00
24d11d2c2b replace joda-time dependency by soywiz klock 2019-12-03 09:47:53 +06:00
498efc2ec3 Merge pull request #44 from InsanusMokrassar/0.19.0
0.19.0
2019-12-02 14:56:41 +06:00
21544013d9 ChatSerializers formatter extracting 2019-12-02 14:51:53 +06:00
e296c2ee00 third part of deprecations removing 2019-12-02 14:48:23 +06:00
ed60dc49e7 second part of deprecations removing 2019-12-02 14:44:23 +06:00
c1b5b3ca19 first part of deprecations removing 2019-12-02 14:39:19 +06:00
24498479a8 total rework of requests serialization 2019-12-02 14:35:37 +06:00
cb64f44ceb start 0.19.0 2019-12-02 13:52:22 +06:00
ba145d3ff8 Merge pull request #43 from InsanusMokrassar/0.18.1
0.18.1
2019-12-02 13:22:53 +06:00
f57bfb017f add BotAction test 2019-12-02 13:21:31 +06:00
8b36767435 added TelegramDate tests and fix in chat identifier functionality 2019-12-02 11:18:08 +06:00
91ab60d1f5 added tests for ParseMode 2019-12-02 11:05:15 +06:00
88208016d4 added ChatIdentifier tests 2019-12-02 10:56:59 +06:00
fec2ef8b30 update version of library 2019-11-29 12:32:06 +06:00
7bc06eae31 update incorrect info about ktor version 2019-11-29 12:26:31 +06:00
128e69e3e3 adapt code to new versions 2019-11-29 12:25:22 +06:00
6c5fc8144b update libraries 2019-11-29 12:19:24 +06:00
73f5bf7e4b Remove extraxtResult from KtorRequestsExecutor 2019-08-19 21:58:30 +06:00
17c10a2975 Merge pull request #41 from InsanusMokrassar/0.18.0
0.18.0
2019-08-19 16:14:54 +06:00
c6638f3102 change type of exception inside of serialization of message 2019-08-19 16:12:19 +06:00
f86ae2b592 Request extracting result method removed 2019-08-19 16:06:12 +06:00
84eb2fac7c small refactoring of KtorRequestsExecutor 2019-08-19 16:03:01 +06:00
bf8096ece2 optimize imports 2019-08-18 12:59:11 +06:00
2ee5d78362 TelegramFile was removed 2019-08-18 12:58:17 +06:00
704457715d RawGame added 2019-08-18 12:31:33 +06:00
44751d94b3 add for Game its own serializer and hide usage of RawMessageEntity 2019-08-18 00:18:13 +06:00
2530b85400 update changelog 2019-08-17 22:55:41 +06:00
49cbcea405 RawChosenInlineResult is internal 2019-08-17 22:51:51 +06:00
0312c57741 RawCallbackQuery is internal 2019-08-17 22:50:52 +06:00
e7af08142b RawInlineQuery is internal 2019-08-17 22:49:37 +06:00
3285b2812e RawMessageEntity is internal 2019-08-17 22:48:18 +06:00
402e1b12dc current raw tools are internal 2019-08-17 22:29:42 +06:00
41c5ba7309 RawChatMember is internal 2019-08-17 22:26:02 +06:00
617bccaa81 RawUpdate is internal 2019-08-17 22:08:36 +06:00
c7a8bc5c9d update description 2019-08-17 11:53:19 +06:00
56f36523db "RawMessage" usages replaced by "Message" usages 2019-08-17 11:50:46 +06:00
8330aa1b3d start 0.18.0 2019-08-17 11:32:39 +06:00
fc0dcae4be update of link to [not] include api 2019-08-14 10:55:17 +06:00
861254fe64 update README 2019-08-14 10:50:02 +06:00
790885fd0d Merge pull request #39 from InsanusMokrassar/0.17.0
0.17.0
2019-08-12 18:18:10 +06:00
1112 changed files with 32136 additions and 8708 deletions

5
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,5 @@
# These are supported funding model platforms
patreon: InsanusMokrassar
custom: ['https://paypal.me/InsanusMokrassar?locale.x=ru_RU']

11
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,11 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "gradle" # See documentation for possible values
directory: "/tgbotapi.core" # Location of package manifests
schedule:
interval: "daily"

10
.github/labeler.yml vendored Normal file
View File

@@ -0,0 +1,10 @@
api: "TelegramBotAPI-extensions-api/**"
utils: "TelegramBotAPI-extensions-utils/**"
core: "TelegramBotAPI/**" # currently not work
code: "**/*.kt"
gradle: "**/*.gradle"
versions: "**/gradle.properties"
markdown:
- "**/*.md"
- "!CHANGELOG.md"

2
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,2 @@
* Please, be sure that you have read [Contributing](https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/CONTRIBUTING.md) file. Of course, this line must be removed during PR preparation :)
* Describe your changes, shortly. As example (or format) you can look at the body of any [Project releases](https://github.com/InsanusMokrassar/TelegramBotAPI/releases)

12
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
name: Build
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build
run: ./gradlew build

13
.github/workflows/greetings.yml vendored Normal file
View File

@@ -0,0 +1,13 @@
name: Greetings
on: [pull_request, issues]
jobs:
greeting:
runs-on: ubuntu-latest
steps:
- uses: actions/first-interaction@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
issue-message: 'Welcome with your first issue'
pr-message: 'Welcome with your first PullRequest'

21
.github/workflows/kdocs.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: Publish KDocs
on:
push:
branches:
- master
jobs:
publishing:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build
run: ./gradlew dokkaHtml
- name: Publish KDocs
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs/build/dokka/html
publish_branch: kdocs

18
.github/workflows/label.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
# This workflow will triage pull requests and apply a label based on the
# paths that are modified in the pull request.
#
# To use this workflow, you will need to set up a .github/labeler.yml
# file with configuration. For more information, see:
# https://github.com/actions/labeler/blob/master/README.md
name: "Pull Request Labeler"
on:
- pull_request
jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v2
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"

View File

@@ -0,0 +1,21 @@
name: Publish package to GitHub Packages
on: [push]
jobs:
publishing:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Rewrite version
run: |
branch="`echo "${{ github.ref }}" | grep -o "[^/]*$"`"
cat gradle.properties | sed -e "s/^library_version=\([0-9\.]*\)/library_version=\1-branch_$branch-build${{ github.run_number }}/" > gradle.properties.tmp
rm gradle.properties
mv gradle.properties.tmp gradle.properties
- name: Publish
run: ./gradlew publishAllPublicationsToGithubPackagesRepository --no-parallel -x signJsPublication -x signJvmPublication -x signKotlinMultiplatformPublication
env:
GITHUBPACKAGES_USER: ${{ github.actor }}
GITHUBPACKAGES_PASSWORD: ${{ secrets.GITHUB_TOKEN }}

3
.gitignore vendored
View File

@@ -8,3 +8,6 @@ settings.xml
.gradle/
build/
out/
local.properties
secret.gradle

15
.travis.yml Normal file
View File

@@ -0,0 +1,15 @@
language: java
install: true
os: linux
dist: trusty
jdk: oraclejdk8
jobs:
include:
- stage: build
script: ./gradlew build -s -x jvmTest -x jsIrTest -x jsIrBrowserTest -x jsIrNodeTest -x jsLegacyTest -x jsLegacyBrowserTest -x jsLegacyNodeTest
- state: test
script: ./gradlew allTests
- state: dokka
script: ./gradlew dokkaHtml

File diff suppressed because it is too large Load Diff

10
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,10 @@
# Contributing
In case you wish to contribute this project, there are several small things you must remember:
* Give maintainers opportunity to manage your Pull request. It is required for two reasons
* For more efficient Pull Requests handling (it is much easier for me to fix something small directly in your pull request than ask to fix some small things after each review)
* Usually, you will set as a target `master` branch, but I prefer to include code into separated version branch firstly. So, if you will give me opporunity to change Pull Request, I will be available to change base branch
* Currently in Pull Requests there are several bots. The most important is Travis bot and it must always successfuly build code from your Pull Request
This project was built on the idea of strongly-typed declaration of TelegramBotAPI. So, do not worry if maintaners will change your pull requests: you are already cool because you have contributed this project:)

View File

@@ -178,7 +178,7 @@
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
@@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2018 Insanus
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

248
README.md
View File

@@ -1,178 +1,118 @@
[Participate in our common survey ☺](https://forms.gle/q6Xf8K3fD1pPsYUw9)
# TelegramBotAPI
[![Download](https://api.bintray.com/packages/insanusmokrassar/StandardRepository/TelegramBotAPI/images/download.svg) ](https://bintray.com/insanusmokrassar/StandardRepository/TelegramBotAPI/_latestVersion)
[![Build Status](https://jenkins.insanusmokrassar.space/buildStatus/icon?job=TelegramBotAPI_master__publishing)](https://jenkins.insanusmokrassar.space/job/TelegramBotAPI_master__publishing/)
Hello! This is a set of libraries for working with Telegram Bot API.
## What is it?
| Common info | [![Awesome Kotlin Badge](https://kotlin.link/awesome-kotlin.svg)](https://github.com/KotlinBy/awesome-kotlin) [![Build Status](https://github.com/InsanusMokrassar/TelegramBotAPI/workflows/Build/badge.svg)](https://github.com/InsanusMokrassar/TelegramBotAPI/actions) [Small survey](https://forms.gle/2Hex2ynbHWHhi1KY7)|
| -------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Useful links | [![Chat in Telegram](badges/chat.svg)](https://t.me/InMoTelegramBotAPI) [![Create bot](badges/template.svg)](https://github.com/InsanusMokrassar/TelegramBotAPI-bot_template/generate) [![KDocs](badges/kdocs.svg)](https://tgbotapi.inmo.dev/docs/index.html) [Examples](https://github.com/InsanusMokrassar/TelegramBotAPI-examples/), [Mini tutorial](https://bookstack.inmo.dev/books/telegrambotapi/chapter/introduction-tutorial) |
| TelegramBotAPI Core status | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi.core/badge.svg)](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi.core) |
| TelegramBotAPI API Extensions status | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi.extensions.api/badge.svg)](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi.extensions.api) |
| TelegramBotAPI Util Extensions status | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi.extensions.utils/badge.svg)](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi.extensions.utils) |
| TelegramBotAPI Behaviour Builder Extensions status | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi.extensions.behaviour_builder/badge.svg)](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi.extensions.behaviour_builder) |
| TelegramBotAPI All status | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi/badge.svg)](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi) |
It is one more project which wish to be useful and full Telegram Bots API bridge for Kotlin. Most part of some specific
solves or unuseful moments are describing by official [Telegram Bot API](https://core.telegram.org/bots/api).
## Examples
## Compatibility
There are several things you need to do to launch examples below:
This version compatible with [31st of May 2019 update of TelegramBotAPI](https://core.telegram.org/bots/api#may-31-2019).
There is one exception of implemented functionality. It is Telegram Passport API, which was presented in
[August 2018 update of TelegramBotAPI](https://core.telegram.org/bots/api#august-27-2018) update. It will be implemented
as soon as possible. All included and supported API can be found on
[wiki](https://github.com/InsanusMokrassar/TelegramBotAPI/wiki/Included-API).
* Add `mavenCentral()` to your project repositories
* [Maven variant](https://github.com/InsanusMokrassar/TelegramBotAPI/wiki/Including-in-your-project#pomxml)
* Add dependency `implementation "dev.inmo:tgbotapi:$tgbotapi_version"`
* Replace `tgbotapi_version` with exact version (see last one in the table above) or put variable with this name in project
* Alternative variant for maven [here](https://github.com/InsanusMokrassar/TelegramBotAPI/wiki/Including-in-your-project#telegrambotapi)
## How to implement library?
More including instructions [available here](https://github.com/InsanusMokrassar/TelegramBotAPI/wiki/Including-in-your-project).
Other configuration examples:
Common ways to implement this library are presented here. In some cases it will require additional steps
like inserting of additional libraries (like `kotlin stdlib`). In the examples will be used variable
`telegrambotapi.version`, which must be set up by developer. Available versions are presented on
[bintray](https://bintray.com/insanusmokrassar/StandardRepository/TelegramBotAPI), next version is last published:
* [For multiplatform](https://github.com/InsanusMokrassar/TelegramBotAPI-examples/tree/master/ResenderBot)
* [For JVM](https://github.com/InsanusMokrassar/TelegramBotAPI-examples/blob/master/GetMeBot/build.gradle)
[![Download](https://api.bintray.com/packages/insanusmokrassar/StandardRepository/TelegramBotAPI/images/download.svg) ](https://bintray.com/insanusmokrassar/StandardRepository/TelegramBotAPI/_latestVersion)
### Maven
```xml
<dependency>
<groupId>com.github.insanusmokrassar</groupId>
<artifactId>TelegramBotAPI</artifactId>
<version>${telegrambotapi.version}</version>
</dependency>
```
### Gradle
```groovy
implementation "com.github.insanusmokrassar:TelegramBotAPI:${telegrambotapi.version}"
```
### Gradle (old)
```groovy
compile "com.github.insanusmokrassar:TelegramBotAPI:${telegrambotapi.version}"
```
## How to work with library?
For now, this library have no some API god-object. Instead of this, this library has several
important objects:
* [RequestsExecutor](src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/RequestsExecutor.kt)
* [Requests](src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests)
* [Types](src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types)
### Types
Types declare different objects representation. For example, `Chat` for now represented as
interface and has several realisations:
* PrivateChat
* GroupChat
* SupergroupChat
* ChannelChat
Instead of common garbage with all information as in original [Chat](https://core.telegram.org/bots/api#chat),
here it was separated for more obvious difference between chats types and their possible content.
The same principle work with a lot of others things in this Telegram bot API.
### Requests
Requests usually are very simple objects, but some of them are using their own
build factories. For example, the next code show, how to get information about bot:
### Most common example
```kotlin
val requestsExecutor: RequestsExecutor = ...
requestsExecutor.execute(GetMe())
```
suspend fun main() {
val bot = telegramBot(TOKEN)
The result type of [GetMe](src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetMe) request is
[User](src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/User). In fact, in this result must contain
`isBot` equal to `true` always.
### RequestsExecutor
It is base object which can be used to execute requests in API. For now by default included Ktor
realisation of `RequestsExecutor`, but it is possible, that in future it will be extracted in separated
project. How to create `RequestsExecutor`:
```kotlin
val requestsExecutor = KtorRequestsExecutor(TOKEN)
```
Here `KtorRequestsExecutor` - default realisation with Ktor. `TOKEN` is just a token of bot which was retrieved
according to [instruction](https://core.telegram.org/bots#3-how-do-i-create-a-bot).
Besides, for correct usage of this, you must implement in your project both one of engines for client and server
Ktor libraries:
```groovy
dependencies {
// ...
implementation "io.ktor:ktor-server-cio:$ktor_version"
implementation "io.ktor:ktor-client-okhttp:$ktor_version"
// ...
bot.buildBehaviour {
println(getMe())
onCommand("start") {
reply(it, "Hi:)")
}
}.join()
}
```
It is able to avoid using of `server` dependency in case if will not be used `Webhook`s. In this case,
dependencies list will be simplify:
In this example you will see information about this bot at the moment of starting and answer with `Hi:)` every time it
gets message `/start`
```groovy
dependencies {
// ...
implementation "io.ktor:ktor-client-okhttp:$ktor_version"
// ...
### Handling only last messages
```kotlin
suspend fun main() {
val bot = telegramBot(TOKEN)
val flowsUpdatesFilter = FlowsUpdatesFilter()
bot.buildBehaviour(flowUpdatesFilter = flowsUpdatesFilter) {
println(getMe())
onCommand("start") {
reply(it, "Hi:)")
}
retrieveAccumulatedUpdates(this).join()
}
}
```
Here was used `okhttp` realisation of client, but there are several others engines for Ktor. More information
available on ktor.io site for [client](https://ktor.io/clients/http-client/engines.html) and [server](https://ktor.io/quickstart/artifacts.html)
engines.
The main difference with the previous example is that bot will get only last updates (accumulated before bot launch
and maybe some updates it got after launch)
## Getting updates
In this library currently realised two ways to get updates from telegram:
* Polling - in this case bot will request updates from time to time (you can set up delay between requests)
* Webhook via reverse proxy or something like this
### Updates filters
Currently webhook method contains `UpdatesFilter` as necessary argument for getting updates.
`UpdatesFilter` will sort updates and throw their into different callbacks. Currently supporting
separate getting updates for media groups - they are accumulating with debounce in one second
(for being sure that all objects of media group was received).
Updates polling also support `UpdatesFilter` but you must not use it and can get updates directly
in `UpdateReceiver`, which you will provide to `startGettingOfUpdates` method
### Webhook set up
If you wish to use webhook method, you will need:
* White IP - your IP address or host, which available for calling. [TelegramBotAPI](https://core.telegram.org/bots/api#setwebhook)
recommend to use some unique address for each bot which you are using
* SSL certificate. Usually you can obtain the certificate using your domain provider, [Let'sEncrypt](https://letsencrypt.org/) or [create it](https://core.telegram.org/bots/self-signed)
* Nginx or something like this
Template for Nginx server config you can find in [this gist](https://gist.github.com/InsanusMokrassar/fcc6e09cebd07e46e8f0fdec234750c4#file-nginxssl-conf).
For webhook you can provide `File` with public part of certificate, `URL` where bot will be available and inner `PORT` which
will be used to start receiving of updates. Actually, you can skip passing of `File` when you have something like
nginx for proxy forwarding.
In case of using `nginx` with reverse-proxy config, setting up of Webhook will look like:
### Build a little bit more complex behaviour
```kotlin
requestsExecutor.setWebhook(
WEBHOOK_URL,
INTERNAL_PORT,
filter,
ENGINE_FACTORY
)
```
suspend fun main() {
val bot = telegramBot(TOKEN)
Here:
bot.buildBehaviour {
println(getMe())
* `WEBHOOK_URL` - the url which will be used by Telegram system to send updates
* `INTERNAL_PORT` - the port which will be used in bot for listening of updates
* `filter` - instance of [UpdatesFilter](src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/extensions/UpdatesFilter.kt),
which will be used to filter incoming updates
* `ENGINE_FACTORY` - used factory name, for example, `CIO` in case of usage `io.ktor:ktor-server-cio` as server engine
val nameReplyMarkup = ReplyKeyboardMarkup(
matrix {
row {
+SimpleKeyboardButton("nope")
}
}
)
onCommand("start") {
val photo = waitPhoto(
SendTextMessage(it.chat.id, "Send me your photo please")
).first()
val name = waitText(
SendTextMessage(
it.chat.id,
"Send me your name or choose \"nope\"",
replyMarkup = nameReplyMarkup
)
).first().text.takeIf { it != "nope" }
sendPhoto(
it.chat,
photo.mediaCollection,
entities = buildEntities {
if (name != null) regular(name) // may be collapsed up to name ?.let(::regular)
}
)
}
}.join()
}
```
### More examples
You may find examples in [this project](https://github.com/InsanusMokrassar/TelegramBotAPI-examples). Besides, you are
always welcome in our [wiki](https://github.com/InsanusMokrassar/TelegramBotAPI/wiki/About-this-project) and
[chat](https://t.me/InMoTelegramBotAPIChat).

311
TelegramBotAPI.minder Normal file
View File

@@ -0,0 +1,311 @@
<?xml version="1.0"?>
<minder version="1.11.3">
<theme name="default" label="Default" index="-1"/>
<styles>
<style level="0" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
<style level="1" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
<style level="2" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
<style level="3" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
<style level="4" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
<style level="5" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
<style level="6" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
<style level="7" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
<style level="8" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
<style level="9" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
<style level="10" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
</styles>
<drawarea x="-950.47548925255796" y="-49.650554065281653" scale="0.5"/>
<images/>
<nodes>
<node id="0" posx="1378.798161778599" posy="159.04571601189673" width="472" height="168" side="top" fold="false" treesize="743" layout="Downwards" group="false">
<style branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="439" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true"/>
<nodename posx="1394.798161778599" posy="175.04571601189673" maxwidth="488.96484375">
<text data="tgbotapi.core&#10;&#10;Root project with API. It is not recommended to use its requests directly and better to use at least tgbotapi.extensions.api"/>
</nodename>
<nodenote></nodenote>
<nodes>
<node id="1" posx="1411.798161778599" posy="427.04571601189673" width="406" height="145" side="bottom" fold="false" treesize="743" color="#68b723" colorroot="true" layout="Downwards" group="false">
<style branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="none" nodewidth="394" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true"/>
<nodename posx="1427.798161778599" posy="443.04571601189673" maxwidth="419.451171875">
<text data="TelegramBotAPI extensions&#10;&#10;Family of projects which are fully based on TelegramBotAPI and extend its functionality"/>
</nodename>
<nodenote></nodenote>
<nodes>
<node id="2" posx="1247.298161778599" posy="672.04571601189673" width="296" height="191" side="bottom" fold="false" treesize="296" color="#68b723" colorroot="true" layout="Downwards" group="false">
<style branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="203" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true"/>
<nodename posx="1263.298161778599" posy="688.04571601189673" maxwidth="295.90315755208337">
<text data="tgbotapi.extensions.api&#10;&#10;Extensions project for make requests more look like in the Telegram Bot API and give opportunity to use it's easier"/>
</nodename>
<nodenote></nodenote>
</node>
<node id="3" posx="1609.298161778599" posy="672.04571601189673" width="307" height="168" side="bottom" fold="false" treesize="439" color="#68b723" colorroot="true" layout="Downwards" group="false">
<style branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="286" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true"/>
<nodename posx="1625.298161778599" posy="688.04571601189673" maxwidth="299.252197265625">
<text data="tgbotapi.extensions.utils&#10;&#10;Extensions project with utils things which will make easier different operations"/>
</nodename>
<nodenote></nodenote>
<nodes>
<node id="4" posx="1543.298161778599" posy="940.04571601189673" width="439" height="122" side="bottom" fold="false" treesize="439" color="#68b723" colorroot="false" layout="Downwards" group="false">
<style branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="387" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true"/>
<nodename posx="1559.298161778599" posy="956.04571601189673" maxwidth="408.97932942708348">
<text data="tgbotapi.extensions.behaviour_builder&#10;&#10;Extension project for building bot behaviour via special dsl"/>
</nodename>
<nodenote></nodenote>
</node>
</nodes>
</node>
</nodes>
</node>
</nodes>
</node>
<node id="5" posx="1391.8445078072455" posy="1155.6062730594231" width="461" height="236" side="bottom" fold="false" treesize="461" layout="Downwards" group="false">
<style branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="430" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true"/>
<nodename posx="1407.8445078072455" posy="1171.6062730594231" maxwidth="453.885498046875">
<text data="tgbotapi&#10;&#10;Here included all available TelegramBotAPI libraries:&#13;&#10;&#13;&#10;* tgbotapi.core&#13;&#10;* tgbotapi.extensions.api&#13;&#10;* tgbotapi.extensions.utils&#10;* tgbotapi.extensions.behaviour_builder">
<color>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="67" end="68" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="84" end="85" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="111" end="112" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
<range start="139" end="140" extra="rgb(255,0,0)"/>
</color>
</text>
</nodename>
<nodenote></nodenote>
</node>
</nodes>
<groups/>
<connections>
<connection from_id="2" to_id="5" drag_x="1475.8213347929195" drag_y="1014.8259945356604" color="#777777">
<style connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
<title></title>
<note></note>
</connection>
<connection from_id="4" to_id="5" drag_x="1691.5447998046875" drag_y="1107.00439453125" color="#777777">
<style connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
<title></title>
<note></note>
</connection>
<connection from_id="3" to_id="5" drag_x="1483.48876953125" drag_y="896.18115234375">
<style connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
<title></title>
<note></note>
</connection>
</connections>
<stickers/>
</minder>

1
_config.yml Normal file
View File

@@ -0,0 +1 @@
theme: jekyll-theme-cayman

20
badges/chat.svg Normal file
View File

@@ -0,0 +1,20 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="104" height="20">
<linearGradient id="b" x2="0" y2="100%">
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
<stop offset="1" stop-opacity=".1"/>
</linearGradient>
<clipPath id="a">
<rect width="104" height="20" rx="3" fill="#fff"/>
</clipPath>
<g clip-path="url(#a)">
<path fill="#555" d="M0 0h65v20H0z"/>
<path fill="#007ec6" d="M35 0h69v20H35z"/>
<path fill="url(#b)" d="M0 0h104v20H0z"/>
</g>
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110">
<text x="175" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)">Talk</text>
<text x="175" y="140" transform="scale(.1)">Talk</text>
<text x="690" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)">Telegram</text>
<text x="690" y="140" transform="scale(.1)">Telegram</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1018 B

20
badges/kdocs.svg Normal file
View File

@@ -0,0 +1,20 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="104" height="20">
<linearGradient id="b" x2="0" y2="100%">
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
<stop offset="1" stop-opacity=".1"/>
</linearGradient>
<clipPath id="a">
<rect width="104" height="20" rx="3" fill="#fff"/>
</clipPath>
<g clip-path="url(#a)">
<path fill="#555" d="M0 0h65v20H0z"/>
<path fill="#007ec6" d="M45 0h69v20H45z"/>
<path fill="url(#b)" d="M0 0h104v20H0z"/>
</g>
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110">
<text x="225" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)">Open</text>
<text x="225" y="140" transform="scale(.1)">Open</text>
<text x="740" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)">KDocs</text>
<text x="740" y="140" transform="scale(.1)">KDocs</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1012 B

20
badges/template.svg Normal file
View File

@@ -0,0 +1,20 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="104" height="20">
<linearGradient id="b" x2="0" y2="100%">
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
<stop offset="1" stop-opacity=".1"/>
</linearGradient>
<clipPath id="a">
<rect width="104" height="20" rx="3" fill="#fff"/>
</clipPath>
<g clip-path="url(#a)">
<path fill="#555" d="M0 0h65v20H0z"/>
<path fill="#007ec6" d="M35 0h69v20H35z"/>
<path fill="url(#b)" d="M0 0h104v20H0z"/>
</g>
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110">
<text x="175" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)">Bot</text>
<text x="175" y="140" transform="scale(.1)">Bot</text>
<text x="690" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)">Template</text>
<text x="690" y="140" transform="scale(.1)">Template</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1016 B

View File

@@ -1,48 +1,58 @@
project.version = "0.17.0"
project.group = "com.github.insanusmokrassar"
buildscript {
repositories {
mavenLocal()
jcenter()
mavenCentral()
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:$gradle_bintray_plugin_version"
classpath "com.github.breadmoirai:github-release:$github_release_plugin_version"
}
}
apply plugin: 'java-library'
apply plugin: 'kotlin'
apply plugin: 'kotlinx-serialization'
apply from: "publish.gradle"
repositories {
mavenLocal()
jcenter()
mavenCentral()
maven { url "https://kotlin.bintray.com/kotlinx" }
plugins {
id "org.jetbrains.kotlin.multiplatform" version "$kotlin_version" apply false
id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version" apply false
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
api "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version"
api "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$kotlin_serialisation_runtime_version"
api "joda-time:joda-time:$joda_time_version"
api "io.ktor:ktor-client:$ktor_version"
api "io.ktor:ktor-client-cio:$ktor_version"
api "io.ktor:ktor-server:$ktor_version"
api "io.ktor:ktor-server-host-common:$ktor_version"
}
compileKotlin {
kotlinOptions {
freeCompilerArgs = [ disableImplicitReflectionSerializerAnnotation ]
// temporal crutch until legacy tests will be stabled or legacy target will be removed
allprojects {
if (it != rootProject.findProject("docs")) {
tasks.whenTaskAdded { task ->
if(task.name == "jsLegacyBrowserTest" || task.name == "jsLegacyNodeTest") {
task.enabled = false
}
}
}
}
private String getCurrentVersionChangelog() {
OutputStream changelogDataOS = new ByteArrayOutputStream()
exec {
standardOutput = changelogDataOS
commandLine './changelog_info_retriever', "$library_version", 'CHANGELOG.md'
}
return changelogDataOS.toString().trim()
}
if (new File(projectDir, "secret.gradle").exists()) {
apply from: './secret.gradle'
apply plugin: "com.github.breadmoirai.github-release"
githubRelease {
token "${project.property('GITHUB_RELEASE_TOKEN')}"
owner "InsanusMokrassar"
repo "TelegramBotAPI"
tagName "$library_version"
releaseName "$library_version"
targetCommitish "$library_version"
body getCurrentVersionChangelog()
}
}

24
changelog_info_retriever Executable file
View File

@@ -0,0 +1,24 @@
#!/bin/bash
function parse() {
version=$1
while IFS= read -r line && [ -z "`echo $line | grep -e "^#\+ $version"`" ]
do
: # do nothing
done
while IFS= read -r line && [ -z "`echo $line | grep -e "^#\+"`" ]
do
echo "$line"
done
}
version=$1
file=$2
if [ -n "$file" ]; then
parse $version < "$file"
else
parse $version
fi

95
docs/build.gradle Normal file
View File

@@ -0,0 +1,95 @@
buildscript {
repositories {
mavenLocal()
jcenter()
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version"
}
}
plugins {
id "org.jetbrains.kotlin.multiplatform"
id "org.jetbrains.kotlin.plugin.serialization"
id "org.jetbrains.dokka" version "$dokka_version"
}
repositories {
mavenLocal()
jcenter()
mavenCentral()
}
kotlin {
jvm()
js(IR) {
browser()
nodejs()
}
sourceSets {
commonMain {
dependencies {
implementation kotlin('stdlib')
rootProject.subprojects.forEach {
if (it != project) {
api it
}
}
}
}
}
}
private List<SourceDirectorySet> findSourcesWithName(String... approximateNames) {
return parent.subprojects
.findAll { it != project }
.collectMany { it.kotlin.sourceSets }
.findAll { sourceSet -> approximateNames.any {
nameToFilter -> sourceSet.name.contains(nameToFilter)
}
}.collect { it.kotlin }
}
Object callback = {
switch (true) {
case project.hasProperty("DOKKA_PATH"):
outputDirectory = project.property("DOKKA_PATH").toString()
break
case System.getenv("DOKKA_PATH") != null:
outputDirectory = System.getenv("DOKKA_PATH")
break
}
dokkaSourceSets {
configureEach {
skipDeprecated.set(true)
sourceLink {
localDirectory.set(file("./"))
remoteUrl.set(new URL("https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/"))
remoteLineSuffix.set("#L")
}
}
named("commonMain") {
sourceRoots.setFrom(findSourcesWithName("commonMain"))
}
named("jsMain") {
sourceRoots.setFrom(findSourcesWithName("jsMain"))
}
named("jvmMain") {
sourceRoots.setFrom(findSourcesWithName("jvmMain"))
}
}
}
tasks.dokkaGfm(callback)
tasks.dokkaHtml(callback)

3
docs/gradle.properties Normal file
View File

@@ -0,0 +1,3 @@
dokka_version=1.4.32
org.gradle.jvmargs=-Xmx1024m

View File

@@ -1,13 +1,22 @@
org.gradle.jvmargs=-Xmx2048m
kotlin.code.style=official
kotlin_version=1.3.41
kotlin_coroutines_version=1.2.2
kotlin_serialisation_runtime_version=0.11.1
joda_time_version=2.10.3
ktor_version=1.2.3
org.gradle.parallel=true
kotlin.js.generate.externals=true
kotlin.incremental=true
kotlin.incremental.js=true
gradle_bintray_plugin_version=1.8.4
kotlin_version=1.5.10
kotlin_coroutines_version=1.5.0
kotlin_serialisation_runtime_version=1.2.1
klock_version=2.1.2
uuid_version=0.3.0
ktor_version=1.6.0
project_public_name=Telegram Bot API
project_public_description=It is one more project which wish to be useful and full Telegram Bots API bridge for Kotlin
micro_utils_version=0.5.6
disableImplicitReflectionSerializerAnnotation=-Xexperimental=kotlinx.serialization.ImplicitReflectionSerializer
javax_activation_version=1.1.1
library_group=dev.inmo
library_version=0.35.0
github_release_plugin_version=2.2.12

View File

@@ -1,6 +1,5 @@
#Thu Feb 21 12:05:40 HKT 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-bin.zip

View File

@@ -1,63 +0,0 @@
apply plugin: 'maven-publish'
apply plugin: 'signing'
task sourcesJar(type: Jar) {
from sourceSets.main.allSource
classifier = 'sources'
}
task javadocJar(type: Jar) {
from javadoc
classifier = 'javadoc'
}
publishing {
publications {
maven(MavenPublication) {
from components.java
groupId "${project.group}"
artifactId "${project.name}"
version "${project.version}"
artifact sourcesJar
artifact javadocJar
pom.withXml {
asNode().children().last() + {
resolveStrategy = Closure.DELEGATE_FIRST
name "${project_public_name}"
description "${project_public_description}"
url "https://insanusmokrassar.github.io/${project.name}"
scm {
connection "scm:git:git://github.com/insanusmokrassar/${project.name}.git"
developerConnection "scm:git:[fetch=]https://github.com/insanusmokrassar/${project.name}.git[push=]ssh:git@github.com:insanusmokrassar/${project.name}.git"
url "https://github.com/insanusmokrassar/${project.name}"
}
developers {
developer {
id "InsanusMokrassar"
name "Ovsyannikov Alexey"
email "ovsyannikov.alexey95@gmail.com"
}
}
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/LICENSE'
distribution 'repo'
}
}
}
}
}
}
}
signing {
useGpgCmd()
sign publishing.publications.maven
}

View File

@@ -1,33 +0,0 @@
apply plugin: 'com.jfrog.bintray'
ext {
projectBintrayDir = "${project.group}/".replace(".", "/") + "${project.name}/${project.version}"
}
bintray {
user = project.hasProperty('BINTRAY_USER') ? project.property('BINTRAY_USER') : System.getenv('BINTRAY_USER')
key = project.hasProperty('BINTRAY_KEY') ? project.property('BINTRAY_KEY') : System.getenv('BINTRAY_KEY')
publications = ["maven"]
filesSpec {
into "$projectBintrayDir"
from("build/libs") {
include "**/*.asc"
}
from("build/publications/maven") {
rename 'pom-default.xml(.*)', "${project.name}-${project.version}.pom\$1"
}
}
pkg {
repo = 'StandardRepository'
name = "${project.name}"
vcsUrl = "https://github.com/InsanusMokrassar/${project.name}"
licenses = ['Apache-2.0']
version {
name = "${project.version}"
released = new Date()
vcsTag = name
}
}
}
apply from: "maven.publish.gradle"

5
renovate.json Normal file
View File

@@ -0,0 +1,5 @@
{
"extends": [
"config:base"
]
}

View File

@@ -0,0 +1,965 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="755pt" height="1252pt" viewBox="0 0 755 1252" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 5.578125 -12.5 L 5.578125 -10 L 9.34375 -10 L 9.34375 -8.703125 L 5.578125 -8.703125 L 5.578125 -3.375 C 5.578125 -2.988281 5.625 -2.671875 5.71875 -2.421875 C 5.820312 -2.179688 5.957031 -1.984375 6.125 -1.828125 C 6.289062 -1.679688 6.484375 -1.578125 6.703125 -1.515625 C 6.929688 -1.460938 7.171875 -1.4375 7.421875 -1.4375 C 7.597656 -1.4375 7.785156 -1.445312 7.984375 -1.46875 C 8.179688 -1.488281 8.367188 -1.515625 8.546875 -1.546875 C 8.734375 -1.578125 8.90625 -1.609375 9.0625 -1.640625 C 9.226562 -1.679688 9.363281 -1.710938 9.46875 -1.734375 L 9.703125 -0.53125 C 9.566406 -0.445312 9.394531 -0.375 9.1875 -0.3125 C 8.988281 -0.25 8.769531 -0.191406 8.53125 -0.140625 C 8.300781 -0.0976562 8.050781 -0.0625 7.78125 -0.03125 C 7.519531 -0.0078125 7.257812 0 7 0 C 6.5625 0 6.148438 -0.0625 5.765625 -0.1875 C 5.390625 -0.3125 5.0625 -0.507812 4.78125 -0.78125 C 4.5 -1.050781 4.28125 -1.398438 4.125 -1.828125 C 3.96875 -2.253906 3.890625 -2.769531 3.890625 -3.375 L 3.890625 -8.703125 L 1.296875 -8.703125 L 1.296875 -10 L 3.890625 -10 L 3.890625 -12.5 Z M 5.578125 -12.5 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 1.28125 -5.078125 C 1.28125 -5.804688 1.367188 -6.46875 1.546875 -7.0625 C 1.722656 -7.664062 1.976562 -8.179688 2.3125 -8.609375 C 2.65625 -9.046875 3.070312 -9.382812 3.5625 -9.625 C 4.050781 -9.875 4.601562 -10 5.21875 -10 C 5.820312 -10 6.351562 -9.890625 6.8125 -9.671875 C 7.269531 -9.460938 7.660156 -9.15625 7.984375 -8.75 L 8.0625 -10 L 9.59375 -10 L 9.59375 -0.15625 C 9.59375 0.5 9.488281 1.082031 9.28125 1.59375 C 9.082031 2.113281 8.800781 2.550781 8.4375 2.90625 C 8.070312 3.269531 7.632812 3.539062 7.125 3.71875 C 6.613281 3.90625 6.046875 4 5.421875 4 C 5.171875 4 4.878906 3.96875 4.546875 3.90625 C 4.222656 3.851562 3.890625 3.757812 3.546875 3.625 C 3.210938 3.488281 2.890625 3.3125 2.578125 3.09375 C 2.265625 2.875 1.992188 2.597656 1.765625 2.265625 L 2.640625 1.125 C 2.847656 1.40625 3.0625 1.640625 3.28125 1.828125 C 3.5 2.023438 3.71875 2.179688 3.9375 2.296875 C 4.164062 2.421875 4.390625 2.507812 4.609375 2.5625 C 4.835938 2.613281 5.066406 2.640625 5.296875 2.640625 C 5.703125 2.640625 6.0625 2.578125 6.375 2.453125 C 6.695312 2.328125 6.972656 2.140625 7.203125 1.890625 C 7.429688 1.648438 7.601562 1.351562 7.71875 1 C 7.84375 0.644531 7.90625 0.234375 7.90625 -0.234375 L 7.90625 -1.15625 C 7.582031 -0.78125 7.195312 -0.492188 6.75 -0.296875 C 6.300781 -0.0976562 5.785156 0 5.203125 0 C 4.597656 0 4.050781 -0.125 3.5625 -0.375 C 3.070312 -0.625 2.660156 -0.96875 2.328125 -1.40625 C 1.992188 -1.851562 1.734375 -2.375 1.546875 -2.96875 C 1.367188 -3.5625 1.28125 -4.203125 1.28125 -4.890625 Z M 2.96875 -4.890625 C 2.96875 -4.421875 3.015625 -3.976562 3.109375 -3.5625 C 3.210938 -3.144531 3.367188 -2.773438 3.578125 -2.453125 C 3.796875 -2.140625 4.070312 -1.890625 4.40625 -1.703125 C 4.75 -1.523438 5.148438 -1.4375 5.609375 -1.4375 C 5.898438 -1.4375 6.160156 -1.46875 6.390625 -1.53125 C 6.628906 -1.601562 6.84375 -1.695312 7.03125 -1.8125 C 7.21875 -1.9375 7.382812 -2.082031 7.53125 -2.25 C 7.675781 -2.425781 7.800781 -2.617188 7.90625 -2.828125 L 7.90625 -7.21875 C 7.800781 -7.414062 7.675781 -7.597656 7.53125 -7.765625 C 7.382812 -7.929688 7.21875 -8.070312 7.03125 -8.1875 C 6.84375 -8.300781 6.628906 -8.394531 6.390625 -8.46875 C 6.160156 -8.539062 5.910156 -8.578125 5.640625 -8.578125 C 5.160156 -8.578125 4.75 -8.484375 4.40625 -8.296875 C 4.070312 -8.109375 3.796875 -7.851562 3.578125 -7.53125 C 3.367188 -7.207031 3.210938 -6.832031 3.109375 -6.40625 C 3.015625 -5.988281 2.96875 -5.546875 2.96875 -5.078125 Z M 2.96875 -4.890625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 9.953125 -4.890625 C 9.953125 -4.203125 9.863281 -3.5625 9.6875 -2.96875 C 9.519531 -2.375 9.269531 -1.851562 8.9375 -1.40625 C 8.613281 -0.96875 8.207031 -0.625 7.71875 -0.375 C 7.238281 -0.125 6.6875 0 6.0625 0 C 5.425781 0 4.875 -0.113281 4.40625 -0.34375 C 3.945312 -0.570312 3.554688 -0.894531 3.234375 -1.3125 L 3.140625 0 L 1.59375 0 L 1.59375 -14 L 3.28125 -14 L 3.28125 -8.765625 C 3.601562 -9.160156 3.992188 -9.460938 4.453125 -9.671875 C 4.910156 -9.890625 5.441406 -10 6.046875 -10 C 6.679688 -10 7.238281 -9.875 7.71875 -9.625 C 8.207031 -9.382812 8.613281 -9.046875 8.9375 -8.609375 C 9.269531 -8.179688 9.519531 -7.664062 9.6875 -7.0625 C 9.863281 -6.46875 9.953125 -5.804688 9.953125 -5.078125 Z M 8.265625 -5.078125 C 8.265625 -5.546875 8.21875 -5.988281 8.125 -6.40625 C 8.03125 -6.832031 7.878906 -7.207031 7.671875 -7.53125 C 7.460938 -7.851562 7.191406 -8.109375 6.859375 -8.296875 C 6.523438 -8.484375 6.113281 -8.578125 5.625 -8.578125 C 5.332031 -8.578125 5.0625 -8.535156 4.8125 -8.453125 C 4.570312 -8.378906 4.359375 -8.273438 4.171875 -8.140625 C 3.984375 -8.015625 3.8125 -7.863281 3.65625 -7.6875 C 3.507812 -7.507812 3.382812 -7.316406 3.28125 -7.109375 L 3.28125 -2.921875 C 3.394531 -2.703125 3.523438 -2.503906 3.671875 -2.328125 C 3.816406 -2.148438 3.984375 -1.992188 4.171875 -1.859375 C 4.367188 -1.722656 4.585938 -1.617188 4.828125 -1.546875 C 5.078125 -1.472656 5.347656 -1.4375 5.640625 -1.4375 C 6.109375 -1.4375 6.503906 -1.523438 6.828125 -1.703125 C 7.160156 -1.890625 7.429688 -2.140625 7.640625 -2.453125 C 7.847656 -2.773438 8.003906 -3.144531 8.109375 -3.5625 C 8.210938 -3.976562 8.265625 -4.421875 8.265625 -4.890625 Z M 8.265625 -5.078125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 1.109375 -5.09375 C 1.109375 -5.789062 1.210938 -6.4375 1.421875 -7.03125 C 1.628906 -7.625 1.925781 -8.140625 2.3125 -8.578125 C 2.695312 -9.023438 3.164062 -9.375 3.71875 -9.625 C 4.269531 -9.875 4.894531 -10 5.59375 -10 C 6.289062 -10 6.914062 -9.875 7.46875 -9.625 C 8.03125 -9.375 8.503906 -9.023438 8.890625 -8.578125 C 9.273438 -8.140625 9.566406 -7.625 9.765625 -7.03125 C 9.972656 -6.4375 10.078125 -5.789062 10.078125 -5.09375 L 10.078125 -4.890625 C 10.078125 -4.191406 9.972656 -3.546875 9.765625 -2.953125 C 9.566406 -2.367188 9.273438 -1.851562 8.890625 -1.40625 C 8.503906 -0.96875 8.03125 -0.625 7.46875 -0.375 C 6.914062 -0.125 6.296875 0 5.609375 0 C 4.910156 0 4.28125 -0.125 3.71875 -0.375 C 3.164062 -0.625 2.695312 -0.96875 2.3125 -1.40625 C 1.925781 -1.851562 1.628906 -2.367188 1.421875 -2.953125 C 1.210938 -3.546875 1.109375 -4.191406 1.109375 -4.890625 Z M 2.796875 -4.890625 C 2.796875 -4.421875 2.851562 -3.972656 2.96875 -3.546875 C 3.082031 -3.117188 3.253906 -2.742188 3.484375 -2.421875 C 3.722656 -2.097656 4.019531 -1.84375 4.375 -1.65625 C 4.726562 -1.46875 5.140625 -1.375 5.609375 -1.375 C 6.066406 -1.375 6.46875 -1.46875 6.8125 -1.65625 C 7.164062 -1.84375 7.457031 -2.097656 7.6875 -2.421875 C 7.925781 -2.742188 8.101562 -3.117188 8.21875 -3.546875 C 8.332031 -3.972656 8.390625 -4.421875 8.390625 -4.890625 L 8.390625 -5.09375 C 8.390625 -5.5625 8.332031 -6.007812 8.21875 -6.4375 C 8.101562 -6.863281 7.925781 -7.238281 7.6875 -7.5625 C 7.457031 -7.882812 7.164062 -8.140625 6.8125 -8.328125 C 6.46875 -8.523438 6.0625 -8.625 5.59375 -8.625 C 5.125 -8.625 4.710938 -8.523438 4.359375 -8.328125 C 4.015625 -8.140625 3.722656 -7.882812 3.484375 -7.5625 C 3.253906 -7.238281 3.082031 -6.863281 2.96875 -6.4375 C 2.851562 -6.007812 2.796875 -5.5625 2.796875 -5.09375 Z M 2.796875 -4.890625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 8.0625 -0.1875 C 8 -0.3125 7.945312 -0.46875 7.90625 -0.65625 C 7.863281 -0.851562 7.835938 -1.054688 7.828125 -1.265625 C 7.648438 -1.085938 7.457031 -0.921875 7.25 -0.765625 C 7.039062 -0.617188 6.8125 -0.488281 6.5625 -0.375 C 6.3125 -0.257812 6.039062 -0.164062 5.75 -0.09375 C 5.46875 -0.03125 5.164062 0 4.84375 0 C 4.320312 0 3.847656 -0.0703125 3.421875 -0.21875 C 3.003906 -0.363281 2.644531 -0.5625 2.34375 -0.8125 C 2.050781 -1.070312 1.820312 -1.375 1.65625 -1.71875 C 1.5 -2.070312 1.421875 -2.445312 1.421875 -2.84375 C 1.421875 -3.375 1.523438 -3.835938 1.734375 -4.234375 C 1.953125 -4.628906 2.257812 -4.957031 2.65625 -5.21875 C 3.050781 -5.476562 3.523438 -5.671875 4.078125 -5.796875 C 4.640625 -5.929688 5.265625 -6 5.953125 -6 L 7.796875 -6 L 7.796875 -6.75 C 7.796875 -7.050781 7.738281 -7.316406 7.625 -7.546875 C 7.519531 -7.773438 7.363281 -7.96875 7.15625 -8.125 C 6.957031 -8.289062 6.710938 -8.414062 6.421875 -8.5 C 6.140625 -8.59375 5.820312 -8.640625 5.46875 -8.640625 C 5.125 -8.640625 4.820312 -8.597656 4.5625 -8.515625 C 4.300781 -8.429688 4.078125 -8.320312 3.890625 -8.1875 C 3.710938 -8.0625 3.570312 -7.90625 3.46875 -7.71875 C 3.363281 -7.53125 3.3125 -7.332031 3.3125 -7.125 L 1.625 -7.125 C 1.625 -7.476562 1.710938 -7.828125 1.890625 -8.171875 C 2.078125 -8.515625 2.335938 -8.816406 2.671875 -9.078125 C 3.015625 -9.347656 3.425781 -9.566406 3.90625 -9.734375 C 4.382812 -9.910156 4.929688 -10 5.546875 -10 C 6.109375 -10 6.628906 -9.929688 7.109375 -9.796875 C 7.585938 -9.660156 8 -9.457031 8.34375 -9.1875 C 8.695312 -8.925781 8.972656 -8.59375 9.171875 -8.1875 C 9.378906 -7.78125 9.484375 -7.304688 9.484375 -6.765625 L 9.484375 -2.296875 C 9.484375 -1.972656 9.515625 -1.628906 9.578125 -1.265625 C 9.640625 -0.910156 9.722656 -0.597656 9.828125 -0.328125 L 9.828125 -0.1875 Z M 5.09375 -1.46875 C 5.414062 -1.46875 5.71875 -1.503906 6 -1.578125 C 6.289062 -1.660156 6.550781 -1.769531 6.78125 -1.90625 C 7.019531 -2.039062 7.222656 -2.191406 7.390625 -2.359375 C 7.566406 -2.535156 7.703125 -2.71875 7.796875 -2.90625 L 7.796875 -4.8125 L 6.234375 -4.8125 C 5.242188 -4.8125 4.472656 -4.671875 3.921875 -4.390625 C 3.378906 -4.109375 3.109375 -3.671875 3.109375 -3.078125 C 3.109375 -2.847656 3.148438 -2.632812 3.234375 -2.4375 C 3.316406 -2.238281 3.4375 -2.066406 3.59375 -1.921875 C 3.757812 -1.773438 3.96875 -1.660156 4.21875 -1.578125 C 4.46875 -1.503906 4.757812 -1.46875 5.09375 -1.46875 Z M 5.09375 -1.46875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-6">
<path style="stroke:none;" d="M 9.90625 -4.890625 C 9.90625 -4.203125 9.820312 -3.5625 9.65625 -2.96875 C 9.488281 -2.375 9.238281 -1.851562 8.90625 -1.40625 C 8.582031 -0.96875 8.175781 -0.625 7.6875 -0.375 C 7.207031 -0.125 6.65625 0 6.03125 0 C 5.4375 0 4.90625 -0.0976562 4.4375 -0.296875 C 3.976562 -0.492188 3.585938 -0.769531 3.265625 -1.125 L 3.265625 4 L 1.578125 4 L 1.578125 -10 L 3.125 -10 L 3.203125 -8.9375 C 3.523438 -9.28125 3.921875 -9.539062 4.390625 -9.71875 C 4.859375 -9.90625 5.398438 -10 6.015625 -10 C 6.640625 -10 7.195312 -9.875 7.6875 -9.625 C 8.175781 -9.382812 8.582031 -9.046875 8.90625 -8.609375 C 9.238281 -8.179688 9.488281 -7.664062 9.65625 -7.0625 C 9.820312 -6.46875 9.90625 -5.804688 9.90625 -5.078125 Z M 8.21875 -5.171875 C 8.21875 -5.648438 8.164062 -6.101562 8.0625 -6.53125 C 7.957031 -6.96875 7.789062 -7.351562 7.5625 -7.6875 C 7.34375 -8.019531 7.0625 -8.28125 6.71875 -8.46875 C 6.382812 -8.664062 5.976562 -8.765625 5.5 -8.765625 C 4.96875 -8.765625 4.515625 -8.640625 4.140625 -8.390625 C 3.773438 -8.140625 3.484375 -7.816406 3.265625 -7.421875 L 3.265625 -2.6875 C 3.484375 -2.300781 3.773438 -1.984375 4.140625 -1.734375 C 4.503906 -1.492188 4.96875 -1.375 5.53125 -1.375 C 6 -1.375 6.398438 -1.472656 6.734375 -1.671875 C 7.078125 -1.867188 7.359375 -2.132812 7.578125 -2.46875 C 7.796875 -2.800781 7.957031 -3.179688 8.0625 -3.609375 C 8.164062 -4.046875 8.21875 -4.503906 8.21875 -4.984375 Z M 8.21875 -5.171875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-7">
<path style="stroke:none;" d="M 1.84375 -10 L 6.890625 -10 L 6.890625 -1.453125 L 10.109375 -1.453125 L 10.109375 0 L 1.84375 0 L 1.84375 -1.453125 L 5.203125 -1.453125 L 5.203125 -8.546875 L 1.84375 -8.546875 Z M 4.984375 -12 C 4.984375 -12.28125 5.066406 -12.515625 5.234375 -12.703125 C 5.398438 -12.898438 5.65625 -13 6 -13 C 6.332031 -13 6.582031 -12.898438 6.75 -12.703125 C 6.925781 -12.515625 7.015625 -12.28125 7.015625 -12 C 7.015625 -11.726562 6.925781 -11.5 6.75 -11.3125 C 6.582031 -11.132812 6.332031 -11.046875 6 -11.046875 C 5.65625 -11.046875 5.398438 -11.132812 5.234375 -11.3125 C 5.066406 -11.5 4.984375 -11.726562 4.984375 -12 Z M 4.984375 -12 "/>
</symbol>
<symbol overflow="visible" id="glyph0-8">
<path style="stroke:none;" d="M 4.515625 -1.265625 C 4.515625 -1.441406 4.546875 -1.609375 4.609375 -1.765625 C 4.671875 -1.921875 4.753906 -2.054688 4.859375 -2.171875 C 4.972656 -2.296875 5.109375 -2.390625 5.265625 -2.453125 C 5.429688 -2.523438 5.625 -2.5625 5.84375 -2.5625 C 6.0625 -2.5625 6.253906 -2.523438 6.421875 -2.453125 C 6.585938 -2.390625 6.726562 -2.296875 6.84375 -2.171875 C 6.957031 -2.054688 7.039062 -1.921875 7.09375 -1.765625 C 7.15625 -1.609375 7.1875 -1.441406 7.1875 -1.265625 C 7.1875 -1.085938 7.15625 -0.921875 7.09375 -0.765625 C 7.039062 -0.609375 6.957031 -0.472656 6.84375 -0.359375 C 6.726562 -0.242188 6.585938 -0.15625 6.421875 -0.09375 C 6.253906 -0.03125 6.0625 0 5.84375 0 C 5.625 0 5.429688 -0.03125 5.265625 -0.09375 C 5.109375 -0.15625 4.972656 -0.242188 4.859375 -0.359375 C 4.753906 -0.472656 4.671875 -0.609375 4.609375 -0.765625 C 4.546875 -0.921875 4.515625 -1.085938 4.515625 -1.265625 Z M 4.515625 -1.265625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-9">
<path style="stroke:none;" d="M 5.9375 0 C 5.25 0 4.613281 -0.113281 4.03125 -0.34375 C 3.445312 -0.582031 2.945312 -0.910156 2.53125 -1.328125 C 2.125 -1.742188 1.804688 -2.238281 1.578125 -2.8125 C 1.347656 -3.382812 1.234375 -4 1.234375 -4.65625 L 1.234375 -5.046875 C 1.234375 -5.828125 1.359375 -6.519531 1.609375 -7.125 C 1.867188 -7.738281 2.207031 -8.257812 2.625 -8.6875 C 3.050781 -9.113281 3.53125 -9.4375 4.0625 -9.65625 C 4.601562 -9.882812 5.15625 -10 5.71875 -10 C 6.4375 -10 7.0625 -9.882812 7.59375 -9.65625 C 8.125 -9.425781 8.566406 -9.101562 8.921875 -8.6875 C 9.273438 -8.28125 9.535156 -7.796875 9.703125 -7.234375 C 9.878906 -6.679688 9.96875 -6.082031 9.96875 -5.4375 L 9.96875 -4.71875 L 2.921875 -4.71875 C 2.929688 -4.257812 3.015625 -3.828125 3.171875 -3.421875 C 3.328125 -3.015625 3.539062 -2.660156 3.8125 -2.359375 C 4.082031 -2.054688 4.40625 -1.816406 4.78125 -1.640625 C 5.164062 -1.460938 5.582031 -1.375 6.03125 -1.375 C 6.632812 -1.375 7.171875 -1.5 7.640625 -1.75 C 8.109375 -2.007812 8.5 -2.34375 8.8125 -2.75 L 9.84375 -1.921875 C 9.675781 -1.671875 9.46875 -1.425781 9.21875 -1.1875 C 8.976562 -0.957031 8.695312 -0.753906 8.375 -0.578125 C 8.050781 -0.410156 7.6875 -0.269531 7.28125 -0.15625 C 6.875 -0.0507812 6.425781 0 5.9375 0 Z M 5.71875 -8.625 C 5.382812 -8.625 5.0625 -8.566406 4.75 -8.453125 C 4.445312 -8.335938 4.175781 -8.171875 3.9375 -7.953125 C 3.695312 -7.742188 3.492188 -7.484375 3.328125 -7.171875 C 3.160156 -6.859375 3.039062 -6.5 2.96875 -6.09375 L 8.28125 -6.09375 L 8.28125 -6.203125 C 8.257812 -6.492188 8.195312 -6.785156 8.09375 -7.078125 C 7.988281 -7.367188 7.832031 -7.628906 7.625 -7.859375 C 7.414062 -8.085938 7.15625 -8.269531 6.84375 -8.40625 C 6.53125 -8.550781 6.15625 -8.625 5.71875 -8.625 Z M 5.71875 -8.625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-10">
<path style="stroke:none;" d="M 5.65625 -6.375 L 8.296875 -10 L 10.28125 -10 L 6.59375 -5.0625 L 10.375 0 L 8.421875 0 L 5.703125 -3.8125 L 2.96875 0 L 1 0 L 4.78125 -5.0625 L 1.109375 -10 L 3.046875 -10 Z M 5.65625 -6.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-11">
<path style="stroke:none;" d="M 3.09375 -10 L 3.21875 -8.390625 C 3.570312 -8.898438 4.007812 -9.296875 4.53125 -9.578125 C 5.0625 -9.859375 5.648438 -10 6.296875 -10 C 6.804688 -10 7.269531 -9.925781 7.6875 -9.78125 C 8.113281 -9.632812 8.472656 -9.40625 8.765625 -9.09375 C 9.066406 -8.789062 9.296875 -8.398438 9.453125 -7.921875 C 9.617188 -7.453125 9.703125 -6.890625 9.703125 -6.234375 L 9.703125 0 L 8.015625 0 L 8.015625 -6.21875 C 8.015625 -6.644531 7.96875 -7.007812 7.875 -7.3125 C 7.78125 -7.625 7.632812 -7.875 7.4375 -8.0625 C 7.25 -8.25 7.015625 -8.382812 6.734375 -8.46875 C 6.460938 -8.550781 6.148438 -8.59375 5.796875 -8.59375 C 5.222656 -8.59375 4.722656 -8.453125 4.296875 -8.171875 C 3.867188 -7.890625 3.523438 -7.519531 3.265625 -7.0625 L 3.265625 0 L 1.59375 0 L 1.59375 -10 Z M 3.09375 -10 "/>
</symbol>
<symbol overflow="visible" id="glyph0-12">
<path style="stroke:none;" d="M 8.140625 -2.765625 C 8.140625 -2.960938 8.097656 -3.140625 8.015625 -3.296875 C 7.941406 -3.453125 7.8125 -3.59375 7.625 -3.71875 C 7.4375 -3.84375 7.1875 -3.960938 6.875 -4.078125 C 6.5625 -4.191406 6.175781 -4.289062 5.71875 -4.375 C 5.15625 -4.488281 4.640625 -4.625 4.171875 -4.78125 C 3.703125 -4.945312 3.300781 -5.140625 2.96875 -5.359375 C 2.644531 -5.578125 2.390625 -5.835938 2.203125 -6.140625 C 2.023438 -6.441406 1.9375 -6.789062 1.9375 -7.1875 C 1.9375 -7.570312 2.03125 -7.9375 2.21875 -8.28125 C 2.40625 -8.625 2.664062 -8.921875 3 -9.171875 C 3.34375 -9.429688 3.75 -9.632812 4.21875 -9.78125 C 4.695312 -9.925781 5.21875 -10 5.78125 -10 C 6.382812 -10 6.929688 -9.921875 7.421875 -9.765625 C 7.910156 -9.609375 8.320312 -9.390625 8.65625 -9.109375 C 9 -8.835938 9.265625 -8.519531 9.453125 -8.15625 C 9.640625 -7.789062 9.734375 -7.398438 9.734375 -6.984375 L 8.046875 -6.984375 C 8.046875 -7.179688 7.988281 -7.378906 7.875 -7.578125 C 7.769531 -7.773438 7.617188 -7.953125 7.421875 -8.109375 C 7.222656 -8.265625 6.984375 -8.390625 6.703125 -8.484375 C 6.429688 -8.578125 6.125 -8.625 5.78125 -8.625 C 5.425781 -8.625 5.113281 -8.582031 4.84375 -8.5 C 4.570312 -8.425781 4.34375 -8.320312 4.15625 -8.1875 C 3.976562 -8.0625 3.84375 -7.910156 3.75 -7.734375 C 3.664062 -7.566406 3.625 -7.390625 3.625 -7.203125 C 3.625 -7.015625 3.660156 -6.847656 3.734375 -6.703125 C 3.804688 -6.554688 3.929688 -6.421875 4.109375 -6.296875 C 4.285156 -6.179688 4.523438 -6.078125 4.828125 -5.984375 C 5.128906 -5.890625 5.507812 -5.796875 5.96875 -5.703125 C 6.582031 -5.578125 7.128906 -5.429688 7.609375 -5.265625 C 8.085938 -5.109375 8.488281 -4.914062 8.8125 -4.6875 C 9.144531 -4.457031 9.394531 -4.191406 9.5625 -3.890625 C 9.738281 -3.585938 9.828125 -3.238281 9.828125 -2.84375 C 9.828125 -2.414062 9.726562 -2.023438 9.53125 -1.671875 C 9.332031 -1.328125 9.054688 -1.03125 8.703125 -0.78125 C 8.347656 -0.53125 7.925781 -0.335938 7.4375 -0.203125 C 6.945312 -0.0664062 6.410156 0 5.828125 0 C 5.160156 0 4.5625 -0.0859375 4.03125 -0.265625 C 3.507812 -0.441406 3.066406 -0.675781 2.703125 -0.96875 C 2.347656 -1.257812 2.070312 -1.59375 1.875 -1.96875 C 1.6875 -2.351562 1.59375 -2.75 1.59375 -3.15625 L 3.28125 -3.15625 C 3.300781 -2.820312 3.390625 -2.539062 3.546875 -2.3125 C 3.710938 -2.082031 3.914062 -1.894531 4.15625 -1.75 C 4.394531 -1.613281 4.660156 -1.515625 4.953125 -1.453125 C 5.242188 -1.398438 5.535156 -1.375 5.828125 -1.375 C 6.535156 -1.375 7.09375 -1.5 7.5 -1.75 C 7.914062 -2 8.128906 -2.335938 8.140625 -2.765625 Z M 8.140625 -2.765625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-13">
<path style="stroke:none;" d="M 8.890625 -5.703125 L 3.34375 -5.703125 L 3.34375 -1.421875 L 9.8125 -1.421875 L 9.8125 0 L 1.65625 0 L 1.65625 -13 L 9.734375 -13 L 9.734375 -11.5625 L 3.34375 -11.5625 L 3.34375 -7.109375 L 8.890625 -7.109375 Z M 8.890625 -5.703125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-14">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph0-15">
<path style="stroke:none;" d="M 8.046875 -10 C 8.203125 -10 8.363281 -10 8.53125 -10 C 8.707031 -10 8.875 -9.988281 9.03125 -9.96875 C 9.1875 -9.945312 9.328125 -9.914062 9.453125 -9.875 C 9.585938 -9.84375 9.695312 -9.8125 9.78125 -9.78125 L 9.5625 -8.140625 C 9.226562 -8.210938 8.910156 -8.265625 8.609375 -8.296875 C 8.316406 -8.328125 8.007812 -8.34375 7.6875 -8.34375 C 6.90625 -8.34375 6.269531 -8.164062 5.78125 -7.8125 C 5.289062 -7.457031 4.929688 -6.957031 4.703125 -6.3125 L 4.703125 0 L 3 0 L 3 -10 L 4.609375 -10 L 4.6875 -8.265625 C 5.082031 -8.796875 5.5625 -9.21875 6.125 -9.53125 C 6.6875 -9.84375 7.328125 -10 8.046875 -10 Z M 8.046875 -10 "/>
</symbol>
<symbol overflow="visible" id="glyph0-16">
<path style="stroke:none;" d="M 2.71875 -10 L 7.703125 -10 L 7.703125 0.03125 C 7.703125 0.664062 7.613281 1.226562 7.4375 1.71875 C 7.269531 2.207031 7.019531 2.617188 6.6875 2.953125 C 6.351562 3.296875 5.945312 3.554688 5.46875 3.734375 C 5 3.910156 4.457031 4 3.84375 4 C 3.5 4 3.175781 4 2.875 4 C 2.570312 4 2.253906 3.957031 1.921875 3.875 L 2.046875 2.484375 C 2.148438 2.492188 2.28125 2.507812 2.4375 2.53125 C 2.59375 2.5625 2.75 2.578125 2.90625 2.578125 C 3.070312 2.578125 3.226562 2.578125 3.375 2.578125 C 3.519531 2.578125 3.640625 2.578125 3.734375 2.578125 C 4.046875 2.578125 4.34375 2.535156 4.625 2.453125 C 4.90625 2.367188 5.144531 2.226562 5.34375 2.03125 C 5.550781 1.832031 5.710938 1.570312 5.828125 1.25 C 5.953125 0.925781 6.015625 0.523438 6.015625 0.046875 L 6.015625 -8.546875 L 2.71875 -8.546875 Z M 5.78125 -12.015625 C 5.78125 -12.285156 5.859375 -12.515625 6.015625 -12.703125 C 6.179688 -12.898438 6.4375 -13 6.78125 -13 C 7.125 -13 7.378906 -12.898438 7.546875 -12.703125 C 7.710938 -12.515625 7.796875 -12.285156 7.796875 -12.015625 C 7.796875 -11.742188 7.710938 -11.515625 7.546875 -11.328125 C 7.378906 -11.140625 7.125 -11.046875 6.78125 -11.046875 C 6.4375 -11.046875 6.179688 -11.140625 6.015625 -11.328125 C 5.859375 -11.515625 5.78125 -11.742188 5.78125 -12.015625 Z M 5.78125 -12.015625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-17">
<path style="stroke:none;" d="M 5.796875 -1.375 C 6.097656 -1.375 6.390625 -1.421875 6.671875 -1.515625 C 6.960938 -1.609375 7.21875 -1.738281 7.4375 -1.90625 C 7.664062 -2.070312 7.847656 -2.269531 7.984375 -2.5 C 8.128906 -2.726562 8.203125 -2.972656 8.203125 -3.234375 L 9.796875 -3.234375 C 9.796875 -2.804688 9.679688 -2.394531 9.453125 -2 C 9.234375 -1.613281 8.9375 -1.273438 8.5625 -0.984375 C 8.195312 -0.691406 7.773438 -0.453125 7.296875 -0.265625 C 6.816406 -0.0859375 6.316406 0 5.796875 0 C 5.046875 0 4.390625 -0.128906 3.828125 -0.390625 C 3.265625 -0.648438 2.796875 -1 2.421875 -1.4375 C 2.054688 -1.882812 1.773438 -2.394531 1.578125 -2.96875 C 1.390625 -3.550781 1.296875 -4.164062 1.296875 -4.8125 L 1.296875 -5.1875 C 1.296875 -5.832031 1.390625 -6.441406 1.578125 -7.015625 C 1.773438 -7.597656 2.054688 -8.109375 2.421875 -8.546875 C 2.796875 -8.992188 3.265625 -9.347656 3.828125 -9.609375 C 4.390625 -9.867188 5.046875 -10 5.796875 -10 C 6.378906 -10 6.910156 -9.910156 7.390625 -9.734375 C 7.878906 -9.554688 8.300781 -9.3125 8.65625 -9 C 9.019531 -8.6875 9.300781 -8.3125 9.5 -7.875 C 9.695312 -7.445312 9.796875 -6.988281 9.796875 -6.5 L 8.203125 -6.5 C 8.203125 -6.789062 8.140625 -7.0625 8.015625 -7.3125 C 7.890625 -7.570312 7.71875 -7.800781 7.5 -8 C 7.289062 -8.195312 7.035156 -8.347656 6.734375 -8.453125 C 6.441406 -8.566406 6.128906 -8.625 5.796875 -8.625 C 5.265625 -8.625 4.820312 -8.519531 4.46875 -8.3125 C 4.113281 -8.113281 3.828125 -7.847656 3.609375 -7.515625 C 3.390625 -7.191406 3.234375 -6.828125 3.140625 -6.421875 C 3.046875 -6.015625 3 -5.601562 3 -5.1875 L 3 -4.8125 C 3 -4.394531 3.046875 -3.976562 3.140625 -3.5625 C 3.234375 -3.15625 3.382812 -2.789062 3.59375 -2.46875 C 3.8125 -2.144531 4.097656 -1.878906 4.453125 -1.671875 C 4.816406 -1.472656 5.265625 -1.375 5.796875 -1.375 Z M 5.796875 -1.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-18">
<path style="stroke:none;" d="M 4.109375 0 L 4.109375 -8.703125 L 1.390625 -8.703125 L 1.390625 -10 L 4.109375 -10 L 4.109375 -10.640625 C 4.109375 -11.210938 4.195312 -11.710938 4.375 -12.140625 C 4.5625 -12.578125 4.820312 -12.941406 5.15625 -13.234375 C 5.5 -13.535156 5.90625 -13.757812 6.375 -13.90625 C 6.851562 -14.050781 7.382812 -14.125 7.96875 -14.125 C 8.363281 -14.125 8.75 -14.085938 9.125 -14.015625 C 9.507812 -13.953125 9.90625 -13.867188 10.3125 -13.765625 L 10.109375 -12.421875 C 9.859375 -12.492188 9.566406 -12.554688 9.234375 -12.609375 C 8.910156 -12.660156 8.554688 -12.6875 8.171875 -12.6875 C 7.390625 -12.6875 6.796875 -12.515625 6.390625 -12.171875 C 5.992188 -11.835938 5.796875 -11.316406 5.796875 -10.609375 L 5.796875 -10 L 9.59375 -10 L 9.59375 -8.703125 L 5.796875 -8.703125 L 5.796875 0 Z M 4.109375 0 "/>
</symbol>
<symbol overflow="visible" id="glyph0-19">
<path style="stroke:none;" d="M 2.359375 -10 L 2.40625 -8.90625 C 2.601562 -9.25 2.863281 -9.515625 3.1875 -9.703125 C 3.519531 -9.898438 3.914062 -10 4.375 -10 C 5.28125 -10 5.882812 -9.65625 6.1875 -8.96875 C 6.382812 -9.28125 6.640625 -9.53125 6.953125 -9.71875 C 7.273438 -9.90625 7.664062 -10 8.125 -10 C 8.84375 -10 9.394531 -9.773438 9.78125 -9.328125 C 10.175781 -8.890625 10.375 -8.222656 10.375 -7.328125 L 10.375 0 L 8.765625 0 L 8.765625 -7.359375 C 8.765625 -8.179688 8.382812 -8.59375 7.625 -8.59375 C 7.425781 -8.59375 7.253906 -8.5625 7.109375 -8.5 C 6.960938 -8.445312 6.835938 -8.375 6.734375 -8.28125 C 6.640625 -8.1875 6.566406 -8.078125 6.515625 -7.953125 C 6.460938 -7.835938 6.425781 -7.710938 6.40625 -7.578125 L 6.40625 0 L 4.8125 0 L 4.8125 -7.375 C 4.8125 -7.769531 4.722656 -8.070312 4.546875 -8.28125 C 4.367188 -8.488281 4.085938 -8.59375 3.703125 -8.59375 C 3.347656 -8.59375 3.070312 -8.519531 2.875 -8.375 C 2.6875 -8.238281 2.546875 -8.054688 2.453125 -7.828125 L 2.453125 0 L 0.84375 0 L 0.84375 -10 Z M 2.359375 -10 "/>
</symbol>
<symbol overflow="visible" id="glyph0-20">
<path style="stroke:none;" d="M 4.546875 -4.640625 L 3.296875 -3.453125 L 3.296875 0 L 1.609375 0 L 1.609375 -14 L 3.296875 -14 L 3.296875 -5.515625 L 4.40625 -6.71875 L 7.640625 -10 L 9.6875 -10 L 5.703125 -5.828125 L 10.296875 0 L 8.15625 0 Z M 4.546875 -4.640625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-21">
<path style="stroke:none;" d="M 1.28125 -5.078125 C 1.28125 -5.804688 1.367188 -6.46875 1.546875 -7.0625 C 1.722656 -7.664062 1.976562 -8.179688 2.3125 -8.609375 C 2.65625 -9.046875 3.070312 -9.382812 3.5625 -9.625 C 4.0625 -9.875 4.628906 -10 5.265625 -10 C 5.847656 -10 6.359375 -9.898438 6.796875 -9.703125 C 7.242188 -9.503906 7.632812 -9.21875 7.96875 -8.84375 L 8.046875 -10 L 9.59375 -10 L 9.59375 4 L 7.90625 4 L 7.90625 -1.078125 C 7.570312 -0.734375 7.1875 -0.46875 6.75 -0.28125 C 6.3125 -0.09375 5.8125 0 5.25 0 C 4.613281 0 4.050781 -0.125 3.5625 -0.375 C 3.070312 -0.625 2.65625 -0.96875 2.3125 -1.40625 C 1.976562 -1.851562 1.722656 -2.375 1.546875 -2.96875 C 1.367188 -3.5625 1.28125 -4.203125 1.28125 -4.890625 Z M 2.96875 -4.890625 C 2.96875 -4.421875 3.019531 -3.972656 3.125 -3.546875 C 3.226562 -3.128906 3.390625 -2.757812 3.609375 -2.4375 C 3.828125 -2.113281 4.101562 -1.851562 4.4375 -1.65625 C 4.78125 -1.46875 5.1875 -1.375 5.65625 -1.375 C 6.195312 -1.375 6.648438 -1.492188 7.015625 -1.734375 C 7.378906 -1.972656 7.675781 -2.28125 7.90625 -2.65625 L 7.90625 -7.375 C 7.789062 -7.5625 7.65625 -7.726562 7.5 -7.875 C 7.351562 -8.019531 7.1875 -8.148438 7 -8.265625 C 6.820312 -8.378906 6.617188 -8.46875 6.390625 -8.53125 C 6.171875 -8.59375 5.929688 -8.625 5.671875 -8.625 C 5.203125 -8.625 4.796875 -8.523438 4.453125 -8.328125 C 4.117188 -8.128906 3.835938 -7.867188 3.609375 -7.546875 C 3.390625 -7.222656 3.226562 -6.847656 3.125 -6.421875 C 3.019531 -5.992188 2.96875 -5.546875 2.96875 -5.078125 Z M 2.96875 -4.890625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-22">
<path style="stroke:none;" d="M 7.984375 -1.359375 C 7.660156 -0.867188 7.25 -0.519531 6.75 -0.3125 C 6.257812 -0.101562 5.691406 0 5.046875 0 C 4.535156 0 4.066406 -0.078125 3.640625 -0.234375 C 3.222656 -0.398438 2.863281 -0.648438 2.5625 -0.984375 C 2.269531 -1.328125 2.039062 -1.757812 1.875 -2.28125 C 1.71875 -2.8125 1.640625 -3.441406 1.640625 -4.171875 L 1.640625 -10 L 3.328125 -10 L 3.328125 -4.15625 C 3.328125 -3.625 3.367188 -3.179688 3.453125 -2.828125 C 3.535156 -2.472656 3.660156 -2.191406 3.828125 -1.984375 C 4.003906 -1.773438 4.210938 -1.628906 4.453125 -1.546875 C 4.703125 -1.460938 4.988281 -1.421875 5.3125 -1.421875 C 6 -1.421875 6.550781 -1.554688 6.96875 -1.828125 C 7.394531 -2.109375 7.710938 -2.488281 7.921875 -2.96875 L 7.921875 -10 L 9.625 -10 L 9.625 0 L 8.09375 0 Z M 7.984375 -1.359375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-23">
<path style="stroke:none;" d="M 1.84375 -14 L 6.890625 -14 L 6.890625 -1.453125 L 10.109375 -1.453125 L 10.109375 0 L 1.84375 0 L 1.84375 -1.453125 L 5.203125 -1.453125 L 5.203125 -12.546875 L 1.84375 -12.546875 Z M 1.84375 -14 "/>
</symbol>
<symbol overflow="visible" id="glyph0-24">
<path style="stroke:none;" d="M 3.265625 -8.375 C 3.617188 -8.882812 4.054688 -9.28125 4.578125 -9.5625 C 5.097656 -9.851562 5.675781 -10 6.3125 -10 C 6.832031 -10 7.300781 -9.925781 7.71875 -9.78125 C 8.144531 -9.632812 8.503906 -9.398438 8.796875 -9.078125 C 9.097656 -8.765625 9.328125 -8.367188 9.484375 -7.890625 C 9.648438 -7.410156 9.734375 -6.84375 9.734375 -6.1875 L 9.734375 0 L 8.046875 0 L 8.046875 -6.21875 C 8.046875 -7.019531 7.851562 -7.613281 7.46875 -8 C 7.082031 -8.394531 6.53125 -8.59375 5.8125 -8.59375 C 5.269531 -8.59375 4.78125 -8.457031 4.34375 -8.1875 C 3.90625 -7.925781 3.546875 -7.578125 3.265625 -7.140625 L 3.265625 0 L 1.59375 0 L 1.59375 -14 L 3.265625 -14 Z M 3.265625 -8.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-25">
<path style="stroke:none;" d="M 10.546875 -11.5625 L 6.4375 -11.5625 L 6.4375 0 L 4.796875 0 L 4.796875 -11.5625 L 0.6875 -11.5625 L 0.6875 -13 L 10.546875 -13 Z M 10.546875 -11.5625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-26">
<path style="stroke:none;" d="M 1.5625 0 L 1.5625 -13 L 5.515625 -13 C 6.066406 -13 6.601562 -12.925781 7.125 -12.78125 C 7.644531 -12.644531 8.109375 -12.425781 8.515625 -12.125 C 8.921875 -11.832031 9.242188 -11.457031 9.484375 -11 C 9.734375 -10.539062 9.851562 -9.984375 9.84375 -9.328125 C 9.84375 -8.972656 9.785156 -8.648438 9.671875 -8.359375 C 9.566406 -8.066406 9.421875 -7.800781 9.234375 -7.5625 C 9.054688 -7.320312 8.84375 -7.109375 8.59375 -6.921875 C 8.34375 -6.742188 8.078125 -6.597656 7.796875 -6.484375 C 8.148438 -6.390625 8.472656 -6.25 8.765625 -6.0625 C 9.054688 -5.882812 9.304688 -5.671875 9.515625 -5.421875 C 9.734375 -5.171875 9.898438 -4.890625 10.015625 -4.578125 C 10.140625 -4.265625 10.203125 -3.921875 10.203125 -3.546875 C 10.210938 -2.972656 10.09375 -2.460938 9.84375 -2.015625 C 9.601562 -1.578125 9.28125 -1.207031 8.875 -0.90625 C 8.46875 -0.613281 8 -0.390625 7.46875 -0.234375 C 6.9375 -0.078125 6.382812 0 5.8125 0 Z M 3.265625 -5.703125 L 3.265625 -1.421875 L 5.859375 -1.421875 C 6.210938 -1.421875 6.546875 -1.46875 6.859375 -1.5625 C 7.179688 -1.664062 7.460938 -1.804688 7.703125 -1.984375 C 7.941406 -2.171875 8.132812 -2.394531 8.28125 -2.65625 C 8.425781 -2.914062 8.5 -3.21875 8.5 -3.5625 C 8.5 -3.90625 8.429688 -4.207031 8.296875 -4.46875 C 8.171875 -4.726562 7.992188 -4.945312 7.765625 -5.125 C 7.535156 -5.3125 7.265625 -5.453125 6.953125 -5.546875 C 6.640625 -5.648438 6.304688 -5.703125 5.953125 -5.703125 Z M 3.265625 -7.109375 L 5.609375 -7.109375 C 5.929688 -7.109375 6.242188 -7.15625 6.546875 -7.25 C 6.847656 -7.351562 7.117188 -7.5 7.359375 -7.6875 C 7.597656 -7.882812 7.789062 -8.117188 7.9375 -8.390625 C 8.082031 -8.671875 8.15625 -8.992188 8.15625 -9.359375 C 8.15625 -9.742188 8.082031 -10.078125 7.9375 -10.359375 C 7.789062 -10.640625 7.597656 -10.867188 7.359375 -11.046875 C 7.117188 -11.222656 6.84375 -11.351562 6.53125 -11.4375 C 6.21875 -11.519531 5.898438 -11.5625 5.578125 -11.5625 L 3.265625 -11.5625 Z M 3.265625 -7.109375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-27">
<path style="stroke:none;" d="M 7.921875 -3.6875 L 3.484375 -3.6875 L 2.421875 0 L 0.734375 0 L 5.03125 -13 L 6.4375 -13 L 10.65625 0 L 8.96875 0 Z M 3.953125 -5.125 L 7.46875 -5.125 L 5.71875 -10.546875 Z M 3.953125 -5.125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-28">
<path style="stroke:none;" d="M 3.421875 -5.71875 L 3.421875 0 L 1.734375 0 L 1.734375 -13 L 6.046875 -13 C 6.640625 -13 7.203125 -12.914062 7.734375 -12.75 C 8.265625 -12.59375 8.726562 -12.359375 9.125 -12.046875 C 9.53125 -11.742188 9.847656 -11.363281 10.078125 -10.90625 C 10.316406 -10.457031 10.4375 -9.941406 10.4375 -9.359375 C 10.4375 -8.773438 10.316406 -8.253906 10.078125 -7.796875 C 9.847656 -7.347656 9.53125 -6.96875 9.125 -6.65625 C 8.726562 -6.351562 8.265625 -6.117188 7.734375 -5.953125 C 7.203125 -5.796875 6.640625 -5.71875 6.046875 -5.71875 Z M 3.421875 -7.09375 L 6.046875 -7.09375 C 6.429688 -7.09375 6.785156 -7.144531 7.109375 -7.25 C 7.441406 -7.351562 7.726562 -7.5 7.96875 -7.6875 C 8.21875 -7.882812 8.410156 -8.117188 8.546875 -8.390625 C 8.679688 -8.660156 8.75 -8.976562 8.75 -9.34375 C 8.75 -9.6875 8.679688 -10 8.546875 -10.28125 C 8.410156 -10.570312 8.222656 -10.816406 7.984375 -11.015625 C 7.742188 -11.210938 7.457031 -11.363281 7.125 -11.46875 C 6.789062 -11.570312 6.429688 -11.625 6.046875 -11.625 L 3.421875 -11.625 Z M 3.421875 -7.09375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-29">
<path style="stroke:none;" d="M 1.59375 -13 L 9.609375 -13 L 9.609375 -11.53125 L 6.421875 -11.53125 L 6.421875 -1.453125 L 9.609375 -1.453125 L 9.609375 0 L 1.59375 0 L 1.59375 -1.453125 L 4.703125 -1.453125 L 4.703125 -11.53125 L 1.59375 -11.53125 Z M 1.59375 -13 "/>
</symbol>
<symbol overflow="visible" id="glyph0-30">
<path style="stroke:none;" d="M 1.265625 -5.078125 C 1.265625 -5.804688 1.359375 -6.46875 1.546875 -7.0625 C 1.734375 -7.664062 2 -8.179688 2.34375 -8.609375 C 2.6875 -9.046875 3.097656 -9.382812 3.578125 -9.625 C 4.066406 -9.875 4.613281 -10 5.21875 -10 C 5.800781 -10 6.3125 -9.898438 6.75 -9.703125 C 7.195312 -9.503906 7.582031 -9.21875 7.90625 -8.84375 L 7.90625 -14 L 9.59375 -14 L 9.59375 0 L 8.046875 0 L 7.96875 -1.046875 C 7.632812 -0.703125 7.238281 -0.441406 6.78125 -0.265625 C 6.332031 -0.0859375 5.804688 0 5.203125 0 C 4.597656 0 4.054688 -0.125 3.578125 -0.375 C 3.097656 -0.625 2.6875 -0.96875 2.34375 -1.40625 C 2 -1.851562 1.734375 -2.375 1.546875 -2.96875 C 1.359375 -3.5625 1.265625 -4.203125 1.265625 -4.890625 Z M 2.953125 -4.796875 C 2.953125 -4.316406 3.003906 -3.863281 3.109375 -3.4375 C 3.210938 -3.007812 3.367188 -2.628906 3.578125 -2.296875 C 3.796875 -1.972656 4.070312 -1.71875 4.40625 -1.53125 C 4.75 -1.34375 5.148438 -1.25 5.609375 -1.25 C 5.898438 -1.25 6.160156 -1.28125 6.390625 -1.34375 C 6.617188 -1.40625 6.828125 -1.5 7.015625 -1.625 C 7.203125 -1.75 7.367188 -1.894531 7.515625 -2.0625 C 7.660156 -2.238281 7.789062 -2.4375 7.90625 -2.65625 L 7.90625 -7.203125 C 7.6875 -7.597656 7.390625 -7.925781 7.015625 -8.1875 C 6.648438 -8.445312 6.191406 -8.578125 5.640625 -8.578125 C 5.160156 -8.578125 4.75 -8.476562 4.40625 -8.28125 C 4.070312 -8.09375 3.796875 -7.832031 3.578125 -7.5 C 3.367188 -7.164062 3.210938 -6.78125 3.109375 -6.34375 C 3.003906 -5.914062 2.953125 -5.460938 2.953125 -4.984375 Z M 2.953125 -4.796875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-31">
<path style="stroke:none;" d="M 5.453125 -2.453125 L 5.609375 -1.84375 L 5.765625 -2.453125 L 8.53125 -10 L 10.25 -10 L 6.234375 0 L 4.953125 0 L 0.890625 -10 L 2.625 -10 Z M 5.453125 -2.453125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-32">
<path style="stroke:none;" d="M 5.21875 -3.546875 L 5.65625 -2.34375 L 8.65625 -10 L 10.546875 -10 L 5.546875 1.515625 C 5.429688 1.765625 5.28125 2.035156 5.09375 2.328125 C 4.914062 2.617188 4.695312 2.882812 4.4375 3.125 C 4.1875 3.363281 3.890625 3.566406 3.546875 3.734375 C 3.210938 3.910156 2.820312 4 2.375 4 C 2.300781 4 2.210938 4 2.109375 4 C 2.015625 4 1.914062 3.988281 1.8125 3.96875 C 1.71875 3.957031 1.628906 3.941406 1.546875 3.921875 C 1.460938 3.910156 1.394531 3.898438 1.34375 3.890625 L 1.609375 2.5 C 1.648438 2.5 1.707031 2.5 1.78125 2.5 C 1.851562 2.5 1.929688 2.5 2.015625 2.5 C 2.097656 2.5 2.175781 2.5 2.25 2.5 C 2.320312 2.5 2.378906 2.5 2.421875 2.5 C 2.648438 2.5 2.859375 2.429688 3.046875 2.296875 C 3.242188 2.171875 3.414062 2.019531 3.5625 1.84375 C 3.707031 1.675781 3.832031 1.5 3.9375 1.3125 C 4.050781 1.125 4.132812 0.96875 4.1875 0.84375 L 4.875 -0.46875 L 0.625 -10 L 2.5 -10 Z M 5.21875 -3.546875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-33">
<path style="stroke:none;" d="M 5.953125 -13 L 5.765625 -9.65625 L 4.5 -9.65625 L 4.515625 -12.84375 L 4.515625 -14 L 5.953125 -14 Z M 5.953125 -13 "/>
</symbol>
<symbol overflow="visible" id="glyph0-34">
<path style="stroke:none;" d="M 9.78125 1.28125 L 1.40625 1.28125 L 1.40625 -0.09375 L 9.78125 -0.09375 Z M 9.78125 1.28125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-35">
<path style="stroke:none;" d="M 3.078125 -3.625 L 3.28125 -2.1875 L 3.53125 -3.625 L 5.109375 -10 L 6.1875 -10 L 7.765625 -3.625 L 8.015625 -2.046875 L 8.265625 -3.625 L 9.359375 -10 L 10.859375 -10 L 8.765625 0 L 7.4375 0 L 5.890625 -6.125 L 5.640625 -7.6875 L 5.390625 -6.125 L 3.859375 0 L 2.53125 0 L 0.4375 -10 L 1.9375 -10 Z M 3.078125 -3.625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-36">
<path style="stroke:none;" d="M 8.96875 -5.6875 L 3.453125 -5.6875 L 3.453125 0 L 1.734375 0 L 1.734375 -13 L 9.890625 -13 L 9.890625 -11.5625 L 3.453125 -11.5625 L 3.453125 -7.125 L 8.96875 -7.125 Z M 8.96875 -5.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-37">
<path style="stroke:none;" d="M 5.984375 -5.71875 L 3.328125 -5.71875 L 3.328125 0 L 1.65625 0 L 1.65625 -13 L 5.546875 -13 C 6.160156 -13 6.738281 -12.921875 7.28125 -12.765625 C 7.832031 -12.617188 8.3125 -12.394531 8.71875 -12.09375 C 9.132812 -11.789062 9.457031 -11.410156 9.6875 -10.953125 C 9.925781 -10.492188 10.046875 -9.953125 10.046875 -9.328125 C 10.046875 -8.929688 9.984375 -8.566406 9.859375 -8.234375 C 9.734375 -7.898438 9.5625 -7.597656 9.34375 -7.328125 C 9.125 -7.054688 8.863281 -6.816406 8.5625 -6.609375 C 8.257812 -6.398438 7.925781 -6.222656 7.5625 -6.078125 L 10.375 0 L 8.59375 0 Z M 3.328125 -7.09375 L 5.59375 -7.09375 C 5.96875 -7.09375 6.320312 -7.140625 6.65625 -7.234375 C 6.988281 -7.335938 7.28125 -7.484375 7.53125 -7.671875 C 7.78125 -7.867188 7.976562 -8.101562 8.125 -8.375 C 8.269531 -8.65625 8.34375 -8.972656 8.34375 -9.328125 C 8.34375 -9.710938 8.273438 -10.046875 8.140625 -10.328125 C 8.003906 -10.609375 7.8125 -10.84375 7.5625 -11.03125 C 7.3125 -11.226562 7.015625 -11.375 6.671875 -11.46875 C 6.328125 -11.570312 5.953125 -11.625 5.546875 -11.625 L 3.328125 -11.625 Z M 3.328125 -7.09375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-38">
<path style="stroke:none;" d="M 9.90625 0 L 8.3125 0 L 8.3125 -5.703125 L 2.875 -5.703125 L 2.875 0 L 1.28125 0 L 1.28125 -13 L 2.875 -13 L 2.875 -7.109375 L 8.3125 -7.109375 L 8.3125 -13 L 9.90625 -13 Z M 9.90625 0 "/>
</symbol>
<symbol overflow="visible" id="glyph0-39">
<path style="stroke:none;" d="M 4.984375 -1.265625 C 4.984375 -1.441406 5.007812 -1.609375 5.0625 -1.765625 C 5.125 -1.921875 5.207031 -2.054688 5.3125 -2.171875 C 5.425781 -2.296875 5.5625 -2.390625 5.71875 -2.453125 C 5.882812 -2.523438 6.078125 -2.5625 6.296875 -2.5625 C 6.515625 -2.5625 6.707031 -2.523438 6.875 -2.453125 C 7.039062 -2.390625 7.179688 -2.296875 7.296875 -2.171875 C 7.410156 -2.054688 7.492188 -1.921875 7.546875 -1.765625 C 7.609375 -1.609375 7.640625 -1.441406 7.640625 -1.265625 C 7.640625 -1.085938 7.609375 -0.921875 7.546875 -0.765625 C 7.492188 -0.609375 7.410156 -0.472656 7.296875 -0.359375 C 7.179688 -0.242188 7.039062 -0.15625 6.875 -0.09375 C 6.707031 -0.03125 6.515625 0 6.296875 0 C 6.078125 0 5.882812 -0.03125 5.71875 -0.09375 C 5.5625 -0.15625 5.425781 -0.242188 5.3125 -0.359375 C 5.207031 -0.472656 5.125 -0.609375 5.0625 -0.765625 C 5.007812 -0.921875 4.984375 -1.085938 4.984375 -1.265625 Z M 4.984375 -8.6875 C 4.984375 -8.875 5.007812 -9.046875 5.0625 -9.203125 C 5.125 -9.359375 5.207031 -9.492188 5.3125 -9.609375 C 5.425781 -9.734375 5.5625 -9.828125 5.71875 -9.890625 C 5.882812 -9.960938 6.078125 -10 6.296875 -10 C 6.515625 -10 6.707031 -9.960938 6.875 -9.890625 C 7.039062 -9.828125 7.179688 -9.734375 7.296875 -9.609375 C 7.410156 -9.492188 7.492188 -9.359375 7.546875 -9.203125 C 7.609375 -9.046875 7.640625 -8.875 7.640625 -8.6875 C 7.640625 -8.519531 7.609375 -8.359375 7.546875 -8.203125 C 7.492188 -8.046875 7.410156 -7.910156 7.296875 -7.796875 C 7.179688 -7.679688 7.039062 -7.59375 6.875 -7.53125 C 6.707031 -7.46875 6.515625 -7.4375 6.296875 -7.4375 C 6.078125 -7.4375 5.882812 -7.46875 5.71875 -7.53125 C 5.5625 -7.59375 5.425781 -7.679688 5.3125 -7.796875 C 5.207031 -7.910156 5.125 -8.046875 5.0625 -8.203125 C 5.007812 -8.359375 4.984375 -8.519531 4.984375 -8.6875 Z M 4.984375 -8.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-40">
<path style="stroke:none;" d="M 4.890625 -6.09375 L 1.453125 -6.953125 L 1.953125 -8.546875 L 5.28125 -7.171875 L 5.046875 -11 L 6.671875 -11 L 6.40625 -7.125 L 9.71875 -8.484375 L 10.21875 -6.875 L 6.734375 -6.015625 L 9.0625 -3.078125 L 7.734375 -2.078125 L 5.78125 -5.375 L 3.84375 -2.15625 L 2.515625 -3.125 Z M 4.890625 -6.09375 "/>
</symbol>
</g>
</defs>
<g id="surface13039">
<path style="fill:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(40.784314%,71.764706%,13.72549%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1614.798162 243.045716 C 1614.798162 338.045716 1614.798162 338.045716 1614.798162 433.045716 " transform="matrix(1,0,0,1,-1237.298162,-149.045716)"/>
<path style="fill-rule:nonzero;fill:rgb(40.784314%,71.764706%,13.72549%);fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1614.798162 436.045716 L 1622.829412 424.576966 L 1606.766912 424.576966 Z M 1614.798162 436.045716 " transform="matrix(1,0,0,1,-1237.298162,-149.045716)"/>
<path style="fill:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(40.784314%,71.764706%,13.72549%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1614.798162 561.045716 C 1614.798162 619.545716 1395.298162 619.545716 1395.298162 678.045716 " transform="matrix(1,0,0,1,-1237.298162,-149.045716)"/>
<path style="fill-rule:nonzero;fill:rgb(40.784314%,71.764706%,13.72549%);fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1395.298162 681.045716 L 1405.216131 671.16681 L 1389.407537 668.346497 Z M 1395.298162 681.045716 " transform="matrix(1,0,0,1,-1237.298162,-149.045716)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 21 534 L 295 534 L 295 703 L 21 703 Z M 21 534 "/>
<path style="fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(40.784314%,71.764706%,13.72549%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1258.298162 693.045716 L 1258.298162 683.045716 L 1532.298162 683.045716 L 1532.298162 693.045716 " transform="matrix(1,0,0,1,-1237.298162,-149.045716)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="26" y="557"/>
<use xlink:href="#glyph0-2" x="37" y="557"/>
<use xlink:href="#glyph0-3" x="48" y="557"/>
<use xlink:href="#glyph0-4" x="59" y="557"/>
<use xlink:href="#glyph0-1" x="70" y="557"/>
<use xlink:href="#glyph0-5" x="81" y="557"/>
<use xlink:href="#glyph0-6" x="92" y="557"/>
<use xlink:href="#glyph0-7" x="103" y="557"/>
<use xlink:href="#glyph0-8" x="114" y="557"/>
<use xlink:href="#glyph0-9" x="125" y="557"/>
<use xlink:href="#glyph0-10" x="136" y="557"/>
<use xlink:href="#glyph0-1" x="147" y="557"/>
<use xlink:href="#glyph0-9" x="158" y="557"/>
<use xlink:href="#glyph0-11" x="169" y="557"/>
<use xlink:href="#glyph0-12" x="180" y="557"/>
<use xlink:href="#glyph0-7" x="191" y="557"/>
<use xlink:href="#glyph0-4" x="202" y="557"/>
<use xlink:href="#glyph0-11" x="213" y="557"/>
<use xlink:href="#glyph0-12" x="224" y="557"/>
<use xlink:href="#glyph0-8" x="235" y="557"/>
<use xlink:href="#glyph0-5" x="246" y="557"/>
<use xlink:href="#glyph0-6" x="257" y="557"/>
<use xlink:href="#glyph0-7" x="268" y="557"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-13" x="26" y="601.875977"/>
<use xlink:href="#glyph0-10" x="37" y="601.875977"/>
<use xlink:href="#glyph0-1" x="48" y="601.875977"/>
<use xlink:href="#glyph0-9" x="59" y="601.875977"/>
<use xlink:href="#glyph0-11" x="70" y="601.875977"/>
<use xlink:href="#glyph0-12" x="81" y="601.875977"/>
<use xlink:href="#glyph0-7" x="92" y="601.875977"/>
<use xlink:href="#glyph0-4" x="103" y="601.875977"/>
<use xlink:href="#glyph0-11" x="114" y="601.875977"/>
<use xlink:href="#glyph0-12" x="125" y="601.875977"/>
<use xlink:href="#glyph0-14" x="136" y="601.875977"/>
<use xlink:href="#glyph0-6" x="147" y="601.875977"/>
<use xlink:href="#glyph0-15" x="158" y="601.875977"/>
<use xlink:href="#glyph0-4" x="169" y="601.875977"/>
<use xlink:href="#glyph0-16" x="180" y="601.875977"/>
<use xlink:href="#glyph0-9" x="191" y="601.875977"/>
<use xlink:href="#glyph0-17" x="202" y="601.875977"/>
<use xlink:href="#glyph0-1" x="213" y="601.875977"/>
<use xlink:href="#glyph0-14" x="224" y="601.875977"/>
<use xlink:href="#glyph0-18" x="235" y="601.875977"/>
<use xlink:href="#glyph0-4" x="246" y="601.875977"/>
<use xlink:href="#glyph0-15" x="257" y="601.875977"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-19" x="26" y="624.875977"/>
<use xlink:href="#glyph0-5" x="37" y="624.875977"/>
<use xlink:href="#glyph0-20" x="48" y="624.875977"/>
<use xlink:href="#glyph0-9" x="59" y="624.875977"/>
<use xlink:href="#glyph0-14" x="70" y="624.875977"/>
<use xlink:href="#glyph0-15" x="81" y="624.875977"/>
<use xlink:href="#glyph0-9" x="92" y="624.875977"/>
<use xlink:href="#glyph0-21" x="103" y="624.875977"/>
<use xlink:href="#glyph0-22" x="114" y="624.875977"/>
<use xlink:href="#glyph0-9" x="125" y="624.875977"/>
<use xlink:href="#glyph0-12" x="136" y="624.875977"/>
<use xlink:href="#glyph0-1" x="147" y="624.875977"/>
<use xlink:href="#glyph0-12" x="158" y="624.875977"/>
<use xlink:href="#glyph0-14" x="169" y="624.875977"/>
<use xlink:href="#glyph0-19" x="180" y="624.875977"/>
<use xlink:href="#glyph0-4" x="191" y="624.875977"/>
<use xlink:href="#glyph0-15" x="202" y="624.875977"/>
<use xlink:href="#glyph0-9" x="213" y="624.875977"/>
<use xlink:href="#glyph0-14" x="224" y="624.875977"/>
<use xlink:href="#glyph0-23" x="235" y="624.875977"/>
<use xlink:href="#glyph0-4" x="246" y="624.875977"/>
<use xlink:href="#glyph0-4" x="257" y="624.875977"/>
<use xlink:href="#glyph0-20" x="268" y="624.875977"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-23" x="26" y="647.875977"/>
<use xlink:href="#glyph0-7" x="37" y="647.875977"/>
<use xlink:href="#glyph0-20" x="48" y="647.875977"/>
<use xlink:href="#glyph0-9" x="59" y="647.875977"/>
<use xlink:href="#glyph0-14" x="70" y="647.875977"/>
<use xlink:href="#glyph0-7" x="81" y="647.875977"/>
<use xlink:href="#glyph0-11" x="92" y="647.875977"/>
<use xlink:href="#glyph0-14" x="103" y="647.875977"/>
<use xlink:href="#glyph0-1" x="114" y="647.875977"/>
<use xlink:href="#glyph0-24" x="125" y="647.875977"/>
<use xlink:href="#glyph0-9" x="136" y="647.875977"/>
<use xlink:href="#glyph0-14" x="147" y="647.875977"/>
<use xlink:href="#glyph0-25" x="158" y="647.875977"/>
<use xlink:href="#glyph0-9" x="169" y="647.875977"/>
<use xlink:href="#glyph0-23" x="180" y="647.875977"/>
<use xlink:href="#glyph0-9" x="191" y="647.875977"/>
<use xlink:href="#glyph0-2" x="202" y="647.875977"/>
<use xlink:href="#glyph0-15" x="213" y="647.875977"/>
<use xlink:href="#glyph0-5" x="224" y="647.875977"/>
<use xlink:href="#glyph0-19" x="235" y="647.875977"/>
<use xlink:href="#glyph0-14" x="246" y="647.875977"/>
<use xlink:href="#glyph0-26" x="257" y="647.875977"/>
<use xlink:href="#glyph0-4" x="268" y="647.875977"/>
<use xlink:href="#glyph0-1" x="279" y="647.875977"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-27" x="26" y="670.875977"/>
<use xlink:href="#glyph0-28" x="37" y="670.875977"/>
<use xlink:href="#glyph0-29" x="48" y="670.875977"/>
<use xlink:href="#glyph0-14" x="59" y="670.875977"/>
<use xlink:href="#glyph0-5" x="70" y="670.875977"/>
<use xlink:href="#glyph0-11" x="81" y="670.875977"/>
<use xlink:href="#glyph0-30" x="92" y="670.875977"/>
<use xlink:href="#glyph0-14" x="103" y="670.875977"/>
<use xlink:href="#glyph0-2" x="114" y="670.875977"/>
<use xlink:href="#glyph0-7" x="125" y="670.875977"/>
<use xlink:href="#glyph0-31" x="136" y="670.875977"/>
<use xlink:href="#glyph0-9" x="147" y="670.875977"/>
<use xlink:href="#glyph0-14" x="158" y="670.875977"/>
<use xlink:href="#glyph0-4" x="169" y="670.875977"/>
<use xlink:href="#glyph0-6" x="180" y="670.875977"/>
<use xlink:href="#glyph0-6" x="191" y="670.875977"/>
<use xlink:href="#glyph0-4" x="202" y="670.875977"/>
<use xlink:href="#glyph0-15" x="213" y="670.875977"/>
<use xlink:href="#glyph0-1" x="224" y="670.875977"/>
<use xlink:href="#glyph0-22" x="235" y="670.875977"/>
<use xlink:href="#glyph0-11" x="246" y="670.875977"/>
<use xlink:href="#glyph0-7" x="257" y="670.875977"/>
<use xlink:href="#glyph0-1" x="268" y="670.875977"/>
<use xlink:href="#glyph0-32" x="279" y="670.875977"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="26" y="693.875977"/>
<use xlink:href="#glyph0-4" x="37" y="693.875977"/>
<use xlink:href="#glyph0-14" x="48" y="693.875977"/>
<use xlink:href="#glyph0-22" x="59" y="693.875977"/>
<use xlink:href="#glyph0-12" x="70" y="693.875977"/>
<use xlink:href="#glyph0-9" x="81" y="693.875977"/>
<use xlink:href="#glyph0-14" x="92" y="693.875977"/>
<use xlink:href="#glyph0-7" x="103" y="693.875977"/>
<use xlink:href="#glyph0-1" x="114" y="693.875977"/>
<use xlink:href="#glyph0-33" x="125" y="693.875977"/>
<use xlink:href="#glyph0-12" x="136" y="693.875977"/>
<use xlink:href="#glyph0-14" x="147" y="693.875977"/>
<use xlink:href="#glyph0-9" x="158" y="693.875977"/>
<use xlink:href="#glyph0-5" x="169" y="693.875977"/>
<use xlink:href="#glyph0-12" x="180" y="693.875977"/>
<use xlink:href="#glyph0-7" x="191" y="693.875977"/>
<use xlink:href="#glyph0-9" x="202" y="693.875977"/>
<use xlink:href="#glyph0-15" x="213" y="693.875977"/>
</g>
<path style="fill:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(40.784314%,71.764706%,13.72549%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1614.798162 561.045716 C 1614.798162 619.545716 1762.798162 619.545716 1762.798162 678.045716 " transform="matrix(1,0,0,1,-1237.298162,-149.045716)"/>
<path style="fill-rule:nonzero;fill:rgb(40.784314%,71.764706%,13.72549%);fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1762.798162 681.045716 L 1769.399724 668.701966 L 1753.454412 670.619935 Z M 1762.798162 681.045716 " transform="matrix(1,0,0,1,-1237.298162,-149.045716)"/>
<path style="fill:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(40.784314%,71.764706%,13.72549%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1762.798162 829.045716 C 1762.798162 887.545716 1762.798162 887.545716 1762.798162 946.045716 " transform="matrix(1,0,0,1,-1237.298162,-149.045716)"/>
<path style="fill-rule:nonzero;fill:rgb(40.784314%,71.764706%,13.72549%);fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1762.798162 949.045716 L 1770.829412 937.576966 L 1754.766912 937.576966 Z M 1762.798162 949.045716 " transform="matrix(1,0,0,1,-1237.298162,-149.045716)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 317 802 L 734 802 L 734 902 L 317 902 Z M 317 802 "/>
<path style="fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(40.784314%,71.764706%,13.72549%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1554.298162 961.045716 L 1554.298162 951.045716 L 1971.298162 951.045716 L 1971.298162 961.045716 " transform="matrix(1,0,0,1,-1237.298162,-149.045716)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="322" y="825"/>
<use xlink:href="#glyph0-2" x="333" y="825"/>
<use xlink:href="#glyph0-3" x="344" y="825"/>
<use xlink:href="#glyph0-4" x="355" y="825"/>
<use xlink:href="#glyph0-1" x="366" y="825"/>
<use xlink:href="#glyph0-5" x="377" y="825"/>
<use xlink:href="#glyph0-6" x="388" y="825"/>
<use xlink:href="#glyph0-7" x="399" y="825"/>
<use xlink:href="#glyph0-8" x="410" y="825"/>
<use xlink:href="#glyph0-9" x="421" y="825"/>
<use xlink:href="#glyph0-10" x="432" y="825"/>
<use xlink:href="#glyph0-1" x="443" y="825"/>
<use xlink:href="#glyph0-9" x="454" y="825"/>
<use xlink:href="#glyph0-11" x="465" y="825"/>
<use xlink:href="#glyph0-12" x="476" y="825"/>
<use xlink:href="#glyph0-7" x="487" y="825"/>
<use xlink:href="#glyph0-4" x="498" y="825"/>
<use xlink:href="#glyph0-11" x="509" y="825"/>
<use xlink:href="#glyph0-12" x="520" y="825"/>
<use xlink:href="#glyph0-8" x="531" y="825"/>
<use xlink:href="#glyph0-3" x="542" y="825"/>
<use xlink:href="#glyph0-9" x="553" y="825"/>
<use xlink:href="#glyph0-24" x="564" y="825"/>
<use xlink:href="#glyph0-5" x="575" y="825"/>
<use xlink:href="#glyph0-31" x="586" y="825"/>
<use xlink:href="#glyph0-7" x="597" y="825"/>
<use xlink:href="#glyph0-4" x="608" y="825"/>
<use xlink:href="#glyph0-22" x="619" y="825"/>
<use xlink:href="#glyph0-15" x="630" y="825"/>
<use xlink:href="#glyph0-34" x="641" y="825"/>
<use xlink:href="#glyph0-3" x="652" y="825"/>
<use xlink:href="#glyph0-22" x="663" y="825"/>
<use xlink:href="#glyph0-7" x="674" y="825"/>
<use xlink:href="#glyph0-23" x="685" y="825"/>
<use xlink:href="#glyph0-30" x="696" y="825"/>
<use xlink:href="#glyph0-9" x="707" y="825"/>
<use xlink:href="#glyph0-15" x="718" y="825"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-13" x="322" y="869.875977"/>
<use xlink:href="#glyph0-10" x="333" y="869.875977"/>
<use xlink:href="#glyph0-1" x="344" y="869.875977"/>
<use xlink:href="#glyph0-9" x="355" y="869.875977"/>
<use xlink:href="#glyph0-11" x="366" y="869.875977"/>
<use xlink:href="#glyph0-12" x="377" y="869.875977"/>
<use xlink:href="#glyph0-7" x="388" y="869.875977"/>
<use xlink:href="#glyph0-4" x="399" y="869.875977"/>
<use xlink:href="#glyph0-11" x="410" y="869.875977"/>
<use xlink:href="#glyph0-14" x="421" y="869.875977"/>
<use xlink:href="#glyph0-6" x="432" y="869.875977"/>
<use xlink:href="#glyph0-15" x="443" y="869.875977"/>
<use xlink:href="#glyph0-4" x="454" y="869.875977"/>
<use xlink:href="#glyph0-16" x="465" y="869.875977"/>
<use xlink:href="#glyph0-9" x="476" y="869.875977"/>
<use xlink:href="#glyph0-17" x="487" y="869.875977"/>
<use xlink:href="#glyph0-1" x="498" y="869.875977"/>
<use xlink:href="#glyph0-14" x="509" y="869.875977"/>
<use xlink:href="#glyph0-18" x="520" y="869.875977"/>
<use xlink:href="#glyph0-4" x="531" y="869.875977"/>
<use xlink:href="#glyph0-15" x="542" y="869.875977"/>
<use xlink:href="#glyph0-14" x="553" y="869.875977"/>
<use xlink:href="#glyph0-3" x="564" y="869.875977"/>
<use xlink:href="#glyph0-22" x="575" y="869.875977"/>
<use xlink:href="#glyph0-7" x="586" y="869.875977"/>
<use xlink:href="#glyph0-23" x="597" y="869.875977"/>
<use xlink:href="#glyph0-30" x="608" y="869.875977"/>
<use xlink:href="#glyph0-7" x="619" y="869.875977"/>
<use xlink:href="#glyph0-11" x="630" y="869.875977"/>
<use xlink:href="#glyph0-2" x="641" y="869.875977"/>
<use xlink:href="#glyph0-14" x="652" y="869.875977"/>
<use xlink:href="#glyph0-3" x="663" y="869.875977"/>
<use xlink:href="#glyph0-4" x="674" y="869.875977"/>
<use xlink:href="#glyph0-1" x="685" y="869.875977"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="322" y="892.875977"/>
<use xlink:href="#glyph0-9" x="333" y="892.875977"/>
<use xlink:href="#glyph0-24" x="344" y="892.875977"/>
<use xlink:href="#glyph0-5" x="355" y="892.875977"/>
<use xlink:href="#glyph0-31" x="366" y="892.875977"/>
<use xlink:href="#glyph0-7" x="377" y="892.875977"/>
<use xlink:href="#glyph0-4" x="388" y="892.875977"/>
<use xlink:href="#glyph0-22" x="399" y="892.875977"/>
<use xlink:href="#glyph0-15" x="410" y="892.875977"/>
<use xlink:href="#glyph0-14" x="421" y="892.875977"/>
<use xlink:href="#glyph0-31" x="432" y="892.875977"/>
<use xlink:href="#glyph0-7" x="443" y="892.875977"/>
<use xlink:href="#glyph0-5" x="454" y="892.875977"/>
<use xlink:href="#glyph0-14" x="465" y="892.875977"/>
<use xlink:href="#glyph0-12" x="476" y="892.875977"/>
<use xlink:href="#glyph0-6" x="487" y="892.875977"/>
<use xlink:href="#glyph0-9" x="498" y="892.875977"/>
<use xlink:href="#glyph0-17" x="509" y="892.875977"/>
<use xlink:href="#glyph0-7" x="520" y="892.875977"/>
<use xlink:href="#glyph0-5" x="531" y="892.875977"/>
<use xlink:href="#glyph0-23" x="542" y="892.875977"/>
<use xlink:href="#glyph0-14" x="553" y="892.875977"/>
<use xlink:href="#glyph0-30" x="564" y="892.875977"/>
<use xlink:href="#glyph0-12" x="575" y="892.875977"/>
<use xlink:href="#glyph0-23" x="586" y="892.875977"/>
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 383 534 L 668 534 L 668 680 L 383 680 Z M 383 534 "/>
<path style="fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(40.784314%,71.764706%,13.72549%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1620.298162 693.045716 L 1620.298162 683.045716 L 1905.298162 683.045716 L 1905.298162 693.045716 " transform="matrix(1,0,0,1,-1237.298162,-149.045716)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="388" y="557"/>
<use xlink:href="#glyph0-2" x="399" y="557"/>
<use xlink:href="#glyph0-3" x="410" y="557"/>
<use xlink:href="#glyph0-4" x="421" y="557"/>
<use xlink:href="#glyph0-1" x="432" y="557"/>
<use xlink:href="#glyph0-5" x="443" y="557"/>
<use xlink:href="#glyph0-6" x="454" y="557"/>
<use xlink:href="#glyph0-7" x="465" y="557"/>
<use xlink:href="#glyph0-8" x="476" y="557"/>
<use xlink:href="#glyph0-9" x="487" y="557"/>
<use xlink:href="#glyph0-10" x="498" y="557"/>
<use xlink:href="#glyph0-1" x="509" y="557"/>
<use xlink:href="#glyph0-9" x="520" y="557"/>
<use xlink:href="#glyph0-11" x="531" y="557"/>
<use xlink:href="#glyph0-12" x="542" y="557"/>
<use xlink:href="#glyph0-7" x="553" y="557"/>
<use xlink:href="#glyph0-4" x="564" y="557"/>
<use xlink:href="#glyph0-11" x="575" y="557"/>
<use xlink:href="#glyph0-12" x="586" y="557"/>
<use xlink:href="#glyph0-8" x="597" y="557"/>
<use xlink:href="#glyph0-22" x="608" y="557"/>
<use xlink:href="#glyph0-1" x="619" y="557"/>
<use xlink:href="#glyph0-7" x="630" y="557"/>
<use xlink:href="#glyph0-23" x="641" y="557"/>
<use xlink:href="#glyph0-12" x="652" y="557"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-13" x="388" y="601.875977"/>
<use xlink:href="#glyph0-10" x="399" y="601.875977"/>
<use xlink:href="#glyph0-1" x="410" y="601.875977"/>
<use xlink:href="#glyph0-9" x="421" y="601.875977"/>
<use xlink:href="#glyph0-11" x="432" y="601.875977"/>
<use xlink:href="#glyph0-12" x="443" y="601.875977"/>
<use xlink:href="#glyph0-7" x="454" y="601.875977"/>
<use xlink:href="#glyph0-4" x="465" y="601.875977"/>
<use xlink:href="#glyph0-11" x="476" y="601.875977"/>
<use xlink:href="#glyph0-12" x="487" y="601.875977"/>
<use xlink:href="#glyph0-14" x="498" y="601.875977"/>
<use xlink:href="#glyph0-6" x="509" y="601.875977"/>
<use xlink:href="#glyph0-15" x="520" y="601.875977"/>
<use xlink:href="#glyph0-4" x="531" y="601.875977"/>
<use xlink:href="#glyph0-16" x="542" y="601.875977"/>
<use xlink:href="#glyph0-9" x="553" y="601.875977"/>
<use xlink:href="#glyph0-17" x="564" y="601.875977"/>
<use xlink:href="#glyph0-1" x="575" y="601.875977"/>
<use xlink:href="#glyph0-14" x="586" y="601.875977"/>
<use xlink:href="#glyph0-35" x="597" y="601.875977"/>
<use xlink:href="#glyph0-7" x="608" y="601.875977"/>
<use xlink:href="#glyph0-1" x="619" y="601.875977"/>
<use xlink:href="#glyph0-24" x="630" y="601.875977"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-22" x="388" y="624.875977"/>
<use xlink:href="#glyph0-1" x="399" y="624.875977"/>
<use xlink:href="#glyph0-7" x="410" y="624.875977"/>
<use xlink:href="#glyph0-23" x="421" y="624.875977"/>
<use xlink:href="#glyph0-12" x="432" y="624.875977"/>
<use xlink:href="#glyph0-14" x="443" y="624.875977"/>
<use xlink:href="#glyph0-1" x="454" y="624.875977"/>
<use xlink:href="#glyph0-24" x="465" y="624.875977"/>
<use xlink:href="#glyph0-7" x="476" y="624.875977"/>
<use xlink:href="#glyph0-11" x="487" y="624.875977"/>
<use xlink:href="#glyph0-2" x="498" y="624.875977"/>
<use xlink:href="#glyph0-12" x="509" y="624.875977"/>
<use xlink:href="#glyph0-14" x="520" y="624.875977"/>
<use xlink:href="#glyph0-35" x="531" y="624.875977"/>
<use xlink:href="#glyph0-24" x="542" y="624.875977"/>
<use xlink:href="#glyph0-7" x="553" y="624.875977"/>
<use xlink:href="#glyph0-17" x="564" y="624.875977"/>
<use xlink:href="#glyph0-24" x="575" y="624.875977"/>
<use xlink:href="#glyph0-14" x="586" y="624.875977"/>
<use xlink:href="#glyph0-35" x="597" y="624.875977"/>
<use xlink:href="#glyph0-7" x="608" y="624.875977"/>
<use xlink:href="#glyph0-23" x="619" y="624.875977"/>
<use xlink:href="#glyph0-23" x="630" y="624.875977"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-19" x="388" y="647.875977"/>
<use xlink:href="#glyph0-5" x="399" y="647.875977"/>
<use xlink:href="#glyph0-20" x="410" y="647.875977"/>
<use xlink:href="#glyph0-9" x="421" y="647.875977"/>
<use xlink:href="#glyph0-14" x="432" y="647.875977"/>
<use xlink:href="#glyph0-9" x="443" y="647.875977"/>
<use xlink:href="#glyph0-5" x="454" y="647.875977"/>
<use xlink:href="#glyph0-12" x="465" y="647.875977"/>
<use xlink:href="#glyph0-7" x="476" y="647.875977"/>
<use xlink:href="#glyph0-9" x="487" y="647.875977"/>
<use xlink:href="#glyph0-15" x="498" y="647.875977"/>
<use xlink:href="#glyph0-14" x="509" y="647.875977"/>
<use xlink:href="#glyph0-30" x="520" y="647.875977"/>
<use xlink:href="#glyph0-7" x="531" y="647.875977"/>
<use xlink:href="#glyph0-18" x="542" y="647.875977"/>
<use xlink:href="#glyph0-18" x="553" y="647.875977"/>
<use xlink:href="#glyph0-9" x="564" y="647.875977"/>
<use xlink:href="#glyph0-15" x="575" y="647.875977"/>
<use xlink:href="#glyph0-9" x="586" y="647.875977"/>
<use xlink:href="#glyph0-11" x="597" y="647.875977"/>
<use xlink:href="#glyph0-1" x="608" y="647.875977"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="388" y="670.875977"/>
<use xlink:href="#glyph0-6" x="399" y="670.875977"/>
<use xlink:href="#glyph0-9" x="410" y="670.875977"/>
<use xlink:href="#glyph0-15" x="421" y="670.875977"/>
<use xlink:href="#glyph0-5" x="432" y="670.875977"/>
<use xlink:href="#glyph0-1" x="443" y="670.875977"/>
<use xlink:href="#glyph0-7" x="454" y="670.875977"/>
<use xlink:href="#glyph0-4" x="465" y="670.875977"/>
<use xlink:href="#glyph0-11" x="476" y="670.875977"/>
<use xlink:href="#glyph0-12" x="487" y="670.875977"/>
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 185.5 289 L 569.5 289 L 569.5 412 L 185.5 412 Z M 185.5 289 "/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-25" x="190.5" y="312"/>
<use xlink:href="#glyph0-9" x="201.5" y="312"/>
<use xlink:href="#glyph0-23" x="212.5" y="312"/>
<use xlink:href="#glyph0-9" x="223.5" y="312"/>
<use xlink:href="#glyph0-2" x="234.5" y="312"/>
<use xlink:href="#glyph0-15" x="245.5" y="312"/>
<use xlink:href="#glyph0-5" x="256.5" y="312"/>
<use xlink:href="#glyph0-19" x="267.5" y="312"/>
<use xlink:href="#glyph0-26" x="278.5" y="312"/>
<use xlink:href="#glyph0-4" x="289.5" y="312"/>
<use xlink:href="#glyph0-1" x="300.5" y="312"/>
<use xlink:href="#glyph0-27" x="311.5" y="312"/>
<use xlink:href="#glyph0-28" x="322.5" y="312"/>
<use xlink:href="#glyph0-29" x="333.5" y="312"/>
<use xlink:href="#glyph0-14" x="344.5" y="312"/>
<use xlink:href="#glyph0-9" x="355.5" y="312"/>
<use xlink:href="#glyph0-10" x="366.5" y="312"/>
<use xlink:href="#glyph0-1" x="377.5" y="312"/>
<use xlink:href="#glyph0-9" x="388.5" y="312"/>
<use xlink:href="#glyph0-11" x="399.5" y="312"/>
<use xlink:href="#glyph0-12" x="410.5" y="312"/>
<use xlink:href="#glyph0-7" x="421.5" y="312"/>
<use xlink:href="#glyph0-4" x="432.5" y="312"/>
<use xlink:href="#glyph0-11" x="443.5" y="312"/>
<use xlink:href="#glyph0-12" x="454.5" y="312"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-36" x="190.5" y="356.875977"/>
<use xlink:href="#glyph0-5" x="201.5" y="356.875977"/>
<use xlink:href="#glyph0-19" x="212.5" y="356.875977"/>
<use xlink:href="#glyph0-7" x="223.5" y="356.875977"/>
<use xlink:href="#glyph0-23" x="234.5" y="356.875977"/>
<use xlink:href="#glyph0-32" x="245.5" y="356.875977"/>
<use xlink:href="#glyph0-14" x="256.5" y="356.875977"/>
<use xlink:href="#glyph0-4" x="267.5" y="356.875977"/>
<use xlink:href="#glyph0-18" x="278.5" y="356.875977"/>
<use xlink:href="#glyph0-14" x="289.5" y="356.875977"/>
<use xlink:href="#glyph0-6" x="300.5" y="356.875977"/>
<use xlink:href="#glyph0-15" x="311.5" y="356.875977"/>
<use xlink:href="#glyph0-4" x="322.5" y="356.875977"/>
<use xlink:href="#glyph0-16" x="333.5" y="356.875977"/>
<use xlink:href="#glyph0-9" x="344.5" y="356.875977"/>
<use xlink:href="#glyph0-17" x="355.5" y="356.875977"/>
<use xlink:href="#glyph0-1" x="366.5" y="356.875977"/>
<use xlink:href="#glyph0-12" x="377.5" y="356.875977"/>
<use xlink:href="#glyph0-14" x="388.5" y="356.875977"/>
<use xlink:href="#glyph0-35" x="399.5" y="356.875977"/>
<use xlink:href="#glyph0-24" x="410.5" y="356.875977"/>
<use xlink:href="#glyph0-7" x="421.5" y="356.875977"/>
<use xlink:href="#glyph0-17" x="432.5" y="356.875977"/>
<use xlink:href="#glyph0-24" x="443.5" y="356.875977"/>
<use xlink:href="#glyph0-14" x="454.5" y="356.875977"/>
<use xlink:href="#glyph0-5" x="465.5" y="356.875977"/>
<use xlink:href="#glyph0-15" x="476.5" y="356.875977"/>
<use xlink:href="#glyph0-9" x="487.5" y="356.875977"/>
<use xlink:href="#glyph0-14" x="498.5" y="356.875977"/>
<use xlink:href="#glyph0-18" x="509.5" y="356.875977"/>
<use xlink:href="#glyph0-22" x="520.5" y="356.875977"/>
<use xlink:href="#glyph0-23" x="531.5" y="356.875977"/>
<use xlink:href="#glyph0-23" x="542.5" y="356.875977"/>
<use xlink:href="#glyph0-32" x="553.5" y="356.875977"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="190.5" y="379.875977"/>
<use xlink:href="#glyph0-5" x="201.5" y="379.875977"/>
<use xlink:href="#glyph0-12" x="212.5" y="379.875977"/>
<use xlink:href="#glyph0-9" x="223.5" y="379.875977"/>
<use xlink:href="#glyph0-30" x="234.5" y="379.875977"/>
<use xlink:href="#glyph0-14" x="245.5" y="379.875977"/>
<use xlink:href="#glyph0-4" x="256.5" y="379.875977"/>
<use xlink:href="#glyph0-11" x="267.5" y="379.875977"/>
<use xlink:href="#glyph0-14" x="278.5" y="379.875977"/>
<use xlink:href="#glyph0-25" x="289.5" y="379.875977"/>
<use xlink:href="#glyph0-9" x="300.5" y="379.875977"/>
<use xlink:href="#glyph0-23" x="311.5" y="379.875977"/>
<use xlink:href="#glyph0-9" x="322.5" y="379.875977"/>
<use xlink:href="#glyph0-2" x="333.5" y="379.875977"/>
<use xlink:href="#glyph0-15" x="344.5" y="379.875977"/>
<use xlink:href="#glyph0-5" x="355.5" y="379.875977"/>
<use xlink:href="#glyph0-19" x="366.5" y="379.875977"/>
<use xlink:href="#glyph0-26" x="377.5" y="379.875977"/>
<use xlink:href="#glyph0-4" x="388.5" y="379.875977"/>
<use xlink:href="#glyph0-1" x="399.5" y="379.875977"/>
<use xlink:href="#glyph0-27" x="410.5" y="379.875977"/>
<use xlink:href="#glyph0-28" x="421.5" y="379.875977"/>
<use xlink:href="#glyph0-29" x="432.5" y="379.875977"/>
<use xlink:href="#glyph0-14" x="443.5" y="379.875977"/>
<use xlink:href="#glyph0-5" x="454.5" y="379.875977"/>
<use xlink:href="#glyph0-11" x="465.5" y="379.875977"/>
<use xlink:href="#glyph0-30" x="476.5" y="379.875977"/>
<use xlink:href="#glyph0-14" x="487.5" y="379.875977"/>
<use xlink:href="#glyph0-9" x="498.5" y="379.875977"/>
<use xlink:href="#glyph0-10" x="509.5" y="379.875977"/>
<use xlink:href="#glyph0-1" x="520.5" y="379.875977"/>
<use xlink:href="#glyph0-9" x="531.5" y="379.875977"/>
<use xlink:href="#glyph0-11" x="542.5" y="379.875977"/>
<use xlink:href="#glyph0-30" x="553.5" y="379.875977"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="190.5" y="402.875977"/>
<use xlink:href="#glyph0-1" x="201.5" y="402.875977"/>
<use xlink:href="#glyph0-12" x="212.5" y="402.875977"/>
<use xlink:href="#glyph0-14" x="223.5" y="402.875977"/>
<use xlink:href="#glyph0-18" x="234.5" y="402.875977"/>
<use xlink:href="#glyph0-22" x="245.5" y="402.875977"/>
<use xlink:href="#glyph0-11" x="256.5" y="402.875977"/>
<use xlink:href="#glyph0-17" x="267.5" y="402.875977"/>
<use xlink:href="#glyph0-1" x="278.5" y="402.875977"/>
<use xlink:href="#glyph0-7" x="289.5" y="402.875977"/>
<use xlink:href="#glyph0-4" x="300.5" y="402.875977"/>
<use xlink:href="#glyph0-11" x="311.5" y="402.875977"/>
<use xlink:href="#glyph0-5" x="322.5" y="402.875977"/>
<use xlink:href="#glyph0-23" x="333.5" y="402.875977"/>
<use xlink:href="#glyph0-7" x="344.5" y="402.875977"/>
<use xlink:href="#glyph0-1" x="355.5" y="402.875977"/>
<use xlink:href="#glyph0-32" x="366.5" y="402.875977"/>
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(83.137255%,83.137255%,83.137255%);fill-opacity:1;" d="M 152.5 21 L 602.5 21 L 602.5 167 L 152.5 167 Z M 152.5 21 "/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="157.5" y="44"/>
<use xlink:href="#glyph0-2" x="168.5" y="44"/>
<use xlink:href="#glyph0-3" x="179.5" y="44"/>
<use xlink:href="#glyph0-4" x="190.5" y="44"/>
<use xlink:href="#glyph0-1" x="201.5" y="44"/>
<use xlink:href="#glyph0-5" x="212.5" y="44"/>
<use xlink:href="#glyph0-6" x="223.5" y="44"/>
<use xlink:href="#glyph0-7" x="234.5" y="44"/>
<use xlink:href="#glyph0-8" x="245.5" y="44"/>
<use xlink:href="#glyph0-17" x="256.5" y="44"/>
<use xlink:href="#glyph0-4" x="267.5" y="44"/>
<use xlink:href="#glyph0-15" x="278.5" y="44"/>
<use xlink:href="#glyph0-9" x="289.5" y="44"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-37" x="157.5" y="88.875977"/>
<use xlink:href="#glyph0-4" x="168.5" y="88.875977"/>
<use xlink:href="#glyph0-4" x="179.5" y="88.875977"/>
<use xlink:href="#glyph0-1" x="190.5" y="88.875977"/>
<use xlink:href="#glyph0-14" x="201.5" y="88.875977"/>
<use xlink:href="#glyph0-6" x="212.5" y="88.875977"/>
<use xlink:href="#glyph0-15" x="223.5" y="88.875977"/>
<use xlink:href="#glyph0-4" x="234.5" y="88.875977"/>
<use xlink:href="#glyph0-16" x="245.5" y="88.875977"/>
<use xlink:href="#glyph0-9" x="256.5" y="88.875977"/>
<use xlink:href="#glyph0-17" x="267.5" y="88.875977"/>
<use xlink:href="#glyph0-1" x="278.5" y="88.875977"/>
<use xlink:href="#glyph0-14" x="289.5" y="88.875977"/>
<use xlink:href="#glyph0-35" x="300.5" y="88.875977"/>
<use xlink:href="#glyph0-7" x="311.5" y="88.875977"/>
<use xlink:href="#glyph0-1" x="322.5" y="88.875977"/>
<use xlink:href="#glyph0-24" x="333.5" y="88.875977"/>
<use xlink:href="#glyph0-14" x="344.5" y="88.875977"/>
<use xlink:href="#glyph0-27" x="355.5" y="88.875977"/>
<use xlink:href="#glyph0-28" x="366.5" y="88.875977"/>
<use xlink:href="#glyph0-29" x="377.5" y="88.875977"/>
<use xlink:href="#glyph0-8" x="388.5" y="88.875977"/>
<use xlink:href="#glyph0-14" x="399.5" y="88.875977"/>
<use xlink:href="#glyph0-29" x="410.5" y="88.875977"/>
<use xlink:href="#glyph0-1" x="421.5" y="88.875977"/>
<use xlink:href="#glyph0-14" x="432.5" y="88.875977"/>
<use xlink:href="#glyph0-7" x="443.5" y="88.875977"/>
<use xlink:href="#glyph0-12" x="454.5" y="88.875977"/>
<use xlink:href="#glyph0-14" x="465.5" y="88.875977"/>
<use xlink:href="#glyph0-11" x="476.5" y="88.875977"/>
<use xlink:href="#glyph0-4" x="487.5" y="88.875977"/>
<use xlink:href="#glyph0-1" x="498.5" y="88.875977"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-15" x="157.5" y="111.875977"/>
<use xlink:href="#glyph0-9" x="168.5" y="111.875977"/>
<use xlink:href="#glyph0-17" x="179.5" y="111.875977"/>
<use xlink:href="#glyph0-4" x="190.5" y="111.875977"/>
<use xlink:href="#glyph0-19" x="201.5" y="111.875977"/>
<use xlink:href="#glyph0-19" x="212.5" y="111.875977"/>
<use xlink:href="#glyph0-9" x="223.5" y="111.875977"/>
<use xlink:href="#glyph0-11" x="234.5" y="111.875977"/>
<use xlink:href="#glyph0-30" x="245.5" y="111.875977"/>
<use xlink:href="#glyph0-9" x="256.5" y="111.875977"/>
<use xlink:href="#glyph0-30" x="267.5" y="111.875977"/>
<use xlink:href="#glyph0-14" x="278.5" y="111.875977"/>
<use xlink:href="#glyph0-1" x="289.5" y="111.875977"/>
<use xlink:href="#glyph0-4" x="300.5" y="111.875977"/>
<use xlink:href="#glyph0-14" x="311.5" y="111.875977"/>
<use xlink:href="#glyph0-22" x="322.5" y="111.875977"/>
<use xlink:href="#glyph0-12" x="333.5" y="111.875977"/>
<use xlink:href="#glyph0-9" x="344.5" y="111.875977"/>
<use xlink:href="#glyph0-14" x="355.5" y="111.875977"/>
<use xlink:href="#glyph0-7" x="366.5" y="111.875977"/>
<use xlink:href="#glyph0-1" x="377.5" y="111.875977"/>
<use xlink:href="#glyph0-12" x="388.5" y="111.875977"/>
<use xlink:href="#glyph0-14" x="399.5" y="111.875977"/>
<use xlink:href="#glyph0-15" x="410.5" y="111.875977"/>
<use xlink:href="#glyph0-9" x="421.5" y="111.875977"/>
<use xlink:href="#glyph0-21" x="432.5" y="111.875977"/>
<use xlink:href="#glyph0-22" x="443.5" y="111.875977"/>
<use xlink:href="#glyph0-9" x="454.5" y="111.875977"/>
<use xlink:href="#glyph0-12" x="465.5" y="111.875977"/>
<use xlink:href="#glyph0-1" x="476.5" y="111.875977"/>
<use xlink:href="#glyph0-12" x="487.5" y="111.875977"/>
<use xlink:href="#glyph0-14" x="498.5" y="111.875977"/>
<use xlink:href="#glyph0-30" x="509.5" y="111.875977"/>
<use xlink:href="#glyph0-7" x="520.5" y="111.875977"/>
<use xlink:href="#glyph0-15" x="531.5" y="111.875977"/>
<use xlink:href="#glyph0-9" x="542.5" y="111.875977"/>
<use xlink:href="#glyph0-17" x="553.5" y="111.875977"/>
<use xlink:href="#glyph0-1" x="564.5" y="111.875977"/>
<use xlink:href="#glyph0-23" x="575.5" y="111.875977"/>
<use xlink:href="#glyph0-32" x="586.5" y="111.875977"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="157.5" y="134.875977"/>
<use xlink:href="#glyph0-11" x="168.5" y="134.875977"/>
<use xlink:href="#glyph0-30" x="179.5" y="134.875977"/>
<use xlink:href="#glyph0-14" x="190.5" y="134.875977"/>
<use xlink:href="#glyph0-3" x="201.5" y="134.875977"/>
<use xlink:href="#glyph0-9" x="212.5" y="134.875977"/>
<use xlink:href="#glyph0-1" x="223.5" y="134.875977"/>
<use xlink:href="#glyph0-1" x="234.5" y="134.875977"/>
<use xlink:href="#glyph0-9" x="245.5" y="134.875977"/>
<use xlink:href="#glyph0-15" x="256.5" y="134.875977"/>
<use xlink:href="#glyph0-14" x="267.5" y="134.875977"/>
<use xlink:href="#glyph0-1" x="278.5" y="134.875977"/>
<use xlink:href="#glyph0-4" x="289.5" y="134.875977"/>
<use xlink:href="#glyph0-14" x="300.5" y="134.875977"/>
<use xlink:href="#glyph0-22" x="311.5" y="134.875977"/>
<use xlink:href="#glyph0-12" x="322.5" y="134.875977"/>
<use xlink:href="#glyph0-9" x="333.5" y="134.875977"/>
<use xlink:href="#glyph0-14" x="344.5" y="134.875977"/>
<use xlink:href="#glyph0-5" x="355.5" y="134.875977"/>
<use xlink:href="#glyph0-1" x="366.5" y="134.875977"/>
<use xlink:href="#glyph0-14" x="377.5" y="134.875977"/>
<use xlink:href="#glyph0-23" x="388.5" y="134.875977"/>
<use xlink:href="#glyph0-9" x="399.5" y="134.875977"/>
<use xlink:href="#glyph0-5" x="410.5" y="134.875977"/>
<use xlink:href="#glyph0-12" x="421.5" y="134.875977"/>
<use xlink:href="#glyph0-1" x="432.5" y="134.875977"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="157.5" y="157.875977"/>
<use xlink:href="#glyph0-2" x="168.5" y="157.875977"/>
<use xlink:href="#glyph0-3" x="179.5" y="157.875977"/>
<use xlink:href="#glyph0-4" x="190.5" y="157.875977"/>
<use xlink:href="#glyph0-1" x="201.5" y="157.875977"/>
<use xlink:href="#glyph0-5" x="212.5" y="157.875977"/>
<use xlink:href="#glyph0-6" x="223.5" y="157.875977"/>
<use xlink:href="#glyph0-7" x="234.5" y="157.875977"/>
<use xlink:href="#glyph0-8" x="245.5" y="157.875977"/>
<use xlink:href="#glyph0-9" x="256.5" y="157.875977"/>
<use xlink:href="#glyph0-10" x="267.5" y="157.875977"/>
<use xlink:href="#glyph0-1" x="278.5" y="157.875977"/>
<use xlink:href="#glyph0-9" x="289.5" y="157.875977"/>
<use xlink:href="#glyph0-11" x="300.5" y="157.875977"/>
<use xlink:href="#glyph0-12" x="311.5" y="157.875977"/>
<use xlink:href="#glyph0-7" x="322.5" y="157.875977"/>
<use xlink:href="#glyph0-4" x="333.5" y="157.875977"/>
<use xlink:href="#glyph0-11" x="344.5" y="157.875977"/>
<use xlink:href="#glyph0-12" x="355.5" y="157.875977"/>
<use xlink:href="#glyph0-8" x="366.5" y="157.875977"/>
<use xlink:href="#glyph0-5" x="377.5" y="157.875977"/>
<use xlink:href="#glyph0-6" x="388.5" y="157.875977"/>
<use xlink:href="#glyph0-7" x="399.5" y="157.875977"/>
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(83.137255%,83.137255%,83.137255%);fill-opacity:1;" d="M 165.546875 1017.5625 L 604.546875 1017.5625 L 604.546875 1231.5625 L 165.546875 1231.5625 Z M 165.546875 1017.5625 "/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="170.546875" y="1040.5625"/>
<use xlink:href="#glyph0-2" x="181.546875" y="1040.5625"/>
<use xlink:href="#glyph0-3" x="192.546875" y="1040.5625"/>
<use xlink:href="#glyph0-4" x="203.546875" y="1040.5625"/>
<use xlink:href="#glyph0-1" x="214.546875" y="1040.5625"/>
<use xlink:href="#glyph0-5" x="225.546875" y="1040.5625"/>
<use xlink:href="#glyph0-6" x="236.546875" y="1040.5625"/>
<use xlink:href="#glyph0-7" x="247.546875" y="1040.5625"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-38" x="170.546875" y="1085.438477"/>
<use xlink:href="#glyph0-9" x="181.546875" y="1085.438477"/>
<use xlink:href="#glyph0-15" x="192.546875" y="1085.438477"/>
<use xlink:href="#glyph0-9" x="203.546875" y="1085.438477"/>
<use xlink:href="#glyph0-14" x="214.546875" y="1085.438477"/>
<use xlink:href="#glyph0-7" x="225.546875" y="1085.438477"/>
<use xlink:href="#glyph0-11" x="236.546875" y="1085.438477"/>
<use xlink:href="#glyph0-17" x="247.546875" y="1085.438477"/>
<use xlink:href="#glyph0-23" x="258.546875" y="1085.438477"/>
<use xlink:href="#glyph0-22" x="269.546875" y="1085.438477"/>
<use xlink:href="#glyph0-30" x="280.546875" y="1085.438477"/>
<use xlink:href="#glyph0-9" x="291.546875" y="1085.438477"/>
<use xlink:href="#glyph0-30" x="302.546875" y="1085.438477"/>
<use xlink:href="#glyph0-14" x="313.546875" y="1085.438477"/>
<use xlink:href="#glyph0-5" x="324.546875" y="1085.438477"/>
<use xlink:href="#glyph0-23" x="335.546875" y="1085.438477"/>
<use xlink:href="#glyph0-23" x="346.546875" y="1085.438477"/>
<use xlink:href="#glyph0-14" x="357.546875" y="1085.438477"/>
<use xlink:href="#glyph0-5" x="368.546875" y="1085.438477"/>
<use xlink:href="#glyph0-31" x="379.546875" y="1085.438477"/>
<use xlink:href="#glyph0-5" x="390.546875" y="1085.438477"/>
<use xlink:href="#glyph0-7" x="401.546875" y="1085.438477"/>
<use xlink:href="#glyph0-23" x="412.546875" y="1085.438477"/>
<use xlink:href="#glyph0-5" x="423.546875" y="1085.438477"/>
<use xlink:href="#glyph0-3" x="434.546875" y="1085.438477"/>
<use xlink:href="#glyph0-23" x="445.546875" y="1085.438477"/>
<use xlink:href="#glyph0-9" x="456.546875" y="1085.438477"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-25" x="170.546875" y="1108.438477"/>
<use xlink:href="#glyph0-9" x="181.546875" y="1108.438477"/>
<use xlink:href="#glyph0-23" x="192.546875" y="1108.438477"/>
<use xlink:href="#glyph0-9" x="203.546875" y="1108.438477"/>
<use xlink:href="#glyph0-2" x="214.546875" y="1108.438477"/>
<use xlink:href="#glyph0-15" x="225.546875" y="1108.438477"/>
<use xlink:href="#glyph0-5" x="236.546875" y="1108.438477"/>
<use xlink:href="#glyph0-19" x="247.546875" y="1108.438477"/>
<use xlink:href="#glyph0-26" x="258.546875" y="1108.438477"/>
<use xlink:href="#glyph0-4" x="269.546875" y="1108.438477"/>
<use xlink:href="#glyph0-1" x="280.546875" y="1108.438477"/>
<use xlink:href="#glyph0-27" x="291.546875" y="1108.438477"/>
<use xlink:href="#glyph0-28" x="302.546875" y="1108.438477"/>
<use xlink:href="#glyph0-29" x="313.546875" y="1108.438477"/>
<use xlink:href="#glyph0-14" x="324.546875" y="1108.438477"/>
<use xlink:href="#glyph0-23" x="335.546875" y="1108.438477"/>
<use xlink:href="#glyph0-7" x="346.546875" y="1108.438477"/>
<use xlink:href="#glyph0-3" x="357.546875" y="1108.438477"/>
<use xlink:href="#glyph0-15" x="368.546875" y="1108.438477"/>
<use xlink:href="#glyph0-5" x="379.546875" y="1108.438477"/>
<use xlink:href="#glyph0-15" x="390.546875" y="1108.438477"/>
<use xlink:href="#glyph0-7" x="401.546875" y="1108.438477"/>
<use xlink:href="#glyph0-9" x="412.546875" y="1108.438477"/>
<use xlink:href="#glyph0-12" x="423.546875" y="1108.438477"/>
<use xlink:href="#glyph0-39" x="434.546875" y="1108.438477"/>
</g>
<g style="fill:rgb(100%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-40" x="170.546875" y="1153.314453"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-14" x="181.546875" y="1153.314453"/>
<use xlink:href="#glyph0-1" x="192.546875" y="1153.314453"/>
<use xlink:href="#glyph0-2" x="203.546875" y="1153.314453"/>
<use xlink:href="#glyph0-3" x="214.546875" y="1153.314453"/>
<use xlink:href="#glyph0-4" x="225.546875" y="1153.314453"/>
<use xlink:href="#glyph0-1" x="236.546875" y="1153.314453"/>
<use xlink:href="#glyph0-5" x="247.546875" y="1153.314453"/>
<use xlink:href="#glyph0-6" x="258.546875" y="1153.314453"/>
<use xlink:href="#glyph0-7" x="269.546875" y="1153.314453"/>
<use xlink:href="#glyph0-8" x="280.546875" y="1153.314453"/>
<use xlink:href="#glyph0-17" x="291.546875" y="1153.314453"/>
<use xlink:href="#glyph0-4" x="302.546875" y="1153.314453"/>
<use xlink:href="#glyph0-15" x="313.546875" y="1153.314453"/>
<use xlink:href="#glyph0-9" x="324.546875" y="1153.314453"/>
</g>
<g style="fill:rgb(100%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-40" x="170.546875" y="1176.314453"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-14" x="181.546875" y="1176.314453"/>
<use xlink:href="#glyph0-1" x="192.546875" y="1176.314453"/>
<use xlink:href="#glyph0-2" x="203.546875" y="1176.314453"/>
<use xlink:href="#glyph0-3" x="214.546875" y="1176.314453"/>
<use xlink:href="#glyph0-4" x="225.546875" y="1176.314453"/>
<use xlink:href="#glyph0-1" x="236.546875" y="1176.314453"/>
<use xlink:href="#glyph0-5" x="247.546875" y="1176.314453"/>
<use xlink:href="#glyph0-6" x="258.546875" y="1176.314453"/>
<use xlink:href="#glyph0-7" x="269.546875" y="1176.314453"/>
<use xlink:href="#glyph0-8" x="280.546875" y="1176.314453"/>
<use xlink:href="#glyph0-9" x="291.546875" y="1176.314453"/>
<use xlink:href="#glyph0-10" x="302.546875" y="1176.314453"/>
<use xlink:href="#glyph0-1" x="313.546875" y="1176.314453"/>
<use xlink:href="#glyph0-9" x="324.546875" y="1176.314453"/>
<use xlink:href="#glyph0-11" x="335.546875" y="1176.314453"/>
<use xlink:href="#glyph0-12" x="346.546875" y="1176.314453"/>
<use xlink:href="#glyph0-7" x="357.546875" y="1176.314453"/>
<use xlink:href="#glyph0-4" x="368.546875" y="1176.314453"/>
<use xlink:href="#glyph0-11" x="379.546875" y="1176.314453"/>
<use xlink:href="#glyph0-12" x="390.546875" y="1176.314453"/>
<use xlink:href="#glyph0-8" x="401.546875" y="1176.314453"/>
<use xlink:href="#glyph0-5" x="412.546875" y="1176.314453"/>
<use xlink:href="#glyph0-6" x="423.546875" y="1176.314453"/>
<use xlink:href="#glyph0-7" x="434.546875" y="1176.314453"/>
</g>
<g style="fill:rgb(100%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-40" x="170.546875" y="1199.314453"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-14" x="181.546875" y="1199.314453"/>
<use xlink:href="#glyph0-1" x="192.546875" y="1199.314453"/>
<use xlink:href="#glyph0-2" x="203.546875" y="1199.314453"/>
<use xlink:href="#glyph0-3" x="214.546875" y="1199.314453"/>
<use xlink:href="#glyph0-4" x="225.546875" y="1199.314453"/>
<use xlink:href="#glyph0-1" x="236.546875" y="1199.314453"/>
<use xlink:href="#glyph0-5" x="247.546875" y="1199.314453"/>
<use xlink:href="#glyph0-6" x="258.546875" y="1199.314453"/>
<use xlink:href="#glyph0-7" x="269.546875" y="1199.314453"/>
<use xlink:href="#glyph0-8" x="280.546875" y="1199.314453"/>
<use xlink:href="#glyph0-9" x="291.546875" y="1199.314453"/>
<use xlink:href="#glyph0-10" x="302.546875" y="1199.314453"/>
<use xlink:href="#glyph0-1" x="313.546875" y="1199.314453"/>
<use xlink:href="#glyph0-9" x="324.546875" y="1199.314453"/>
<use xlink:href="#glyph0-11" x="335.546875" y="1199.314453"/>
<use xlink:href="#glyph0-12" x="346.546875" y="1199.314453"/>
<use xlink:href="#glyph0-7" x="357.546875" y="1199.314453"/>
<use xlink:href="#glyph0-4" x="368.546875" y="1199.314453"/>
<use xlink:href="#glyph0-11" x="379.546875" y="1199.314453"/>
<use xlink:href="#glyph0-12" x="390.546875" y="1199.314453"/>
<use xlink:href="#glyph0-8" x="401.546875" y="1199.314453"/>
<use xlink:href="#glyph0-22" x="412.546875" y="1199.314453"/>
<use xlink:href="#glyph0-1" x="423.546875" y="1199.314453"/>
<use xlink:href="#glyph0-7" x="434.546875" y="1199.314453"/>
<use xlink:href="#glyph0-23" x="445.546875" y="1199.314453"/>
<use xlink:href="#glyph0-12" x="456.546875" y="1199.314453"/>
</g>
<g style="fill:rgb(100%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-40" x="170.546875" y="1222.314453"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-14" x="181.546875" y="1222.314453"/>
<use xlink:href="#glyph0-1" x="192.546875" y="1222.314453"/>
<use xlink:href="#glyph0-2" x="203.546875" y="1222.314453"/>
<use xlink:href="#glyph0-3" x="214.546875" y="1222.314453"/>
<use xlink:href="#glyph0-4" x="225.546875" y="1222.314453"/>
<use xlink:href="#glyph0-1" x="236.546875" y="1222.314453"/>
<use xlink:href="#glyph0-5" x="247.546875" y="1222.314453"/>
<use xlink:href="#glyph0-6" x="258.546875" y="1222.314453"/>
<use xlink:href="#glyph0-7" x="269.546875" y="1222.314453"/>
<use xlink:href="#glyph0-8" x="280.546875" y="1222.314453"/>
<use xlink:href="#glyph0-9" x="291.546875" y="1222.314453"/>
<use xlink:href="#glyph0-10" x="302.546875" y="1222.314453"/>
<use xlink:href="#glyph0-1" x="313.546875" y="1222.314453"/>
<use xlink:href="#glyph0-9" x="324.546875" y="1222.314453"/>
<use xlink:href="#glyph0-11" x="335.546875" y="1222.314453"/>
<use xlink:href="#glyph0-12" x="346.546875" y="1222.314453"/>
<use xlink:href="#glyph0-7" x="357.546875" y="1222.314453"/>
<use xlink:href="#glyph0-4" x="368.546875" y="1222.314453"/>
<use xlink:href="#glyph0-11" x="379.546875" y="1222.314453"/>
<use xlink:href="#glyph0-12" x="390.546875" y="1222.314453"/>
<use xlink:href="#glyph0-8" x="401.546875" y="1222.314453"/>
<use xlink:href="#glyph0-3" x="412.546875" y="1222.314453"/>
<use xlink:href="#glyph0-9" x="423.546875" y="1222.314453"/>
<use xlink:href="#glyph0-24" x="434.546875" y="1222.314453"/>
<use xlink:href="#glyph0-5" x="445.546875" y="1222.314453"/>
<use xlink:href="#glyph0-31" x="456.546875" y="1222.314453"/>
<use xlink:href="#glyph0-7" x="467.546875" y="1222.314453"/>
<use xlink:href="#glyph0-4" x="478.546875" y="1222.314453"/>
<use xlink:href="#glyph0-22" x="489.546875" y="1222.314453"/>
<use xlink:href="#glyph0-15" x="500.546875" y="1222.314453"/>
<use xlink:href="#glyph0-34" x="511.546875" y="1222.314453"/>
<use xlink:href="#glyph0-3" x="522.546875" y="1222.314453"/>
<use xlink:href="#glyph0-22" x="533.546875" y="1222.314453"/>
<use xlink:href="#glyph0-7" x="544.546875" y="1222.314453"/>
<use xlink:href="#glyph0-23" x="555.546875" y="1222.314453"/>
<use xlink:href="#glyph0-30" x="566.546875" y="1222.314453"/>
<use xlink:href="#glyph0-9" x="577.546875" y="1222.314453"/>
<use xlink:href="#glyph0-15" x="588.546875" y="1222.314453"/>
</g>
<path style="fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(46.666667%,46.666667%,46.666667%);stroke-opacity:1;stroke-dasharray:2,8;stroke-miterlimit:10;" d="M 1416.915349 856.045716 C 1450.348943 965.565247 1495.454412 1067.752747 1552.231756 1162.608216 " transform="matrix(1,0,0,1,-1237.298162,-149.045716)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(46.666667%,46.666667%,46.666667%);fill-opacity:1;" d="M 314.933594 1013.5625 L 315.863281 1000.59375 L 303.066406 1008.253906 Z M 314.933594 1013.5625 "/>
<path style="fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(46.666667%,46.666667%,46.666667%);stroke-opacity:1;stroke-dasharray:2,8;stroke-miterlimit:10;" d="M 1721.266912 1055.045716 C 1700.309881 1088.471497 1681.638006 1124.32306 1665.251287 1162.608216 " transform="matrix(1,0,0,1,-1237.298162,-149.045716)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(46.666667%,46.666667%,46.666667%);fill-opacity:1;" d="M 427.953125 1013.5625 L 439 1006.703125 L 425.289062 1000.835938 Z M 427.953125 1013.5625 "/>
<path style="fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(46.666667%,46.666667%,46.666667%);stroke-opacity:1;stroke-dasharray:2,8;stroke-miterlimit:10;" d="M 1616.298162 778.463685 C 1460.794256 807.373841 1439.220037 935.420716 1551.571599 1162.608216 " transform="matrix(1,0,0,1,-1237.298162,-149.045716)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(46.666667%,46.666667%,46.666667%);fill-opacity:1;" d="M 314.273438 1013.5625 L 316.238281 1000.710938 L 302.871094 1007.320312 Z M 314.273438 1013.5625 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 89 KiB

View File

@@ -1,18 +1,20 @@
/*
* This settings file was generated by the Gradle 'init' task.
*
* The settings file is used to specify which projects to include in your build.
* In a single project build this file can be empty or even removed.
*
* Detailed information about configuring a multi-project build in Gradle can be found
* in the user guide at https://docs.gradle.org/3.4.1/userguide/multi_project_builds.html
*/
pluginManagement {
resolutionStrategy {
eachPlugin {
if (requested.id.id == "org.jetbrains.dokka") {
useModule("org.jetbrains.dokka:dokka-gradle-plugin:${requested.version}")
}
}
}
repositories {
gradlePluginPortal()
jcenter()
}
}
/*
// To declare projects as part of a multi-project build use the 'include' method
include 'shared'
include 'api'
include 'services:webservice'
*/
rootProject.name = 'TelegramBotAPI'
include ":tgbotapi.core"
include ":tgbotapi.extensions.api"
include ":tgbotapi.extensions.utils"
include ":tgbotapi.extensions.behaviour_builder"
include ":tgbotapi"
include ":docs"

View File

@@ -1,16 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageEntity.MessageEntity
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
interface Captioned {
val caption: String?
}
interface CaptionedOutput : Captioned {
val parseMode: ParseMode?
}
interface CaptionedInput : Captioned {
val captionEntities: List<MessageEntity>
}

View File

@@ -1,8 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts
interface CommonVenueData : Titled {
override val title: String
val address: String
val foursquareId: String?
val foursquareType: String? // TODO:: Rewrite with enum or interface
}

View File

@@ -1,8 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts
interface Livable {
/**
* Period in SECONDS
*/
val livePeriod: Int?
}

View File

@@ -1,5 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts
interface MimeTyped {
val mimeType: String? // TODO::replace by something like enum or interface
}

View File

@@ -1,5 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts
interface Performerable {
val performer: String?
}

View File

@@ -1,5 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts
interface Titled {
val title: String?
}

View File

@@ -1,7 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
@Deprecated(
"Deprecated for the reason of creating of more obvious type interface",
ReplaceWith("InlineMessageAction", "com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.InlineMessageAction")
)
typealias ByInlineMessageId = InlineMessageAction

View File

@@ -1,8 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
@Deprecated(
"Deprecated for the reason of creating of more obvious type interface",
ReplaceWith("MessageAction", "com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.MessageAction")
)
typealias ByMessageId = MessageAction

View File

@@ -1,7 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
interface ChatRequest {
val chatId: ChatIdentifier
}

View File

@@ -1,5 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
interface DisableNotification {
val disableNotification: Boolean
}

View File

@@ -1,7 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineMessageIdentifier
interface InlineMessageAction {
val inlineMessageId: InlineMessageIdentifier
}

View File

@@ -1,7 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier
interface MessageAction: ChatRequest {
val messageId: MessageIdentifier
}

View File

@@ -1,7 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
interface ReplyMarkup {
val replyMarkup: KeyboardMarkup?
}

View File

@@ -1,7 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier
interface ReplyMessageId {
val replyToMessageId: MessageIdentifier?
}

View File

@@ -1,7 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
import com.github.insanusmokrassar.TelegramBotAPI.types.TelegramDate
interface UntilDate {
val untilDate: TelegramDate?
}

View File

@@ -1,17 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.bot
import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper
abstract class BaseRequestsExecutor(
protected val telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper
) : RequestsExecutor {
@Deprecated("Deprecated due to new TelegramAPIUrlKeeper API", ReplaceWith("telegramAPIUrlsKeeper.commonAPIUrl"))
protected val baseUrl: String
get() = telegramAPIUrlsKeeper.commonAPIUrl
@Deprecated("Deprecated due to new TelegramAPIUrlKeeper API")
constructor(
token: String,
hostUrl: String = "https://api.telegram.org"
) : this (TelegramAPIUrlsKeeper(token, hostUrl))
}

View File

@@ -1,13 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request
import io.ktor.client.HttpClient
import io.ktor.client.call.HttpClientCall
interface KtorCallFactory {
suspend fun <T: Any> prepareCall(
client: HttpClient,
baseUrl: String,
request: Request<T>
) : HttpClientCall?
}

View File

@@ -1,102 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor
import com.github.insanusmokrassar.TelegramBotAPI.bot.BaseRequestsExecutor
import com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.base.MultipartRequestCallFactory
import com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.base.SimpleRequestCallFactory
import com.github.insanusmokrassar.TelegramBotAPI.bot.exceptions.newRequestException
import com.github.insanusmokrassar.TelegramBotAPI.bot.settings.limiters.EmptyLimiter
import com.github.insanusmokrassar.TelegramBotAPI.bot.settings.limiters.RequestLimiter
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request
import com.github.insanusmokrassar.TelegramBotAPI.types.Response
import com.github.insanusmokrassar.TelegramBotAPI.types.RetryAfterError
import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper
import io.ktor.client.HttpClient
import io.ktor.client.call.HttpClientCall
import io.ktor.client.engine.HttpClientEngine
import io.ktor.util.cio.toByteArray
import kotlinx.coroutines.delay
import kotlinx.serialization.json.Json
class KtorRequestsExecutor(
telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper,
private val client: HttpClient = HttpClient(),
callsFactories: List<KtorCallFactory> = emptyList(),
excludeDefaultFactories: Boolean = false,
private val requestsLimiter: RequestLimiter = EmptyLimiter,
private val jsonFormatter: Json = Json.nonstrict
) : BaseRequestsExecutor(telegramAPIUrlsKeeper) {
@Deprecated("Deprecated due to new TelegramAPIUrlKeeper API")
constructor(
token: String,
client: HttpClient = HttpClient(),
hostUrl: String = "https://api.telegram.org",
callsFactories: List<KtorCallFactory> = emptyList(),
excludeDefaultFactories: Boolean = false,
requestsLimiter: RequestLimiter = EmptyLimiter,
jsonFormatter: Json = Json.nonstrict
) : this(TelegramAPIUrlsKeeper(token, hostUrl), client, callsFactories, excludeDefaultFactories, requestsLimiter, jsonFormatter)
@Deprecated("Deprecated due to new TelegramAPIUrlKeeper API")
constructor(
token: String,
engine: HttpClientEngine? = null,
hostUrl: String = "https://api.telegram.org"
) : this(
TelegramAPIUrlsKeeper(token, hostUrl),
engine ?.let { HttpClient(engine) } ?: HttpClient()
)
private val callsFactories: List<KtorCallFactory> = callsFactories.run {
if (!excludeDefaultFactories) {
asSequence().plus(SimpleRequestCallFactory()).plus(MultipartRequestCallFactory()).toList()
} else {
this
}
}
override suspend fun <T : Any> execute(request: Request<T>): T {
return requestsLimiter.limit {
var call: HttpClientCall? = null
for (factory in callsFactories) {
call = factory.prepareCall(
client,
telegramAPIUrlsKeeper.commonAPIUrl,
request
)
if (call != null) {
break
}
}
if (call == null) {
throw IllegalArgumentException("Can't execute request: $request")
}
val content = call.response.use {
it.content.toByteArray().toString(Charsets.UTF_8)
}
val responseObject = jsonFormatter.parse(
Response.serializer(request.resultSerializer()),
content
)
responseObject.result ?: responseObject.parameters ?.let {
val error = it.error
if (error is RetryAfterError) {
delay(error.leftToRetry)
execute(request)
} else {
null
}
} ?: call.let {
throw newRequestException(
responseObject,
content,
"Can't get result object from $content"
)
}
}
}
override fun close() {
client.close()
}
}

View File

@@ -1,40 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.base
import com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.KtorCallFactory
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request
import io.ktor.client.HttpClient
import io.ktor.client.call.HttpClientCall
import io.ktor.client.call.call
import io.ktor.client.request.accept
import io.ktor.client.request.url
import io.ktor.http.ContentType
import io.ktor.http.HttpMethod
abstract class AbstractRequestCallFactory : KtorCallFactory {
private val methodsCache: MutableMap<String, String> = mutableMapOf()
override suspend fun <T : Any> prepareCall(
client: HttpClient,
baseUrl: String,
request: Request<T>
): HttpClientCall? {
val preparedBody = prepareCallBody(client, baseUrl, request) ?: return null
return client.call {
url(
methodsCache[request.method()] ?: "$baseUrl/${request.method()}".also {
methodsCache[request.method()] = it
}
)
method = HttpMethod.Post
accept(ContentType.Application.Json)
body = preparedBody
}
}
protected abstract fun <T : Any> prepareCallBody(
client: HttpClient,
baseUrl: String,
request: Request<T>
): Any?
}

View File

@@ -1,23 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.base
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.*
import com.github.insanusmokrassar.TelegramBotAPI.utils.toJsonWithoutNulls
import io.ktor.client.HttpClient
import io.ktor.http.ContentType
import io.ktor.http.content.TextContent
class SimpleRequestCallFactory : AbstractRequestCallFactory() {
override fun <T : Any> prepareCallBody(
client: HttpClient,
baseUrl: String,
request: Request<T>
): Any? = (request as? SimpleRequest<T>) ?.let { _ ->
val content = request.toJsonWithoutNulls(SimpleRequestSerializer).toString()
TextContent(
content,
ContentType.Application.Json
)
}
}

View File

@@ -1,12 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.bot
import com.github.insanusmokrassar.TelegramBotAPI.bot.exceptions.RequestException
@Deprecated(
"Replaced to another package",
ReplaceWith(
"RequestException",
"com.github.insanusmokrassar.TelegramBotAPI.bot.exceptions.RequestException"
)
)
typealias RequestException = RequestException

View File

@@ -1,10 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.bot
import com.github.insanusmokrassar.TelegramBotAPI.bot.exceptions.RequestException
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request
import kotlinx.io.core.Closeable
interface RequestsExecutor : Closeable {
@Throws(RequestException::class)
suspend fun <T : Any> execute(request: Request<T>): T
}

View File

@@ -1,9 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.bot
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.io.core.Closeable
interface UpdatesPoller : Closeable {
fun start(scope: CoroutineScope = CoroutineScope(Dispatchers.Default))
}

View File

@@ -1,40 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.bot.exceptions
import com.github.insanusmokrassar.TelegramBotAPI.types.Response
import java.io.IOException
fun newRequestException(
response: Response<*>,
plainAnswer: String,
message: String? = null,
cause: Throwable? = null
) = when (response.description) {
"Bad Request: reply message not found" -> ReplyMessageNotFoundException(response, plainAnswer, message, cause)
"Unauthorized" -> UnauthorizedException(response, plainAnswer, message, cause)
else -> CommonRequestException(response, plainAnswer, message, cause)
}
sealed class RequestException constructor(
val response: Response<*>,
val plainAnswer: String,
message: String? = null,
cause: Throwable? = null
) : IOException(
message,
cause
)
class CommonRequestException(response: Response<*>, plainAnswer: String, message: String?, cause: Throwable?) :
RequestException(response, plainAnswer, message, cause)
class UnauthorizedException(response: Response<*>, plainAnswer: String, message: String?, cause: Throwable?) :
RequestException(response, plainAnswer, message, cause)
class ReplyMessageNotFoundException(response: Response<*>, plainAnswer: String, message: String?, cause: Throwable?) :
RequestException(response, plainAnswer, message, cause)
@Deprecated(
"Replaced by ReplyMessageNotFoundException",
ReplaceWith("ReplyMessageNotFoundException", "com.github.insanusmokrassar.TelegramBotAPI.bot.exceptions.ReplyMessageNotFoundException")
)
typealias ReplyMessageNotFound = ReplyMessageNotFoundException

View File

@@ -1,66 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.bot.settings.limiters
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
private fun now(): Long = System.currentTimeMillis()
class CommonLimiter(
private val lockCount: Int = 10,
private val regenTime: Long = 20 * 1000L // 20 seconds for full regen of opportunity to send message
) : RequestLimiter {
private var doLimit: Boolean = false
private val counterChannel = Channel<Unit>(Channel.UNLIMITED)
private val scope = CoroutineScope(Dispatchers.Default)
private val counterJob = scope.launch {
var wasLastSecond = 0
var lastCountTime = now()
var limitManagementJob: Job? = null
var removeLimitTime: Long = lastCountTime
for (counter in counterChannel) {
val now = now()
if (now - lastCountTime > 1000) {
lastCountTime = now
wasLastSecond = 1
} else {
wasLastSecond++
}
if (wasLastSecond >= lockCount) {
removeLimitTime = now + regenTime
if (limitManagementJob == null) {
limitManagementJob = launch {
doLimit = true
var internalNow = now()
while (internalNow < removeLimitTime) {
delay(removeLimitTime - internalNow)
internalNow = now()
}
doLimit = false
}
}
}
if (now > removeLimitTime) {
limitManagementJob = null
}
}
}
private val quoterChannel = Channel<Unit>(Channel.CONFLATED)
private val tickerJob = scope.launch {
while (isActive) {
quoterChannel.send(Unit)
delay(1000L)
}
}
override suspend fun <T> limit(block: suspend () -> T): T {
counterChannel.send(Unit)
return if (!doLimit) {
block()
} else {
quoterChannel.receive()
block()
}
}
}

View File

@@ -1,5 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.bot.settings.limiters
object EmptyLimiter : RequestLimiter {
override suspend fun <T> limit(block: suspend () -> T): T = block()
}

View File

@@ -1,72 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.bot.settings.limiters
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
import java.util.concurrent.Executors
import kotlin.coroutines.*
private sealed class RequestEvent
private class AddRequest(
val continuation: Continuation<Long>
) : RequestEvent()
private object CompleteRequest : RequestEvent()
@Serializable
data class PowLimiter(
private val minAwaitTime: Long = 0L,
private val maxAwaitTime: Long = 10000L,
private val powValue: Double = 4.0,
private val powK: Double = 0.0016
) : RequestLimiter {
@Transient
private val scope = CoroutineScope(
Executors.newFixedThreadPool(3).asCoroutineDispatcher()
)
@Transient
private val eventsChannel = Channel<RequestEvent>(Channel.UNLIMITED)
@Transient
private val awaitTimeRange = minAwaitTime .. maxAwaitTime
init {
scope.launch {
var requestsInWork: Double = 0.0
for (event in eventsChannel) {
when (event) {
is AddRequest -> {
val awaitTime = ((Math.pow(requestsInWork, powValue) * powK) * 1000L).toLong()
requestsInWork++
event.continuation.resume(
if (awaitTime in awaitTimeRange) {
awaitTime
} else {
if (awaitTime < minAwaitTime) {
minAwaitTime
} else {
maxAwaitTime
}
}
)
}
is CompleteRequest -> requestsInWork--
}
}
}
}
override suspend fun <T> limit(
block: suspend () -> T
): T {
val delayMillis = suspendCoroutine<Long> {
scope.launch { eventsChannel.send(AddRequest(it)) }
}
delay(delayMillis)
return try {
block()
} finally {
eventsChannel.send(CompleteRequest)
}
}
}

View File

@@ -1,19 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.MessageAction
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import kotlinx.serialization.*
import kotlinx.serialization.internal.BooleanSerializer
@Serializable
data class DeleteMessage(
@SerialName(chatIdField)
override val chatId: ChatIdentifier,
@SerialName(messageIdField)
override val messageId: MessageIdentifier
) : SimpleRequest<Boolean>, MessageAction {
override fun method(): String = "deleteMessage"
override fun resultSerializer(): KSerializer<Boolean> = BooleanSerializer
}

View File

@@ -1,27 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.MessageAction
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage
import kotlinx.serialization.*
@Serializable
data class ForwardMessage(
@SerialName(fromChatIdField)
val fromChatId: ChatIdentifier,
@SerialName(chatIdField)
val toChatId: ChatIdentifier,
@SerialName(messageIdField)
override val messageId: MessageIdentifier,
@SerialName(disableNotificationField)
val disableNotification: Boolean = false
): SimpleRequest<RawMessage>, MessageAction {
@Transient
override val chatId: ChatIdentifier
get() = fromChatId
override fun method(): String = "forwardMessage"
override fun resultSerializer(): KSerializer<RawMessage> = RawMessage.serializer()
}

View File

@@ -1,12 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.User
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializable
@Serializable
class GetMe : SimpleRequest<User> {
override fun method(): String = "getMe"
override fun resultSerializer(): KSerializer<User> = User.serializer()
}

View File

@@ -1,42 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.ALL_UPDATES_LIST
import com.github.insanusmokrassar.TelegramBotAPI.types.UpdateIdentifier
import com.github.insanusmokrassar.TelegramBotAPI.types.update.RawUpdate
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializable
import kotlinx.serialization.internal.ArrayListSerializer
@Deprecated("Replaced to other package", ReplaceWith("UPDATE_MESSAGE", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_MESSAGE"))
const val UPDATE_MESSAGE = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_MESSAGE
@Deprecated("Replaced to other package", ReplaceWith("UPDATE_EDITED_MESSAGE", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_EDITED_MESSAGE"))
const val UPDATE_EDITED_MESSAGE = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_EDITED_MESSAGE
@Deprecated("Replaced to other package", ReplaceWith("UPDATE_CHANNEL_POST", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_CHANNEL_POST"))
const val UPDATE_CHANNEL_POST = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_CHANNEL_POST
@Deprecated("Replaced to other package", ReplaceWith("UPDATE_EDITED_CHANNEL_POST", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_EDITED_CHANNEL_POST"))
const val UPDATE_EDITED_CHANNEL_POST = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_EDITED_CHANNEL_POST
@Deprecated("Replaced to other package", ReplaceWith("UPDATE_CHOSEN_INLINE_RESULT", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_CHOSEN_INLINE_RESULT"))
const val UPDATE_CHOSEN_INLINE_RESULT = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_CHOSEN_INLINE_RESULT
@Deprecated("Replaced to other package", ReplaceWith("UPDATE_INLINE_QUERY", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_INLINE_QUERY"))
const val UPDATE_INLINE_QUERY = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_INLINE_QUERY
@Deprecated("Replaced to other package", ReplaceWith("UPDATE_CALLBACK_QUERY", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_CALLBACK_QUERY"))
const val UPDATE_CALLBACK_QUERY = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_CALLBACK_QUERY
@Deprecated("Replaced to other package", ReplaceWith("UPDATE_SHIPPING_QUERY", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_SHIPPING_QUERY"))
const val UPDATE_SHIPPING_QUERY = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_SHIPPING_QUERY
@Deprecated("Replaced to other package", ReplaceWith("UPDATE_PRE_CHECKOUT_QUERY", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_PRE_CHECKOUT_QUERY"))
const val UPDATE_PRE_CHECKOUT_QUERY = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_PRE_CHECKOUT_QUERY
@Deprecated("Replaced to other package", ReplaceWith("UPDATE_POLL", "com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_POLL"))
const val UPDATE_POLL = com.github.insanusmokrassar.TelegramBotAPI.types.UPDATE_POLL
@Serializable
data class GetUpdates(
val offset: UpdateIdentifier? = null,// set `last update id + 1` to receive next part of updates
val limit: Int? = null,
val timeout: Int? = null,
val allowed_updates: List<String>? = ALL_UPDATES_LIST
): SimpleRequest<List<RawUpdate>> {
override fun method(): String = "getUpdates"
override fun resultSerializer(): KSerializer<List<RawUpdate>> = ArrayListSerializer(RawUpdate.serializer())
}

View File

@@ -1,22 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.MessageAction
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ReplyMarkup
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
import com.github.insanusmokrassar.TelegramBotAPI.types.polls.Poll
import kotlinx.serialization.*
@Serializable
data class StopPoll(
@SerialName(chatIdField)
override val chatId: ChatIdentifier,
@SerialName(messageIdField)
override val messageId: MessageIdentifier,
@SerialName(replyMarkupField)
override val replyMarkup: InlineKeyboardMarkup? = null
) : MessageAction, SimpleRequest<Poll>, ReplyMarkup {
override fun method(): String = "stopPoll"
override fun resultSerializer(): KSerializer<Poll> = Poll.serializer()
}

View File

@@ -1,46 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts
import com.github.insanusmokrassar.TelegramBotAPI.utils.StorageFile
import kotlinx.serialization.*
import kotlinx.serialization.internal.StringDescriptor
import java.io.File
@Serializable(InputFileSerializer::class)
sealed class InputFile {
abstract val fileId: String
}
// TODO:: add checks for file url/file id regex
/**
* Contains file id or file url
*/
@Serializable(InputFileSerializer::class)
data class FileId(
override val fileId: String
) : InputFile()
fun String.toInputFile(): InputFile = FileId(this)
@Serializer(InputFile::class)
object InputFileSerializer : KSerializer<InputFile> {
override val descriptor: SerialDescriptor = StringDescriptor.withName(FileId::class.toString())
override fun serialize(encoder: Encoder, obj: InputFile) = encoder.encodeString(obj.fileId)
override fun deserialize(decoder: Decoder): FileId = FileId(decoder.decodeString())
}
// TODO:: add checks for files size
/**
* Contains info about file for sending
*/
@Serializable(InputFileSerializer::class)
data class MultipartFile (
val file: StorageFile,
val mimeType: String = file.contentType,
val filename: String = file.fileName
) : InputFile() {
override val fileId: String = file.generateCustomName()
}
fun File.toInputFile(): InputFile = MultipartFile(
StorageFile(this)
)

View File

@@ -1,21 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts
import com.github.insanusmokrassar.TelegramBotAPI.types.Response
import com.github.insanusmokrassar.TelegramBotAPI.utils.toJsonWithoutNulls
import kotlinx.serialization.*
import kotlinx.serialization.json.JsonObject
@Serializable(RequestSerializer::class)
interface Request<T: Any> {
fun method(): String
fun resultSerializer(): KSerializer<T>
fun json(): JsonObject = toJsonWithoutNulls(RequestSerializer)
}
object RequestSerializer : KSerializer<Request<*>> by ContextSerializer(Request::class)
fun <T : Any> StringFormat.extractResult(
from: String,
dataSerializer: KSerializer<T>
): Response<T> {
return parse(Response.serializer(dataSerializer), from)
}

View File

@@ -1,8 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts
import kotlinx.serialization.*
@Serializable(SimpleRequestSerializer::class)
interface SimpleRequest<T: Any> : Request<T>
object SimpleRequestSerializer : KSerializer<SimpleRequest<*>> by ContextSerializer(SimpleRequest::class)

View File

@@ -1,14 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.answers.payments.abstracts
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.PreCheckoutQueryId
import kotlinx.serialization.KSerializer
import kotlinx.serialization.serializer
interface AnswerPreCheckoutQuery : SimpleRequest<Boolean> {
override fun method(): String = "answerPreCheckoutQuery"
override fun resultSerializer(): KSerializer<Boolean> = Boolean.serializer()
val preCheckoutQueryId: PreCheckoutQueryId
val isOk: Boolean
}

View File

@@ -1,14 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.answers.payments.abstracts
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.ShippingQueryIdentifier
import kotlinx.serialization.KSerializer
import kotlinx.serialization.serializer
interface AnswerShippingQuery : SimpleRequest<Boolean> {
override fun method(): String = "answerShippingQuery"
override fun resultSerializer(): KSerializer<Boolean> = Boolean.serializer()
val shippingQueryId: ShippingQueryIdentifier
val isOk: Boolean
}

View File

@@ -1,17 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
import kotlinx.serialization.*
import kotlinx.serialization.internal.StringSerializer
@Serializable
data class ExportChatInviteLink(
@SerialName(chatIdField)
override val chatId: ChatIdentifier
): ChatRequest, SimpleRequest<String> {
override fun method(): String = "exportChatInviteLink"
override fun resultSerializer(): KSerializer<String> = StringSerializer
}

View File

@@ -1,17 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
import kotlinx.serialization.*
import kotlinx.serialization.internal.BooleanSerializer
@Serializable
data class LeaveChat(
@SerialName(chatIdField)
override val chatId: ChatIdentifier
): ChatRequest, SimpleRequest<Boolean> {
override fun method(): String = "leaveChat"
override fun resultSerializer(): KSerializer<Boolean> = BooleanSerializer
}

View File

@@ -1,9 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.abstracts
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.UserId
interface ChatMemberRequest<T: Any> : ChatRequest, SimpleRequest<T> {
val userId: UserId
}

View File

@@ -1,18 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.get
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
import com.github.insanusmokrassar.TelegramBotAPI.types.chat.ExtendedChatSerializer
import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.extended.ExtendedChat
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
import kotlinx.serialization.*
@Serializable
data class GetChat(
@SerialName(chatIdField)
override val chatId: ChatIdentifier
): ChatRequest, SimpleRequest<ExtendedChat> {
override fun method(): String = "getChat"
override fun resultSerializer(): KSerializer<ExtendedChat> = ExtendedChatSerializer
}

View File

@@ -1,18 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.get
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.RawChatMember
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
import kotlinx.serialization.*
import kotlinx.serialization.internal.ArrayListSerializer
@Serializable
data class GetChatAdministrators(
@SerialName(chatIdField)
override val chatId: ChatIdentifier
): ChatRequest, SimpleRequest<List<RawChatMember>> {
override fun method(): String = "getChatAdministrators"
override fun resultSerializer(): KSerializer<List<RawChatMember>> = ArrayListSerializer(RawChatMember.serializer())
}

View File

@@ -1,17 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.get
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
import kotlinx.serialization.*
import kotlinx.serialization.internal.IntSerializer
@Serializable
data class GetChatMembersCount(
@SerialName(chatIdField)
override val chatId: ChatIdentifier
): ChatRequest, SimpleRequest<Int> {
override fun method(): String = "getChatMembersCount"
override fun resultSerializer(): KSerializer<Int> = IntSerializer
}

View File

@@ -1,17 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.members
import com.github.insanusmokrassar.TelegramBotAPI.requests.chat.abstracts.ChatMemberRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.RawChatMember
import kotlinx.serialization.*
@Serializable
data class GetChatMember(
@SerialName(chatIdField)
override val chatId: ChatIdentifier,
@SerialName(userIdField)
override val userId: UserId
) : ChatMemberRequest<RawChatMember> {
override fun method(): String = "getChatMember"
override fun resultSerializer(): KSerializer<RawChatMember> = RawChatMember.serializer()
}

View File

@@ -1,20 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.members
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.UntilDate
import com.github.insanusmokrassar.TelegramBotAPI.requests.chat.abstracts.ChatMemberRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import kotlinx.serialization.*
import kotlinx.serialization.internal.BooleanSerializer
@Serializable
data class KickChatMember(
@SerialName(chatIdField)
override val chatId: ChatIdentifier,
@SerialName(userIdField)
override val userId: UserId,
@SerialName(untilDateField)
override val untilDate: TelegramDate? = null
) : ChatMemberRequest<Boolean>, UntilDate {
override fun method(): String = "kickChatMember"
override fun resultSerializer(): KSerializer<Boolean> = BooleanSerializer
}

View File

@@ -1,23 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.members
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.UntilDate
import com.github.insanusmokrassar.TelegramBotAPI.requests.chat.abstracts.ChatMemberRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import com.github.insanusmokrassar.TelegramBotAPI.types.chat.ChatPermissions
import kotlinx.serialization.*
import kotlinx.serialization.internal.BooleanSerializer
@Serializable
data class RestrictChatMember(
@SerialName(chatIdField)
override val chatId: ChatIdentifier,
@SerialName(userIdField)
override val userId: UserId,
@SerialName(untilDateField)
override val untilDate: TelegramDate? = null,
@SerialName(permissionsField)
val permissions: ChatPermissions
) : ChatMemberRequest<Boolean>, UntilDate {
override fun method(): String = "restrictChatMember"
override fun resultSerializer(): KSerializer<Boolean> = BooleanSerializer
}

View File

@@ -1,17 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.members
import com.github.insanusmokrassar.TelegramBotAPI.requests.chat.abstracts.ChatMemberRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import kotlinx.serialization.*
import kotlinx.serialization.internal.BooleanSerializer
@Serializable
data class UnbanChatMember(
@SerialName(chatIdField)
override val chatId: ChatIdentifier,
@SerialName(userIdField)
override val userId: UserId
) : ChatMemberRequest<Boolean> {
override fun method(): String = "unbanChatMember"
override fun resultSerializer(): KSerializer<Boolean> = BooleanSerializer
}

View File

@@ -1,17 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.modify
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
import kotlinx.serialization.*
import kotlinx.serialization.internal.BooleanSerializer
@Serializable
data class DeleteChatPhoto(
@SerialName(chatIdField)
override val chatId: ChatIdentifier
): ChatRequest, SimpleRequest<Boolean> {
override fun method(): String = "deleteChatPhoto"
override fun resultSerializer(): KSerializer<Boolean> = BooleanSerializer
}

View File

@@ -1,20 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.modify
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.*
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import kotlinx.serialization.*
import kotlinx.serialization.internal.BooleanSerializer
@Serializable
data class PinChatMessage (
@SerialName(chatIdField)
override val chatId: ChatIdentifier,
@SerialName(messageIdField)
override val messageId: MessageIdentifier,
@SerialName(disableNotificationField)
override val disableNotification: Boolean = false
): ChatRequest, SimpleRequest<Boolean>, MessageAction, DisableNotification {
override fun method(): String = "pinChatMessage"
override fun resultSerializer(): KSerializer<Boolean> = BooleanSerializer
}

View File

@@ -1,19 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.modify
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import com.github.insanusmokrassar.TelegramBotAPI.types.chat.ChatPermissions
import kotlinx.serialization.*
import kotlinx.serialization.internal.BooleanSerializer
@Serializable
data class SetChatPermissions (
@SerialName(chatIdField)
override val chatId: ChatIdentifier,
@SerialName(permissionsField)
val permissions: ChatPermissions
): ChatRequest, SimpleRequest<Boolean> {
override fun method(): String = "setChatPermissions"
override fun resultSerializer(): KSerializer<Boolean> = BooleanSerializer
}

View File

@@ -1,22 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.modify
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.MultipartFile
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.MultipartRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import com.github.insanusmokrassar.TelegramBotAPI.utils.toJson
import kotlinx.serialization.*
import kotlinx.serialization.internal.BooleanSerializer
import kotlinx.serialization.json.JsonObject
@Serializable
data class SetChatPhoto (
@SerialName(chatIdField)
override val chatId: ChatIdentifier,
val photo: MultipartFile = throw IllegalArgumentException("Unfortunately, this type of objects can't be parsed automatically")
): ChatRequest, MultipartRequest<Boolean> {
override fun method(): String = "setChatPhoto"
override fun resultSerializer(): KSerializer<Boolean> = BooleanSerializer
override val mediaMap: Map<String, MultipartFile> = mapOf(photoField to photo)
override val paramsJson: JsonObject = toJson(serializer())
}

View File

@@ -1,17 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.modify
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
import kotlinx.serialization.*
import kotlinx.serialization.internal.BooleanSerializer
@Serializable
data class UnpinChatMessage(
@SerialName(chatIdField)
override val chatId: ChatIdentifier
): ChatRequest, SimpleRequest<Boolean> {
override fun method(): String = "unpinChatMessage"
override fun resultSerializer(): KSerializer<Boolean> = BooleanSerializer
}

View File

@@ -1,17 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.stickers
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
import kotlinx.serialization.*
import kotlinx.serialization.internal.BooleanSerializer
@Serializable
data class DeleteChatStickerSet(
@SerialName(chatIdField)
override val chatId: ChatIdentifier
): ChatRequest, SimpleRequest<Boolean> {
override fun method(): String = "deleteChatStickerSet"
override fun resultSerializer(): KSerializer<Boolean> = BooleanSerializer
}

View File

@@ -1,18 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.stickers
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import kotlinx.serialization.*
import kotlinx.serialization.internal.BooleanSerializer
@Serializable
data class SetChatStickerSet(
@SerialName(chatIdField)
override val chatId: ChatIdentifier,
@SerialName(stickerSetNameField)
val stickerSetName: StickerSetName
): ChatRequest, SimpleRequest<Boolean> {
override fun method(): String = "setChatStickerSet"
override fun resultSerializer(): KSerializer<Boolean> = BooleanSerializer
}

View File

@@ -1,11 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.common
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.*
import kotlinx.serialization.json.JsonObject
data class CommonMultipartFileRequest<T: Any>(
val data: Request<T>,
override val mediaMap: Map<String, MultipartFile>
) : MultipartRequest<T>, Request<T> by data {
override val paramsJson: JsonObject = data.json()
}

View File

@@ -1,24 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.LiveLocation
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.*
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage
import kotlinx.serialization.*
@Serializable
data class EditChatMessageLiveLocation(
@SerialName(chatIdField)
override val chatId: ChatIdentifier,
@SerialName(messageIdField)
override val messageId: MessageIdentifier,
@SerialName(latitudeField)
override val latitude: Double,
@SerialName(longitudeField)
override val longitude: Double,
@SerialName(replyMarkupField)
override val replyMarkup: InlineKeyboardMarkup? = null
) : EditChatMessage, EditReplyMessage, EditLocationMessage {
override fun method(): String = "editMessageLiveLocation"
override fun resultSerializer(): KSerializer<RawMessage> = RawMessage.serializer()
}

View File

@@ -1,21 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.LiveLocation
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.*
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
data class EditInlineMessageLiveLocation(
@SerialName(inlineMessageIdField)
override val inlineMessageId: InlineMessageIdentifier,
@SerialName(latitudeField)
override val latitude: Double,
@SerialName(longitudeField)
override val longitude: Double,
@SerialName(replyMarkupField)
override val replyMarkup: InlineKeyboardMarkup? = null
) : EditInlineMessage, EditReplyMessage, EditLocationMessage {
override fun method(): String = "editMessageLiveLocation"
}

View File

@@ -1,21 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.LiveLocation
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditChatMessage
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditReplyMessage
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage
import kotlinx.serialization.*
@Serializable
data class StopChatMessageLiveLocation(
@SerialName(chatIdField)
override val chatId: ChatIdentifier,
@SerialName(messageIdField)
override val messageId: MessageIdentifier,
@SerialName(replyMarkupField)
override val replyMarkup: InlineKeyboardMarkup? = null
) : EditChatMessage, EditReplyMessage {
override fun method(): String = "stopMessageLiveLocation"
override fun resultSerializer(): KSerializer<RawMessage> = RawMessage.serializer()
}

View File

@@ -1,18 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.LiveLocation
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditInlineMessage
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditReplyMessage
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
data class StopInlineMessageLiveLocation(
@SerialName(inlineMessageIdField)
override val inlineMessageId: InlineMessageIdentifier,
@SerialName(replyMarkupField)
override val replyMarkup: InlineKeyboardMarkup? = null
) : EditInlineMessage, EditReplyMessage {
override fun method(): String = "stopMessageLiveLocation"
}

View File

@@ -1,24 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.ReplyMarkup
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditChatMessage
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditReplyMessage
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage
import kotlinx.serialization.*
const val editMessageReplyMarkupMethod = "editMessageReplyMarkup"
@Serializable
data class EditChatMessageReplyMarkup(
@SerialName(chatIdField)
override val chatId: ChatIdentifier,
@SerialName(messageIdField)
override val messageId: MessageIdentifier,
@SerialName(replyMarkupField)
override val replyMarkup: InlineKeyboardMarkup? = null
) : EditChatMessage, EditReplyMessage {
override fun method(): String = editMessageReplyMarkupMethod
override fun resultSerializer(): KSerializer<RawMessage> = RawMessage.serializer()
}

View File

@@ -1,18 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.ReplyMarkup
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditInlineMessage
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.EditReplyMessage
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
data class EditInlineMessageReplyMarkup(
@SerialName(inlineMessageIdField)
override val inlineMessageId: InlineMessageIdentifier,
@SerialName(replyMarkupField)
override val replyMarkup: InlineKeyboardMarkup? = null
) : EditInlineMessage, EditReplyMessage {
override fun method(): String = editMessageReplyMarkupMethod
}

View File

@@ -1,7 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.MessageAction
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage
interface EditChatMessage : SimpleRequest<RawMessage>, MessageAction

View File

@@ -1,11 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineMessageIdentifier
import kotlinx.serialization.KSerializer
import kotlinx.serialization.internal.BooleanSerializer
interface EditInlineMessage : SimpleRequest<Boolean> {
val inlineMessageId: InlineMessageIdentifier
override fun resultSerializer(): KSerializer<Boolean> = BooleanSerializer
}

View File

@@ -1,6 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts
interface EditLocationMessage {
val latitude: Double
val longitude: Double
}

View File

@@ -1,7 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts
import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMedia
interface EditMediaMessage {
val media: InputMedia
}

View File

@@ -1,8 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ReplyMarkup
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
interface EditReplyMessage : ReplyMarkup {
override val replyMarkup: InlineKeyboardMarkup?
}

View File

@@ -1,8 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
interface EditTextChatMessage {
val text: String
val parseMode: ParseMode?
}

View File

@@ -1,29 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.caption
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.*
import com.github.insanusmokrassar.TelegramBotAPI.types.*
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage
import kotlinx.serialization.*
const val editMessageCaptionMethod = "editMessageCaption"
@Serializable
data class EditChatMessageCaption(
@SerialName(chatIdField)
override val chatId: ChatIdentifier,
@SerialName(messageIdField)
override val messageId: MessageIdentifier,
@SerialName(captionField)
override val text: String,
@SerialName(parseModeField)
override val parseMode: ParseMode? = null,
@SerialName(replyMarkupField)
override val replyMarkup: InlineKeyboardMarkup? = null
) : EditChatMessage, EditTextChatMessage, EditReplyMessage {
override fun method(): String = editMessageCaptionMethod
override fun resultSerializer(): KSerializer<RawMessage> = RawMessage.serializer()
}

Some files were not shown because too many files have changed in this diff Show More