mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2025-11-16 12:00:18 +00:00
Compare commits
634 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 35e28c00cb | |||
| 1913f1a900 | |||
| cbfd34098d | |||
| e5618f4705 | |||
| c9f2166e7d | |||
| eb960290c6 | |||
| 100f8b564a | |||
| 8e1ad9ffbc | |||
| 8875e2a986 | |||
| 7478b151eb | |||
| 959136479e | |||
| a52a62837e | |||
| 17dd694044 | |||
| 34fcfe2e20 | |||
| 64862ecd2d | |||
| c9edbbf7af | |||
| a2f9a5a432 | |||
| 8337da34ca | |||
| f45956b554 | |||
| bec1255d67 | |||
| 39ca29279f | |||
| 70b592baad | |||
| 403aa684a8 | |||
| e10e257c80 | |||
| 5e7bc96b44 | |||
| 79d0eda61d | |||
| 9916b3f469 | |||
| 2bac5f0eed | |||
|
|
01eb072caa | ||
| 496af479b0 | |||
| 386e91e28b | |||
| 91dbcecefc | |||
| 2d743e4c19 | |||
| 8804a24013 | |||
| 8b5244d8df | |||
| 034901a479 | |||
| 7043647584 | |||
| acd9505a5d | |||
| 46c33d5ec4 | |||
| 89dc7a4b2a | |||
| e4f305b3ec | |||
| d56c132201 | |||
| d336e177dd | |||
| 15e29286fb | |||
| 314ceed78e | |||
| 3fa3aa50d9 | |||
| 571296b9a0 | |||
| 3f13e5d062 | |||
| 1874023c05 | |||
| dc0fda2066 | |||
| c0d4a4f01b | |||
| 603762bc22 | |||
| 4db82d6ce2 | |||
| 9bf8f56254 | |||
| 9c926a2265 | |||
| 747854f4f4 | |||
| dcfb14553d | |||
| 6eaa9d699b | |||
| 6788c4d1dd | |||
| 6420737a82 | |||
| 4c36750431 | |||
| fd022742aa | |||
| 0472e35752 | |||
| 768d00eedd | |||
| e9347075ed | |||
|
|
3da74b0c66 | ||
|
|
8b79c5c76b | ||
|
|
a1b471d2ca | ||
|
|
e2c7125f6c | ||
| ec8df3c31c | |||
| 94a35349aa | |||
| 046402454f | |||
| c3978f2dab | |||
| 1019fd4d19 | |||
| 76a9fd1a55 | |||
| aec4c7323a | |||
| 7bdfd5cf69 | |||
| ce95a60fbc | |||
| 3c17a67b01 | |||
| 35bf5b9e9d | |||
| 0087d02b5f | |||
| 212d8946c8 | |||
| 319e43901a | |||
| da01955507 | |||
| 095382040c | |||
| 5545708d38 | |||
| 5d06d86549 | |||
| c081e5c457 | |||
| 555c2ffa04 | |||
| bcee64c103 | |||
| 44a35bd26e | |||
| 1f5c719294 | |||
| 6013c3ba86 | |||
| d4551490f7 | |||
| cc0498a89a | |||
| 0b78c0382f | |||
| c91426a910 | |||
| 5d1c59ff75 | |||
| d2228e274c | |||
| 790959ea49 | |||
| ce9f7f35dc | |||
| 4f984d1dbc | |||
| c83da6be70 | |||
|
|
710438489c | ||
| 6f650f6d6c | |||
| 2d15e13ae6 | |||
| d60ee7b8a5 | |||
| 8f882e9825 | |||
| 48e946c2d0 | |||
| 1758d80020 | |||
| 63b2bd61b5 | |||
| ff2c70fc76 | |||
| e3bfc4472a | |||
| 1cff6f616f | |||
| 1dfe4bf276 | |||
| e4b09032cd | |||
| e8e54a0aea | |||
| 8f85b4cba3 | |||
| 46d65a271d | |||
| e088329ce1 | |||
| 8d9ebb754b | |||
| c0a43077ad | |||
| 1811a63a13 | |||
| cba0e30710 | |||
| ff0b7faa48 | |||
| 975898660c | |||
| cfb7f35d20 | |||
| 147889a66a | |||
| ed9ed715a0 | |||
| a9a3f55c8d | |||
| 58943f2504 | |||
| 5f7633a57e | |||
| 65cfc3220d | |||
| 36d30ef91b | |||
| 41e5c579a2 | |||
| bbf63c51ec | |||
| fb91199f83 | |||
| d76c09ffb2 | |||
| acfb7066d2 | |||
| 7507c107b4 | |||
| 2acb177ad6 | |||
| b5a14077fd | |||
| 5f60bf003f | |||
| f9b2c4c403 | |||
| c909774403 | |||
| 670cfcca13 | |||
| 130e00b62b | |||
| ca4beee95f | |||
| ca784e67df | |||
| 835b8b34f9 | |||
| e6430a729c | |||
| 6c4c9f2fc6 | |||
| 310a7e6e82 | |||
| 7375894645 | |||
| 69973c597b | |||
| 22e8b06fda | |||
| 7ede53fdbb | |||
| ca9051920d | |||
| b477e8d585 | |||
| 8ae2f57d55 | |||
| 1fb2ecf15f | |||
| 6073d914d5 | |||
| 16f55d70af | |||
| b484a31a4a | |||
| 0a162c4129 | |||
| 648f1b488b | |||
| 5fbde4bc06 | |||
| 2a276d9272 | |||
| 9ae252717d | |||
| 456143a266 | |||
| 0bcc98e126 | |||
| ab9ceba41c | |||
| 7cd5666e88 | |||
| 35dcd6ada7 | |||
| ec37df82a9 | |||
| 220cb47615 | |||
| d79b8a337a | |||
| cef6a6f741 | |||
| 9471df1f2d | |||
| f121e5f9c3 | |||
| 7f4fe318c5 | |||
| dbf5c2dbb2 | |||
| 105415873d | |||
| ff32fd1dfc | |||
| 006251ed07 | |||
| 9307582654 | |||
| fe11a2119e | |||
| c31403c1a2 | |||
| 0260e7bedc | |||
| fa43a55f26 | |||
| e9e1f4b9cf | |||
| e7b5b9184d | |||
| 81aa3f2307 | |||
| a9fe584504 | |||
| 4c8861ba79 | |||
| 0ec18cbf06 | |||
| 7008f312dc | |||
| 85317a510e | |||
| d629aa206e | |||
| 6394e1a52b | |||
| 23dca3d307 | |||
| 3032aa8474 | |||
| db19b69ca0 | |||
| f3827f81a7 | |||
| 0532dbb1ae | |||
| efc2681da8 | |||
| 735ed9fd86 | |||
| e856dc4754 | |||
| 0706ff1f95 | |||
| 336b830b0b | |||
| 1a638fe0a5 | |||
| 45467e5bd7 | |||
| 8419b0ab6a | |||
| 49573607fb | |||
| 35fe48db35 | |||
| 590db3e672 | |||
| ea40474c47 | |||
| 7354389f2d | |||
| 1f20ae16aa | |||
| 095c91bf39 | |||
| dc173d752c | |||
| a1788e35b2 | |||
| ea224fd765 | |||
| 7f51544bb9 | |||
| dfb22b0e89 | |||
| e675e841da | |||
| dea43aad8e | |||
| 52e25e934d | |||
| acc067585d | |||
| 47aa1a0795 | |||
| b40cc0c1ea | |||
| b5632626ad | |||
| 67fafdac00 | |||
| 738e628a89 | |||
| 420b846466 | |||
| 05e8c9c90d | |||
| e776c5182f | |||
| be5b3745b9 | |||
| 0de1d9cfda | |||
| 01da98d2fe | |||
| e985100c21 | |||
| 671faabef9 | |||
| bb9c9e22a2 | |||
| 42228f0eaa | |||
| dafd0a8ece | |||
| bee9d82372 | |||
| ec6cf0f029 | |||
| 9cee22165d | |||
| a58aad1198 | |||
| aa78d99179 | |||
| 603efe9259 | |||
| 21e3e10222 | |||
| 34eb6eb4bf | |||
| 565a724b9c | |||
| e87c4a0126 | |||
| 9b16d5d82b | |||
| 9747c8bff1 | |||
| 3ee84700f4 | |||
| 04a463f42c | |||
| 668a201789 | |||
| b336b17eef | |||
| 76b25d719a | |||
| a4d077dd17 | |||
| 469712150b | |||
| fad27ede78 | |||
| 1de90412b3 | |||
| 215c8793e1 | |||
| 54835f97d1 | |||
| 923e929670 | |||
| 37488e92e6 | |||
| 830ca8122d | |||
| fbb2758bdb | |||
| a5c3e06f1c | |||
| c6fb50c4a6 | |||
| 976c0b86dc | |||
| fee5d8f925 | |||
| 808746e12d | |||
| 3fb80dd475 | |||
| db8ea0da94 | |||
| fbdfb714a3 | |||
| 1facfbc2b7 | |||
| 914a0662a9 | |||
| eda3003b7d | |||
| 459942de36 | |||
| 17f64f9b48 | |||
| 3f896c2240 | |||
| 94f8c971c5 | |||
| c43109c063 | |||
| f6058e29b4 | |||
| 3a37311331 | |||
| 9fe1472e64 | |||
| f1480c40a7 | |||
| 88eebdc448 | |||
| 8c76283db5 | |||
| 7668c48081 | |||
| 35d2135f73 | |||
| 1cb0e096be | |||
| 31f7c7f31b | |||
| 82d3b3bc48 | |||
| b3734a5c2a | |||
| 55b8736d50 | |||
| 3334fd3ca6 | |||
|
|
e2416b405a | ||
| 14f012fbfa | |||
| 1ff55057f2 | |||
| 71b5e33dbc | |||
| 08d9d183f4 | |||
| 7183634fd6 | |||
| cf9f270651 | |||
| bd87938e9c | |||
| ba76eaeb90 | |||
| d8492ae168 | |||
| 0db85232d3 | |||
| bcf2325be8 | |||
| 51174a13de | |||
| dfc1fa4d7e | |||
| 10a1d1cb38 | |||
| 6c39dc4d06 | |||
| 4877b8958e | |||
| db9c460e66 | |||
| 2bd5d53b2a | |||
| 577436843d | |||
| 048aa93044 | |||
| 4e49de0dd7 | |||
| 9dc5a7624d | |||
| 21a15db031 | |||
| a6aa4b8758 | |||
| e85d5df03e | |||
| 6833640c48 | |||
| c22c1bb144 | |||
| 8293d6683c | |||
| 7e6e892c45 | |||
| 43ac09a79b | |||
| ee1f115d77 | |||
| 7d85b6fb88 | |||
| 013944c5c9 | |||
| 55ed3e165b | |||
| 9c0106d229 | |||
| 9cd2a6220c | |||
| 033ec8f2da | |||
| 274afe8efc | |||
| e60630b331 | |||
| f6692a22d1 | |||
| 53257ff131 | |||
| ec70813e49 | |||
| 54589ed17b | |||
| 1d3736c44e | |||
| 8ef7acab2d | |||
| c3fca5c6c4 | |||
| 84d2c88032 | |||
| b7ec2f2b86 | |||
| 97d6d3ad13 | |||
| 3dd428c7d9 | |||
| 688de1053b | |||
| a4fae36b22 | |||
| 909a7fd26a | |||
| 041232e260 | |||
| d4c409107a | |||
| a0db95d929 | |||
| fb34b0bec1 | |||
| d18863b7b3 | |||
| c5c8a743e6 | |||
| 89881a7349 | |||
| 865edf385f | |||
| c85faa73c0 | |||
| 6b3f836096 | |||
| 574ffbc44d | |||
| a0120afb08 | |||
| 0b4b4950c2 | |||
| b3391330a0 | |||
| 518dee46b3 | |||
| c9de4bc79e | |||
| badb138bc1 | |||
| 4b980d3f44 | |||
| b11da02c8b | |||
| 71c0b688e8 | |||
| d61aa8b50e | |||
| be64287c42 | |||
| e7027047cb | |||
| 944d15f326 | |||
| ba2c4cbb30 | |||
| 244a1e5175 | |||
| 9c9a938d94 | |||
| a2a403045b | |||
| 6858af14f8 | |||
| 779009c2a6 | |||
| b22d8a5a25 | |||
| 54e3c43999 | |||
| f8a312acb3 | |||
| a51e68be04 | |||
| 39dab0b970 | |||
| b42a6ca0cf | |||
| a34e67722b | |||
| c0e660c8d3 | |||
| 7cca12930c | |||
| 5da60b4ac2 | |||
| 51dac40e45 | |||
| 51fc33960a | |||
| b89b798eb6 | |||
| a9326bb374 | |||
| edad64c6e3 | |||
| 8c06322586 | |||
| 9684e55c12 | |||
| d7d92cd83f | |||
| 7229d96ce7 | |||
| c32ab031dd | |||
| a8d7104145 | |||
| ff550fafde | |||
| 1dbb0e669d | |||
| 723818f04f | |||
| 0c107bc512 | |||
| 945df1bc5f | |||
| 239d740587 | |||
| 5fdcf252b2 | |||
| a17ae07e50 | |||
| 8bbfa2ee24 | |||
| 4b908f9975 | |||
| 542fcef6da | |||
| 0959c0b0d7 | |||
| 34f606545e | |||
| 0e33b123e9 | |||
| d6bbb0cadc | |||
| 8fd6a09763 | |||
| aa333d7c58 | |||
| fe8c3392fa | |||
| c2c7ac0d1e | |||
| 04e4407b96 | |||
| 60a30f972f | |||
| 9ed1500bee | |||
| 7d0009039f | |||
| e43ad41d2f | |||
| c7d5fdd2e0 | |||
| e7bdc85279 | |||
| dcfa198c8c | |||
| a846d0031c | |||
| 0dd632eb46 | |||
| dfe5595fd3 | |||
| 945dd05cfd | |||
| 09c623c1d7 | |||
| 269a4dd707 | |||
| 2399dc0d0a | |||
| 3a0be49cc5 | |||
| 28898ea2d4 | |||
| 679f282bd2 | |||
| 02fa83c92a | |||
| 69f81785bf | |||
| 86f1e3ea36 | |||
| be4043f3c2 | |||
| b4d0ca507b | |||
| cc433d4091 | |||
| f8ffd5fec3 | |||
| 799eadd7a7 | |||
| bc7cfc0d32 | |||
| 4ca8125637 | |||
| 5475f27a24 | |||
| 6d425cc0f6 | |||
| ff3ef6e957 | |||
| 28eecfa3ef | |||
| 56663d8e73 | |||
| 2fd842746b | |||
| 5e5dc105a5 | |||
| 6cf836708d | |||
| 5e6ff01940 | |||
| 2cfabb1c2a | |||
| de1d6aa70c | |||
| 90d5833021 | |||
| 527b718f55 | |||
| 2eb2d25662 | |||
| 9c25254937 | |||
| 601958a513 | |||
| ab6688bbaa | |||
| 4f2a8e49bc | |||
| 0ce9080efc | |||
| f2701b920f | |||
| a3b29f7db5 | |||
| 43a36072f1 | |||
| 0c11be7fe4 | |||
| 7a880ba2bd | |||
| 1a258ae912 | |||
| 9dc3e1ecc6 | |||
| b9e674821b | |||
| f4a731940e | |||
| 43ef7656d0 | |||
| b9ab7f2955 | |||
| 00886dcfb7 | |||
| 46573512a2 | |||
| a8ae0a296a | |||
| 8687a2ba6b | |||
| dbd9c72249 | |||
| 7aef76f432 | |||
| aece0784ab | |||
| 4e1dbb8741 | |||
| 41db785696 | |||
| 4e39f77b53 | |||
| 258ab44bac | |||
| 423efafa04 | |||
| 229334e781 | |||
| c4f22c2c43 | |||
| 2980b345a9 | |||
| ca24416934 | |||
| c006b47429 | |||
| 8487ee1f31 | |||
| f4fe680cac | |||
| cf814fcecb | |||
| a967b06d2e | |||
| 83e5d40443 | |||
| a8ca45a4bd | |||
| 961fa65415 | |||
| 4182d66f6e | |||
| 971589fe99 | |||
| 257574324a | |||
| cf3e372ca3 | |||
| 502a53fd62 | |||
| 353891eb37 | |||
| 5f593439a3 | |||
| f99873dd70 | |||
| d330cd2bfc | |||
| 92224b95df | |||
| 63e0f5c054 | |||
| dd76e704a8 | |||
| 4845a61539 | |||
| 9dfb16f534 | |||
| 50ae9ef955 | |||
| f80bb18ca5 | |||
| 40eaffb8e3 | |||
| 0c9f9f59c1 | |||
| 12496f8261 | |||
| 3fe7bd1382 | |||
| e3117f3679 | |||
| 562459f0b7 | |||
| e98e61747c | |||
| e1082c3741 | |||
| 3fa2071847 | |||
| 4c60b8fd82 | |||
| cb30beaa31 | |||
| 10df8cbc55 | |||
| 4b66617db6 | |||
| 9ddab0bf29 | |||
| e43d7350ed | |||
| 82129205fa | |||
| 034b30d65f | |||
| 0d72c51448 | |||
| fe11b088fc | |||
| 336f280b8a | |||
| 0f9e048274 | |||
| f8b6073cd4 | |||
| 0899a69762 | |||
| 031c61a872 | |||
| 33d8dcf977 | |||
| 2f09504f08 | |||
| f4c11cacc6 | |||
| 4ac01d5331 | |||
| bb3ebb455e | |||
| 7694b25d33 | |||
| b095f07b9c | |||
| 72127ce133 | |||
| 398adf06ff | |||
| dbef69ffac | |||
| f68edebd24 | |||
| 482d924070 | |||
| e7495468a2 | |||
| bba37d8889 | |||
| 198e15a937 | |||
| 5ee472305c | |||
| 47428dd6f9 | |||
| b4e4bed622 | |||
| 4dd2a8437c | |||
| 8b93922f82 | |||
| 43b08e9319 | |||
| 62d474b7cc | |||
| 0066e814b3 | |||
| ef7e94ba68 | |||
| 27aba72a5a | |||
| 680e960037 | |||
| ff47168fdc | |||
| a68c31f9d1 | |||
| ac915b79f7 | |||
| 1659f6f909 | |||
| 5249fb517f | |||
| fdf45d7566 | |||
| dc93997b8c | |||
| 6dd701d33c | |||
| 6f1f5e640a | |||
| dd0e3c04bc | |||
| a17af67f83 | |||
| 761e08afc6 | |||
| a09af8870a | |||
| 0ef4341baf | |||
| 91d8fbb232 | |||
| 0c1df47dbb | |||
| b582adc3a0 | |||
| 7660102435 | |||
| 5dbfeca18f | |||
| f3fc0769ef | |||
| 24d11d2c2b | |||
| 498efc2ec3 | |||
| 21544013d9 | |||
| e296c2ee00 | |||
| ed60dc49e7 | |||
| c1b5b3ca19 | |||
| 24498479a8 | |||
| cb64f44ceb | |||
| ba145d3ff8 | |||
| f57bfb017f | |||
| 8b36767435 | |||
| 91ab60d1f5 | |||
| 88208016d4 | |||
| fec2ef8b30 | |||
| 7bc06eae31 | |||
| 128e69e3e3 | |||
| 6c5fc8144b | |||
| 73f5bf7e4b | |||
| 17c10a2975 | |||
| c6638f3102 | |||
| f86ae2b592 | |||
| 84eb2fac7c | |||
| bf8096ece2 | |||
| 2ee5d78362 | |||
| 704457715d | |||
| 44751d94b3 | |||
| 2530b85400 | |||
| 49cbcea405 | |||
| 0312c57741 | |||
| e7af08142b | |||
| 3285b2812e | |||
| 402e1b12dc | |||
| 41c5ba7309 | |||
| 617bccaa81 | |||
| c7a8bc5c9d | |||
| 56f36523db | |||
| 8330aa1b3d | |||
| fc0dcae4be | |||
| 861254fe64 | |||
| 790885fd0d |
5
.github/FUNDING.yml
vendored
Normal file
5
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
patreon: InsanusMokrassar
|
||||
|
||||
custom: ['https://paypal.me/InsanusMokrassar?locale.x=ru_RU']
|
||||
10
.github/labeler.yml
vendored
Normal file
10
.github/labeler.yml
vendored
Normal 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"
|
||||
13
.github/workflows/greetings.yml
vendored
Normal file
13
.github/workflows/greetings.yml
vendored
Normal 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'
|
||||
18
.github/workflows/label.yml
vendored
Normal file
18
.github/workflows/label.yml
vendored
Normal 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 }}"
|
||||
1
.github/write-good.yml
vendored
Normal file
1
.github/write-good.yml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
spellchecker: true
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -8,3 +8,6 @@ settings.xml
|
||||
.gradle/
|
||||
build/
|
||||
out/
|
||||
|
||||
local.properties
|
||||
secret.gradle
|
||||
|
||||
13
.travis.yml
Normal file
13
.travis.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
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
|
||||
864
CHANGELOG.md
864
CHANGELOG.md
@@ -1,6 +1,868 @@
|
||||
# TelegramBotAPI changelog
|
||||
|
||||
## 0.17.0
|
||||
## 0.29.0
|
||||
|
||||
* **THIS VERSION CONTAINS BREAKING CHANGES**
|
||||
* ***PROJECT PACKAGES WERE CHANGED***
|
||||
* Packages in the whole project were changed `com.github.insanusmokrassar.TelegramBotAPI` -> `dev.inmo.tgbotapi`
|
||||
* Project group in repositories were changed: `com.github.insanusmokrassar` -> `dev.inmo`
|
||||
* Migration ([Examples migration](https://github.com/InsanusMokrassar/TelegramBotAPI-examples/pull/11)):
|
||||
1. Change implementation in your gradle files:
|
||||
* `implementation "com.github.insanusmokrassar:TelegramBotAPI-core:*"` -> `implementation "dev.inmo:tgbotapi.core:*"`
|
||||
* `implementation "com.github.insanusmokrassar:TelegramBotAPI-extensions-utils:*"` -> `implementation "dev.inmo:tgbotapi.extensions.utils:*"`
|
||||
* `implementation "com.github.insanusmokrassar:TelegramBotAPI-extensions-api:*"` -> `implementation "dev.inmo:tgbotapi.extensions.api:*"`
|
||||
* `implementation "com.github.insanusmokrassar:TelegramBotAPI:*"` -> `implementation "dev.inmo:tgbotapi:*"`
|
||||
2. Replace packages `com.github.insanusmokrassar.TelegramBotAPI` in the whole project by `dev.inmo.tgbotapi`
|
||||
|
||||
|
||||
* `TelegramBotAPI-core`:
|
||||
* Now in forward info you can get `ForwardFromSupergroupInfo`
|
||||
* **BREAKING CHANGE** `SendVoice` factory function has changed its signature: now it have now `thumb`
|
||||
(according to the [documentation](https://core.telegram.org/bots/api#sendvoice))
|
||||
* `TelegramBotAPI-extensions-api`:
|
||||
* ALL REQUESTS EXECUTOR USAGES WERE REPLACED WITH `TelegramBot` TYPEALIAS. It should not bring any break changes
|
||||
* Internal changes of `sendRegularPoll` and `sendQuizPoll` extensions
|
||||
* Variable `defaultLivePeriodDelayMillis` now is public
|
||||
* All `send` extensions for `TelegramBot` got their `reply` variations (issue [#144](https://github.com/InsanusMokrassar/TelegramBotAPI/issues/144))
|
||||
* A lot of `send` extensions for `TelegramBot` got their variation with `Chat` instead of `ChatIdentifier`
|
||||
|
||||
## 0.28.0
|
||||
|
||||
* **THIS VERSION CONTAINS BREAKING CHANGES**
|
||||
* ***PROJECT PACKAGES WERE CHANGED***
|
||||
* Project `TelegramBotAPI` -> `TelegramBotAPI-core`
|
||||
* Project `TelegramBotAPI-all` -> `TelegramBotAPI`
|
||||
|
||||
* `Common`:
|
||||
* Version updates:
|
||||
* `Kotlin`: `1.3.72` -> `1.4.0`
|
||||
* `Coroutines`: `1.3.8` -> `1.3.9`
|
||||
* `Serialization`: `0.20.0` -> `1.0.0-RC`
|
||||
* `Klock`: `1.11.14` -> `1.12.0`
|
||||
* `UUID`: `0.1.1` -> `0.2.1`
|
||||
* `Ktor`: `1.3.2` -> `1.4.0`
|
||||
* `buildMimeType` function now is cache-oriented getter which will save already got mime types into internal map
|
||||
* All deprecations from previous versions were removed
|
||||
* `TelegramBotAPI-core`:
|
||||
* Typealias `TelegramBot` was added
|
||||
* Fully rebuilt `KtorCallFactory` interface to be able to handle custom answers from telegram bot api system
|
||||
* New implementation of `KtorCallFactory` was added: `DownloadFileRequestCallFactory`
|
||||
* `DownloadFile` request was added
|
||||
* All included `KtorCallFactory` realizations (except of abstract) now are objects:
|
||||
* `MultipartRequestCallFactory`
|
||||
* `SimpleRequestCallFactory`
|
||||
* `MediaGroupMemberInputMedia` members now will not have `arguments` property due to redundancy and buggy of that
|
||||
* Field `media` now is common for all `InputMedia` objects
|
||||
* `TelegramBotAPI-extensions-api`:
|
||||
* Extensions `TelegramBot#downloadFile` were added
|
||||
* `TelegramBotAPI-extensions-utils`:
|
||||
* All extensions for media groups (except of `mediaGroupId`) have changed their context: `List<MediaGroupMessage>`
|
||||
-> `List<CommonMessage<MediaGroupContent>>`
|
||||
* `forwardInfo`
|
||||
* `replyTo`
|
||||
* `chat`
|
||||
* `createResend` (several extensions)
|
||||
* Several extensions for downloading of files:
|
||||
* `HttpClient#loadFile`
|
||||
* `PathedFile#download`
|
||||
|
||||
### 0.28.4
|
||||
|
||||
* `Common`:
|
||||
* Version updates:
|
||||
* `Ktor`: `1.4.0` -> `1.4.1`
|
||||
* `TelegramBotAPI-core`
|
||||
* Interface `GroupEventMessage` has been added ([#140](https://github.com/InsanusMokrassar/TelegramBotAPI/pull/140))
|
||||
* Old `GroupEventMessage` was renamed to `CommonGroupEventMessage` ([#140](https://github.com/InsanusMokrassar/TelegramBotAPI/pull/140))
|
||||
* Interface `SupergroupEventMessage` has been added ([#140](https://github.com/InsanusMokrassar/TelegramBotAPI/pull/140))
|
||||
* Old `SupergroupEventMessage` was renamed to `CommonSupergroupEventMessage` ([#140](https://github.com/InsanusMokrassar/TelegramBotAPI/pull/140))
|
||||
* Any `GroupEventMessage` now have `from` field ([#140](https://github.com/InsanusMokrassar/TelegramBotAPI/pull/140))
|
||||
* `TelegramBotAPI-extensions-utils`
|
||||
* Extensions `Flow<ChatEventMessage>#onlyGroupEvents` and `Flow<ChatEventMessage>#onlySupergroupEvents` now returns
|
||||
`CommonGroupEventMessage` and `CommonSupergroupEventMessage`
|
||||
|
||||
### 0.28.3
|
||||
|
||||
* Common:
|
||||
* Version updates:
|
||||
* `Klock`: `0.12.0` -> `0.12.1`
|
||||
* `Kotlin serialization`: `1.0.0-RC` -> `1.0.0-RC2` (dependency `kotlinx-serialization-core` was replaced with
|
||||
`kotlinx-serialization-json` due to [kotlinx.serialization library update](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md#100-rc2--2020-09-21))
|
||||
* `TelegramBotAPI-core`:
|
||||
* All `InlineQueryResult` has changed their type of id for more obvious relation between `InlineQueryResult#id` and
|
||||
`ChosenInlineResult#resultId`: `String` -> `InlineQueryIdentifier`
|
||||
* `TelegramBotAPI-extensions-utils`:
|
||||
* Several extensions for updates flows based on `InlineQueryUpdate` has been added:
|
||||
* `Flow<InlineQueryUpdate>#onlyBaseInlineQueriesWithUpdates`
|
||||
* `Flow<InlineQueryUpdate>#onlyBaseInlineQueries`
|
||||
* `Flow<InlineQueryUpdate>#onlyLocationInlineQueriesWithUpdates`
|
||||
* `Flow<InlineQueryUpdate>#onlyLocationInlineQueries`
|
||||
* Several extensions for updates flows based on `ChosenInlineResultUpdate` has been added:
|
||||
* `Flow<ChosenInlineResultUpdate>.onlyBaseChosenInlineResultsWithUpdates`
|
||||
* `Flow<ChosenInlineResultUpdate>.onlyBaseChosenInlineResults`
|
||||
* `Flow<ChosenInlineResultUpdate>.onlyLocationChosenInlineResultsWithUpdates`
|
||||
* `Flow<ChosenInlineResultUpdate>.onlyLocationChosenInlineResults`
|
||||
|
||||
### 0.28.2
|
||||
|
||||
* `TelegramBotAPI-extensions-utils`:
|
||||
* Several commands shortcuts for `Flow<ContentMessage<TextContent>>` has been added:
|
||||
* `filterExactCommands`
|
||||
* `filterCommandsInsideTextMessages`
|
||||
* `filterCommandsWithArgs`
|
||||
* Extension `Flow<BaseSentMessageUpdate>.filterCommandsWithArgs` has changed its signature: now it will also have
|
||||
original message paired with list of text sources
|
||||
* Shortcut method `commonMessages` for `onlyCommonMessages`
|
||||
* Shortcuts `onlySentViaBot` and `withoutSentViaBot` now are extensions for any `Flow` with types which implementing
|
||||
`ContentMessage`
|
||||
|
||||
### 0.28.1
|
||||
|
||||
* Common:
|
||||
* Versions updates:
|
||||
* `Kotlin`: `1.4.0` -> `1.4.10`
|
||||
* `UUID`: `0.2.1` -> `0.2.2`
|
||||
* `TelegramBotAPI-core`:
|
||||
* `ExceptionHandler` has changed its incoming type: `Exception` -> `Throwable`
|
||||
* `handleSafely` has changed its signature
|
||||
* `executeUnsafe` has changed its signature
|
||||
|
||||
## 0.27.0
|
||||
|
||||
* `Common`:
|
||||
* Versions updates:
|
||||
* `Kotlin`: `1.3.71` -> `1.3.72`
|
||||
* `Klock`: `1.10.3` -> `1.10.5`
|
||||
* `TelegramBotAPI`:
|
||||
* Typealias `LongSeconds` was added for correct explanation of seconds in `Long` primitive type
|
||||
* Several new fields was added:
|
||||
* `explanationField`
|
||||
* `explanationEntitiesField`
|
||||
* `openPeriodField`
|
||||
* `closeDateField`
|
||||
* Extension `List<TextPart>#justTextSources` was added for mapping of `List<TextPart>` to `List<TextSource>`
|
||||
* Field `SendPoll#closeInfo` was added
|
||||
* Range `openPeriodPollSecondsLimit` was added and used in all `SendPoll` requests for checking income data
|
||||
* `SendQuizPoll` now able to use fields `caption` and `parseMode` for `explanation` functionality
|
||||
* `quizPollExplanationLimit` was added for checking `QuizPoll` explanation size
|
||||
* Field `TextLinkTextSource#url` was added
|
||||
* Field `TextMentionTextSource#user` was added
|
||||
* Sealed class `ScheduledCloseInfo` was added
|
||||
* Class `ExactScheduledCloseInfo` was added for cases with `close_date`
|
||||
* Class `ApproximateScheduledCloseInfo` was added for cases with `open_period`
|
||||
* Field `Poll#scheduledCloseInfo` was added
|
||||
* Sealed class `MultipleAnswersPoll` was added
|
||||
* Class `RegularPoll` now extends `MultipleAnswersPoll`
|
||||
* `Dice` class was replaced into new package
|
||||
* Sealed class `DiceAnimationType` was added
|
||||
* Field `Dice#animationType` was added as `emoji` API representation
|
||||
* `SendDice` now receive `animationType` as second parameter
|
||||
* For `List<TextSource>` was added several extensions:
|
||||
* `toMarkdownCaptions`
|
||||
* `toMarkdownTexts`
|
||||
* `toMarkdownV2Captions`
|
||||
* `toMarkdownV2Texts`
|
||||
* `toHtmlCaptions`
|
||||
* `toHtmlTexts`
|
||||
* `TelegramBotAPI-extensions-api`:
|
||||
* All `RequestsExecutor#sendDice` extensions now accept `DiceAnimationType?` as second parameter
|
||||
* All `RequestsExecutor#sendRegularPoll` extensions now accept `ScheduledCloseInfo` fourth parameter
|
||||
* All `RequestsExecutor#sendQuizPoll` extensions now accept additional parameters `caption: String` and
|
||||
`parseMode: ParseMode` for `explanation` functionality and `closeInfo: ScheduledCloseInfo?` for autoclose poll
|
||||
functionality
|
||||
* `TelegramBotAPI-extensions-utils`:
|
||||
* Several shortcuts for `ScheduledCloseInfo` was added:
|
||||
* `closePollExactAt`
|
||||
* `closePollExactAfter`
|
||||
* `closePollAfter`
|
||||
|
||||
### 0.27.11
|
||||
|
||||
* `TelegramBotAPI`:
|
||||
* Extension `String#filenameFromUrl` was created
|
||||
* Extension `PathedFile#filename` was created
|
||||
* `TelegramBotAPI-extensions-utils`:
|
||||
* `Flow<Iterable<T>>.flatMap` extension was added
|
||||
* Extensions for `FlowUpdatesFilter` were added:
|
||||
* `FlowsUpdatesFilter#allSentMessagesFlow` (combination of `messageFlow` and `channelPostFlow`)
|
||||
* `FlowsUpdatesFilter#allSentMediaGroupsFlow` (combination of `messageMediaGroupFlow` and `channelPostMediaGroupFlow`)
|
||||
* `FlowsUpdatesFilter#sentMessages`
|
||||
* `FlowsUpdatesFilter#sentMessagesWithMediaGroups`
|
||||
* `FlowsUpdatesFilter#photoMessagesWithMediaGroups`
|
||||
* `FlowsUpdatesFilter#imageMessagesWithMediaGroups`
|
||||
* `FlowsUpdatesFilter#videoMessagesWithMediaGroups`
|
||||
* `FlowsUpdatesFilter#mediaGroupMessages`
|
||||
* `FlowsUpdatesFilter#mediaGroupPhotosMessages`
|
||||
* `FlowsUpdatesFilter#mediaGroupVideosMessages`
|
||||
* A lot of extensions like `Flow<BaseSentMessageUpdate>#textMessages` were added:
|
||||
* `Flow<BaseSentMessageUpdate>#animationMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#audioMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#contactMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#diceMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#documentMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#gameMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#invoiceMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#locationMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#photoMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#imageMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#pollMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#stickerMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#textMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#venueMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#videoMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#videoNoteMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#voiceMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#mediaGroupMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#mediaGroupPhotosMessages`
|
||||
* `Flow<BaseSentMessageUpdate>#mediaGroupVideosMessages`
|
||||
|
||||
### 0.27.10
|
||||
|
||||
* `TelegramBotAPI-extensions-api`:
|
||||
* Function `telegramBot(TelegramAPIUrlsKeeper)` was added
|
||||
* `TelegramBotAPI-extensions-utils`:
|
||||
* Extension `Route#includeWebhookHandlingInRouteWithFlows` was added
|
||||
* A lot of extensions like `FlowsUpdatesFilter#textMessages` were added:
|
||||
* `FlowsUpdatesFilter#animationMessages`
|
||||
* `FlowsUpdatesFilter#audioMessages`
|
||||
* `FlowsUpdatesFilter#contactMessages`
|
||||
* `FlowsUpdatesFilter#diceMessages`
|
||||
* `FlowsUpdatesFilter#documentMessages`
|
||||
* `FlowsUpdatesFilter#gameMessages`
|
||||
* `FlowsUpdatesFilter#invoiceMessages`
|
||||
* `FlowsUpdatesFilter#locationMessages`
|
||||
* `FlowsUpdatesFilter#photoMessages`
|
||||
* `FlowsUpdatesFilter#imageMessages`
|
||||
* `FlowsUpdatesFilter#pollMessages`
|
||||
* `FlowsUpdatesFilter#stickerMessages`
|
||||
* `FlowsUpdatesFilter#textMessages`
|
||||
* `FlowsUpdatesFilter#venueMessages`
|
||||
* `FlowsUpdatesFilter#videoMessages`
|
||||
* `FlowsUpdatesFilter#videoNoteMessages`
|
||||
* `FlowsUpdatesFilter#voiceMessages`
|
||||
|
||||
### 0.27.9
|
||||
|
||||
* `Common`
|
||||
* Versions updates:
|
||||
* `Gradle Wrapper`: `6.5-all` -> `6.5.1-bin`
|
||||
* `Coroutines`: `1.3.7` -> `1.3.8`
|
||||
* `Klock`: `1.11.3` -> `1.11.14`
|
||||
* `UUID`: `0.1.0` -> `0.1.1`
|
||||
|
||||
### 0.27.8
|
||||
|
||||
* `TelegramBotAPI`:
|
||||
* `UnknownUpdateType` was renamed to `UnknownUpdate`
|
||||
* Refactoring and optimization of `FlowsUpdatesFilter`
|
||||
* `Venue` type was replaced to a new package: `com.github.insanusmokrassar.TelegramBotAPI.types.venue.Venue`
|
||||
* `Venue` type now implements `Locationed` and delegate realisation to its `location` field
|
||||
* `FoursquareId` and `FoursquareType` typealiases were added
|
||||
* `TelegramBotAPI-extensions-utils`:
|
||||
* Several new functions `makeLinkToMessage` was added
|
||||
* `Foursquare` data class was added
|
||||
* Extension `Venue#foursquare` was added
|
||||
* Factory function `Venue` with `Foursquare` parameter was added
|
||||
|
||||
### 0.27.7
|
||||
|
||||
* `TelegramBotAPI`:
|
||||
* Operator function `unaryPlus` was added to `RowBuilder`. Now it is possible to write `row { +button }`
|
||||
* Function `flatMatrix` was added for single-row columns
|
||||
* Operator extension `RowBuilder#plus` was added to be able to write things like `row { this + button }`
|
||||
* `TelegramBotAPI-extensions-api`:
|
||||
* Extensions `RequestsExecutor#sendVenue` with `Location` args were added
|
||||
* `TelegramBotAPI-extensions-utils`:
|
||||
* Function `InlineKeyboardMarkup` for flat keyboards was added
|
||||
* Function `ReplyKeyboardMarkup` for flat keyboards was added
|
||||
|
||||
### 0.27.6
|
||||
|
||||
* `Common`:
|
||||
* Versions:
|
||||
* `Kotlin Coroutines`: `1.3.6` -> `1.3.7`
|
||||
* `TelegramBotAPI`:
|
||||
* Interface `PossiblySentViaBot` has been added
|
||||
* Additional interface `PossiblySentViaBotCommonMessage` was added for more explicit typing declaration for
|
||||
compiler
|
||||
* Currently, only `ChannelMessage` and `CommonMessageImpl` are implementing the interface
|
||||
`PossiblySentViaBotCommonMessage`. It could be changed in future
|
||||
* Factory `buildMimeType` was added
|
||||
* `BuiltinMimeTypes` was added
|
||||
* Abstraction `ThumbedWithMimeTypeInlineQueryResult` with `thumbMimeType` field was added
|
||||
* `InlineQueryResultGif` and `InlineQueryResultMpeg4Gif` now extend `ThumbedWithMimeTypeInlineQueryResult`
|
||||
instead of `ThumbedInlineQueryResult`
|
||||
* `TelegramBotAPI-extensions-utils`:
|
||||
* New extensions `onlyCommonMessages`, `onlySentViaBot` and `withoutSentViaBot` was added
|
||||
|
||||
### 0.27.5
|
||||
|
||||
* `Common`:
|
||||
* Versions:
|
||||
* `Klock`: `1.11.1` -> `1.11.3`
|
||||
* `TelegramotAPI`:
|
||||
* Fix: for sending requests caption and text lengths limits were updated
|
||||
* New variant of `row` was added
|
||||
* `makeLinkToMessage` extensions has been deprecated (replaced into `TelegramBotAPI-extensions-utils`)
|
||||
* Next things was deprecated and replaced into `TelegramBotAPI-extensions-utils`:
|
||||
* All `String` formatting public extensions and functions
|
||||
* All extensions like `CaptionedInput#toHtmlCaptions`
|
||||
* All helper extensions for `List<BaseMessageUpdate>`
|
||||
* All `RequestsExecutor#executeAsync` and `RequestsExecutor#executeUnsafe`
|
||||
* `BotCommand` now more strictly check commands which passed to it
|
||||
* Regex `BotCommandNameRegex` was added
|
||||
* `TelegramBotAPI-extensions-api`:
|
||||
* A lot of `RequesstExecutor#getChat` extensions was added for more explicit types showing
|
||||
* New `RequesstExecutor#setMyCommands` extension was added
|
||||
* New field `BotBuilder#ktorClientEngineFactory` introduced
|
||||
* Field `BotBuilder#ktorClientEngine` now is deprecated
|
||||
* `TelegramBotAPI-extensions-utils`:
|
||||
* `safely` function was introduced. It is in `PreviewFeature` state currently
|
||||
* `makeLinkToMessage` extensions has been added
|
||||
* `makeLinkToAddStickerSet` function and its variations were added
|
||||
* Next tools was added from `TelegramBotAPI`:
|
||||
* All `String` formatting extensions and functions
|
||||
* All extensions like `CaptionedInput#toHtmlCaptions`
|
||||
* All helper extensions for `List<BaseMessageUpdate>`
|
||||
* Several new extensions for `SentMediaGroupUpdate` were added:
|
||||
* `SentMediaGroupUpdate#forwardInfo`
|
||||
* `SentMediaGroupUpdate#replyTo`
|
||||
* `SentMediaGroupUpdate#chat`
|
||||
* `SentMediaGroupUpdate#mediaGroupId`
|
||||
* Several `List<MediaGroupMessage>.createResend` extensions were added
|
||||
* `RequestsExecutor#executeAsync` and `RequestsExecutor#executeUnsafe`
|
||||
|
||||
### 0.27.4
|
||||
|
||||
* `TelegramBotAPI-extensions-utils`:
|
||||
* Several extensions for updates was added:
|
||||
* `onlyBaseMessageUpdates`
|
||||
* `onlySentMessageUpdates`
|
||||
* `onlyEditMessageUpdates`
|
||||
* `onlyMediaGroupsUpdates`
|
||||
* `onlySentMediaGroupUpdates`
|
||||
* `onlyEditMediaGroupUpdates`
|
||||
* Renames in chat filters extensions:
|
||||
* `filterBaseMessageUpdates` -> `filterBaseMessageUpdatesByChatId` and `filterBaseMessageUpdatesByChat`
|
||||
* `filterSentMediaGroupUpdates` -> `filterSentMediaGroupUpdatesByChatId` and `filterSentMediaGroupUpdatesByChat`
|
||||
|
||||
### 0.27.3
|
||||
|
||||
* `TelegramBotAPI`:
|
||||
* `UpdateDeserializationStrategy` is publicly available now
|
||||
* All `setWebhook` extensions was marked as deprecated, renamed and replaced into `TelegramBotAPI-extensions-utils`
|
||||
* Typealias `ExceptionHandler` was added - it will be used for `handleSafely`
|
||||
* `SetWebhook` factories signatures was changed (backward compatibility was not broken)
|
||||
* `executeUnsafe` now working differently
|
||||
* Now it is possible to pass exceptions handler into `executeUnsafe`
|
||||
* `BasketballDiceAnimationType` was added
|
||||
* `UnknownDiceAnimationType` now is deprecated due to renaming - currently it is typealias for `CustomDiceAnimationType`
|
||||
* `CustomDiceAnimationType` now is `data` class instead of common class
|
||||
* `FlowsUpdatesFilter` will use size 64 by default for internal broadcast channels
|
||||
* `TelegramBotAPI-extensions-api`:
|
||||
* Long Polling extensions now are deprecated in this project. It was replaced into `TelegramBotAPI-extensions-utils`
|
||||
* Several `telegramBot` functions was renamed into `telegramBotWithCustomClientConfig`
|
||||
* Add one more `setWebhookInfo` realisation
|
||||
* `TelegramBotAPI-extensions-utils`:
|
||||
* Extension `toTelegramUpdate` was added
|
||||
* Long Polling extensions were added
|
||||
* Updates utils were added
|
||||
* New extensions `startListenWebhooks`, `setWebhookInfoAndStartListenWebhooks` and `includeWebhookHandlingInRoute` was added
|
||||
* New extension `CoroutineScope#updateHandlerWithMediaGroupsAdaptation` was added
|
||||
* New extension `flowsUpdatesFilter` was added
|
||||
* `TelegramBotAPI-all`:
|
||||
* Project was created
|
||||
|
||||
### 0.27.2
|
||||
|
||||
* `Common`:
|
||||
* Versions:
|
||||
* Coroutines: `1.3.5` -> `1.3.6`
|
||||
* Klock: `1.10.5` -> `1.11.1`
|
||||
* `TelegramBotAPI`:
|
||||
* Expected class `MimeType` was added
|
||||
* Field `MimeTyped#mimeType` now typed by `MimeType` instead of `String`
|
||||
* `MediaGroupMemberInputMedia` children now can be deserialized (but only those ones who are declared inside library)
|
||||
* `TelegramBotAPI-extensions-utils`:
|
||||
* Chat events splitters added:
|
||||
* Extension `Flow<ChatEventMessage>#onlyChannelEvents` was added
|
||||
* Extension `Flow<ChatEventMessage>#onlyGroupEvents` was added
|
||||
* Extension `Flow<ChatEventMessage>#onlySupergroupEvents` was added
|
||||
|
||||
### 0.27.1
|
||||
|
||||
* `TelegramBotAPI`:
|
||||
* Interface `Explained` and subsinterfaces `ExplainedInput` and `ExplainedOutput` was added
|
||||
* Class `QuizPoll` now implement `ExplainedInput`
|
||||
* In `QuizPoll#caption` and `QuizPoll#captionEntities` are deprecated now
|
||||
* Class `SendQuizPoll` now implement `ExplainedOutput`
|
||||
* In `SendQuizPoll#caption` is deprecated now
|
||||
* `explanationLimit` range was added as future replacement of `quizPollExplanationLimit`
|
||||
* `quizPollExplanationLimit` now is deprecated
|
||||
* Extensions `toMarkdownExplanations`, `toMarkdownV2Explanations` and `toHtmlExplanations` was added
|
||||
* Typealias `FullTextSourcesList` was added
|
||||
* All extensions `fullEntitiesList` now return `FullTextSourcesList`
|
||||
* All extensions of `List<TextSource>` now are extensions for `FullTextSourcesList`
|
||||
* `TelegramBotAPI-extensions-api`:
|
||||
* `sendQuizPoll` now is using `explanation` parameter instead of `caption`
|
||||
|
||||
## 0.26.0
|
||||
|
||||
* `Common`:
|
||||
* Versions updates:
|
||||
* `Klock`: `1.10.0` -> `1.10.3`
|
||||
* `TelegramBotAPI`:
|
||||
* Request `SendDice` was added (calling [sendDice](https://core.telegram.org/bots/api#senddice))
|
||||
* Class `Dice` was added (type [dice](https://core.telegram.org/bots/api#dice))
|
||||
* Class `DiceContent` was added (for including it in [message](https://core.telegram.org/bots/api#message) object)
|
||||
* `BotCommand` was added
|
||||
* `GetMyCommands` request was added
|
||||
* `SetMyCommands` request was added
|
||||
* `GetMe` now is object instead of class
|
||||
* `GetMe` was replaced into package `com.github.insanusmokrassar.TelegramBotAPI.requests.bot.GetMe`
|
||||
* `CreateNewStickerSet` renamed to `CreateStaticNewStickerSet`
|
||||
* `CreateNewAnimatedStickerSet` request was added (it handle work with `tgs_sticker`)
|
||||
* `StickerSet#thumb` was added
|
||||
* `AddStickerToSet` renamed to `AddStaticStickerToSet`
|
||||
* `AddAnimatedStickerToSet` request was added
|
||||
* `SetStickerSetThumb` request was added
|
||||
* Most of sticker actions now implements `StandardStickerSetAction` instead of `StickerSetAction`
|
||||
* `getUpdatesLimit` was added to be ensure in get updates limit
|
||||
* `GetUpdates` now will check count of requesting updates and throw exception if it is not in range `1 .. 100`
|
||||
* `GetUpdates#limit` now is not nullable and by default set up to 100
|
||||
* `TelegramBotAPI-extensions-api`:
|
||||
* Extensions `sendDice` was added
|
||||
* Extension `getMyCommands` request was added
|
||||
* Extension `setMyCommands` request was added
|
||||
* Extension `getMe` was replaced into package `com.github.insanusmokrassar.TelegramBotAPI.extensions.api.bot.GetMeKt.getMe`
|
||||
* **All extensions `createNewStickerSet` was renamed to `createNewStaticStickerSet`**
|
||||
* Extensions `createNewAnimatedStickerSet` was added
|
||||
* **All extensions `addStickerToSet` was renamed to `addStaticStickerToSet`**
|
||||
* Extensions `addAnimatedStickerToSet` was added
|
||||
* Extensions `setStickerSetThumb` was added
|
||||
* Extension `startGettingUpdates` now will drop `SentMediaGroupUpdate` in case if it is the last in updates group
|
||||
and size of retrieved updates is equal to 100 (max count of retrieved updates)
|
||||
* Extensions `getUpdates` now will receive only not nullable `limit` parameter
|
||||
|
||||
### 0.26.4
|
||||
|
||||
* `TelegramBotAPI`:
|
||||
* Now any getting of updates will return `UnknownUpdateType` when inside of deserialization will be
|
||||
`SerializationException` or `NotImplemented` error
|
||||
* `CallbackGame` currently is an object
|
||||
* It is possible to use `CallbackGame` for now
|
||||
* `CallbackGameInlineKeyboardButton` now will not accept `callbackGame` as income object
|
||||
* Now it is possible to pass exception handler in webhook
|
||||
|
||||
### 0.26.3
|
||||
|
||||
* `TelegramBotAPI`:
|
||||
* `CallbackGameInlineKeyboardButton` was added
|
||||
([Issue-79](https://github.com/InsanusMokrassar/TelegramBotAPI/issues/79),
|
||||
[PR-80](https://github.com/InsanusMokrassar/TelegramBotAPI/pull/80))
|
||||
* `UnknownInlineKeyboardButton` was added. It is unavailable for creating, but you can receive it, for example, in
|
||||
`InlineQueryResult`
|
||||
* `Update` now will be created even if was `SerializationException` inside of creating the update instance - in this
|
||||
case will be created `UnknownUpdateType`
|
||||
* `UnknownUpdateType$rawJson` value now is included (`JsonElement`)
|
||||
* **EXPERIMENTALLY** `BaseEditMessageUpdate#data` now is `CommonMessage<*>`
|
||||
* Suspend inline function `handleSafely` was added
|
||||
* `KtorRequestsExecutor` now use `handleSafely` instead of `try` with `supervisorScope`
|
||||
* `UpdatesPolling` now use `handleSafely` instead of `try` with `supervisorScope`
|
||||
|
||||
### 0.26.2
|
||||
|
||||
* `TelegramBotAPI`:
|
||||
* Now `EditMediaGroupUpdate` also extends `BaseEditMessageUpdate`
|
||||
* **EXPERIMENTALLY** Now all `TextSource` realisations will contain `source` field as a property inside of them
|
||||
* `TelegramBotAPI-extensions-api`:
|
||||
* `startGettingFlowsUpdates` extension which do not require filter (but return a new one) was added
|
||||
* `TelegramBotAPI-extensions-utils`:
|
||||
* Subproject was added
|
||||
* `filterBaseMessageUpdates`, `filterSentMediaGroupUpdates` and `filterEditMediaGroupUpdates` extensions was added
|
||||
* `filterCommandsWithArgs`, `filterExactCommands` and `filterCommandsInsideTextMessages` extensions was added
|
||||
* `asContentMessagesFlow`, `asChatEventsFlow` and `asUnknownMessagesFlow` extensions was added
|
||||
* `withContentType` extension was added
|
||||
* `onlyAnimationContentMessages` extension was added
|
||||
* `onlyAudioContentMessages` extension was added
|
||||
* `onlyContactContentMessages` extension was added
|
||||
* `onlyDiceContentMessages` extension was added
|
||||
* `onlyDocumentContentMessages` extension was added
|
||||
* `onlyGameContentMessages` extension was added
|
||||
* `onlyInvoiceContentMessages` extension was added
|
||||
* `onlyLocationContentMessages` extension was added
|
||||
* `onlyPhotoContentMessages` extension was added
|
||||
* `onlyPollContentMessages` extension was added
|
||||
* `onlyStickerContentMessages` extension was added
|
||||
* `onlyTextContentMessages` extension was added
|
||||
* `onlyVenueContentMessages` extension was added
|
||||
* `onlyVideoContentMessages` extension was added
|
||||
* `onlyVideoNoteContentMessages` extension was added
|
||||
* `onlyVoiceContentMessages` extension was added
|
||||
|
||||
### 0.26.1
|
||||
|
||||
* `TelegramBotAPI`:
|
||||
* `BotCommand` now will check and throw error in case when command or description lengths is/are incorrect
|
||||
* `StorageFile` now is common for all platforms
|
||||
* JavaScript realization was removed due to its redundancy
|
||||
* JVM realization was replaced with `fun` factory
|
||||
* `StorageFile` now able to accept any factory of `Input`
|
||||
* `StorageFileInfo` was added to avoid strange collisions with throws in `StorageFile`
|
||||
* Fixes issue with `hashTag` for markdown
|
||||
* `InvalidPhotoDimensionsException` was added for cases when `PHOTO_INVALID_DIMENSION` answer received
|
||||
* Other fixes
|
||||
|
||||
## 0.25.0
|
||||
|
||||
* Common:
|
||||
* Versions updates:
|
||||
* `Kotlin`: `1.3.61` -> `1.3.70`
|
||||
* `Kotlin coroutines`: `1.3.3` -> `1.3.5`
|
||||
* `Kotlin serialization`: `0.14.0` -> `0.20.0`
|
||||
* `Ktor`: `1.3.1` -> `1.3.2`
|
||||
* `Klock`: `1.8.7` -> `1.10.0`
|
||||
* `UUID`: `0.0.7` -> `0.1.0`
|
||||
* `TelegramBotAPI`:
|
||||
* `Bot` implementations (as and `Bot` itself) now have not nullable `username`
|
||||
* `File#toInputFile` extension now will throw error when file does not exists
|
||||
* `InlineKeyboardMarkup` will check that `PayInlineKeyboardButton` is the first in case if it is exists in
|
||||
`keyboard`
|
||||
* `makeLinkToMessage` now is not `PreviewFeature`
|
||||
* All deprecations was removed
|
||||
* `RequestException` now extends `io.ktor.utils.io.errors.IOException` instead of `kotlinx.io.IOException`
|
||||
* `Any#toJson` now is NOT `inline`
|
||||
* `FlowsUpdatesFilter` now as marked my annotation `FlowPreview`
|
||||
* `PathedFile#fullUrl` now is not `inline` function
|
||||
* `SimpleRequest#json` now is not `inline` and `internal` function
|
||||
* `FlowsUpdatesFilter` now have two additional flows: `pollAnswerFlow`, `unknownUpdateTypeFlow`
|
||||
* `ExtendedUser` (`typealias`) was added as a `PreviewFeature`
|
||||
|
||||
### 0.25.1
|
||||
|
||||
* Update kotlin: `1.3.70` -> `1.3.71`
|
||||
* Fix of error inside of update utils for media groups
|
||||
|
||||
## 0.24.0
|
||||
|
||||
* `TelegramBotAPI`:
|
||||
* All suspend functions for `RequestsExecutor` was removed (due to replacement into
|
||||
[TelegramBotAPI extensions project](TelegramBotAPI-extensions-api/README.md))
|
||||
* `ForwardFromChannelInfo#channelChat` now is `ChannelChat` instead of `Chat`
|
||||
* `TelegramBotAPI-extensions-api`:
|
||||
* Most part of sending media messages functions was removed and replaced with their `InputFile` args analogs
|
||||
|
||||
### 0.24.1
|
||||
|
||||
* `TelegramBotAPI`:
|
||||
* `UpdateReceiver` was replaced to the package `com.github.insanusmokrassar.TelegramBotAPI.updateshandlers`
|
||||
* All functions inside `com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.UpdatesPolling` are deprecated
|
||||
and will be removed in some soon versions. Their replacement are able inside `TelegramBotAPI-extensions-api`
|
||||
* `UpdatesFilter` is interface for now
|
||||
* Previous `UpdatesFilter` class was renamed to `SimpleUpdatesFilter` and for backward compatibility was added
|
||||
builder function `UpdatesFilter`, which will be removed in near releases
|
||||
* `FlowsUpdatesFilter` now implements `UpdatesFilter`
|
||||
* `BaseSentMessageUpdate` and `BaseEditMessageUpdate` interfaces was added
|
||||
* `EditChannelPostUpdate` now is implementing `BaseEditMessageUpdate` interface
|
||||
* `EditMessageUpdate` now is implementing `BaseEditMessageUpdate` interface
|
||||
* `ChannelPostUpdate` now is implementing `BaseSentMessageUpdate` interface
|
||||
* `MessageUpdate` now is implementing `BaseSentMessageUpdate` interface
|
||||
* `UpdatesPoller` and all its usages, childs and childs usages now are deprecated
|
||||
* `GetUpdates#timeout` type now is `Seconds` (in fact it is `Int` as previously)
|
||||
* `KtorRequestsExecutor` now is using a copy of incoming `HttpClient` object and install `HttpTimeout` feature
|
||||
* `AbstractRequestCallFactory` now setting up a custom delay in case if request is `GetUpdates`
|
||||
* `TelegramBotAPI-extensions-api`:
|
||||
* All functions from `com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.UpdatesPolling` now available
|
||||
in package `com.github.insanusmokrassar.TelegramBotAPI.extensions.api.updates.UpdatesPolling`
|
||||
* Now new method of getting updates available: `startGettingUpdates` with `UpdatesFilter` as incoming first
|
||||
parameter
|
||||
* `startGettingUpdates` with `receiver` and `allowedUpdates` parameters now will handle updates by itself
|
||||
|
||||
## 0.23.0 TelegramBotAPI 4.6
|
||||
|
||||
* `Poll` now is sealed class
|
||||
* `RegularPoll` type was added to represent polls with type `regular`
|
||||
* `QuizPoll` type was added to represent polls with type `quiz`
|
||||
* `UnknownPollType` type was added to represent polls which are unknown in current version
|
||||
* `AnonymousPollOption` was renamed to `SimplePollOption`
|
||||
* `SendPoll` was rewritten as sealed class
|
||||
* `SendRegularPoll` was created and represent `sendPoll` method with type `regular`
|
||||
* `SendQuizPoll` was created and represent `sendPoll` method with type `quiz`
|
||||
* `Poll#createRequest` extension was added
|
||||
* `PollAnswerUpdate` type of update was added
|
||||
* `PollAnswer` type was added
|
||||
* `UpdatesFilter` now support work with `PollAnswerUpdate`
|
||||
* `language` field in PreTextSource now correctly passed from telegram MessageEntities
|
||||
* `KeyboardButton` now is sealed class
|
||||
* Fixed problem of incorrect representation of this class (any type of request can be created separately)
|
||||
* Added new types of `KeyboardButton`:
|
||||
* `UnknownKeyboardButton`
|
||||
* `SimpleKeyboardButton`
|
||||
* `RequestContactKeyboardButton`
|
||||
* `RequestLocationKeyboardButton`
|
||||
* `RequestPollKeyboardButton`
|
||||
* Added new type `KeyboardButtonPollType`:
|
||||
* `UnknownKeyboardButtonPollType`
|
||||
* `RegularKeyboardButtonPollType`
|
||||
* `QuizKeyboardButtonPollType`
|
||||
* `User` now is sealed class
|
||||
* `CommonUser` was added as representation of default `User`
|
||||
* `Bot` was added as representation of bot user (it is sealed class)
|
||||
* `ExtendedBot` with additional info
|
||||
* `CommonBot` with simple info
|
||||
* `GetMe` now return `ExtendedBot` object
|
||||
* Now extension `javaLocale` is extension for `CommonUser`
|
||||
|
||||
### 0.23.1
|
||||
|
||||
* Versions updates:
|
||||
* Klock `1.8.6` -> `1.8.7`
|
||||
* Ktor `1.3.0` -> `1.3.1`
|
||||
* Now it is possible to get updates by polling with custom executor engine
|
||||
* `CommonMultipartFileRequest` now is internal
|
||||
* Added `LiveLocation` class for more useful tracking live locations
|
||||
* `InvoiceOfPayment` is renamed to `InvoiceContent` and now is `MessageContent` instead of `PaymentInfo`
|
||||
* `SendInvoice` now return `ContentMessage<InvoiceContent>`
|
||||
* `paymentInfo` inside of `CommonMessageImpl` now can be set only to `SuccessfulPaymentInfo`
|
||||
* Added `RecordVideoNoteAction` and `UploadVideoNoteAction` for `record_video_note` and `upload_video_note` actions
|
||||
* For most part of messages was added `RequestsExecutor` extensions for more useful way of usage
|
||||
* `toInputFile` extensions now will return more exact types
|
||||
* Now it is possible to send broadcast channels size for `FlowsUpdatesFilter`
|
||||
|
||||
### 0.23.2
|
||||
|
||||
* Fixes in `InputMedia` - `media` field was not included to serialization
|
||||
|
||||
### 0.23.3 Project separating prepare version
|
||||
|
||||
__API Extensions__
|
||||
|
||||
* Project created
|
||||
* For `SendPhoto` was added new functions for uploading of `MultipartFile`
|
||||
* `deleteWebhook` extension for `RequestsExecutor` was added
|
||||
|
||||
__Telegram Bot API__
|
||||
|
||||
* All `RequestsExecutor` extensions related to Telegram Bots API was replaced into `API Extensions` project
|
||||
|
||||
## 0.22.0
|
||||
|
||||
* **`KtorCallFactory` must return `HttpStatement` instead of `HttpClientCall`**
|
||||
* `SendMessage` was renamed to `SendTextMessage` and previous `SendMessage` is deprecated
|
||||
* All `AbleToBe*` interfaces was renamed to `Possibly*`
|
||||
* `AbleToBeEditedMessage` -> `PossiblyEditedMessage`
|
||||
* `AbleToBeForwardedMessage` -> `PossiblyForwardedMessage`
|
||||
* `AbleToBeMarkedUp` -> `PossiblyMarkedUp`
|
||||
* `AbleToBeEditedMessage` -> `PossiblyEditedMessage`
|
||||
* `ForwardedMessage` type was renamed to `ForwardInfo`
|
||||
* `AnonymousForwardedMessage` -> `AnonymousForwardInfo`
|
||||
* `UserForwardedMessage` -> `UserForwardInfo`
|
||||
* `ForwardedFromChannelMessage` -> `ForwardFromChannelInfo`
|
||||
* `PossiblyForwardedMessage#forwarded` field now renamed to `forwardInfo`
|
||||
* All serializers in library now are `internal`. **If you have used some of them or I have marked as internal by a
|
||||
mistake - don't hesitate to say this.**
|
||||
* `EditChatMessage` now have generic type and extends `SimpleRequest<ContentMessage<GenericType>>`
|
||||
* `ResendableContent` now extends `Request<out Message>` instead of `Request<Message>`
|
||||
* Most part of requests have changed return type. They are listed below:
|
||||
<details>
|
||||
|
||||
* `ForwardMessage`
|
||||
* `GetChatAdministrators`
|
||||
* `EditChatMessageLiveLocation`
|
||||
* `StopChatMessageLiveLocation`
|
||||
* `EditChatMessageText`
|
||||
* `EditChatMessageCaption`
|
||||
* `EditChatMessageMedia`
|
||||
* `EditChatMessageReplyMarkup`
|
||||
* `SendAnimation`
|
||||
* `SendAudio`
|
||||
* `SendContact`
|
||||
* `SendLocation`
|
||||
* `SendTextMessage`
|
||||
* `SendPoll`
|
||||
* `SendVenue`
|
||||
* `SendGame`
|
||||
* `SendDocument`
|
||||
* `SendMediaGroup`
|
||||
* `SendPhoto`
|
||||
* `SendVideo`
|
||||
* `SendVideoNote`
|
||||
* `SendVoice`
|
||||
* `SendSticker`
|
||||
|
||||
</details>
|
||||
* Changed type of `createResend`
|
||||
<details>
|
||||
|
||||
* `GameContent`
|
||||
* `LocationContent`
|
||||
* `PollContent`
|
||||
* `TextContent`
|
||||
* `VenueContent`
|
||||
* `AnimationContent`
|
||||
* `AudioContent`
|
||||
* `DocumentContent`
|
||||
* `ContactContent`
|
||||
* `PhotoContent`
|
||||
* `VideoContent`
|
||||
* `VideoNoteContent`
|
||||
* `VoiceContent`
|
||||
* `StickerContent`
|
||||
|
||||
</details>
|
||||
* Version updates:
|
||||
* Ktor `1.2.6` -> `1.3.0`
|
||||
|
||||
### 0.22.1 MediaContent#asInputMedia
|
||||
|
||||
* All `MediaContent` instances now can create their `InputMedia` analog
|
||||
* New annotation `PreviewFeature` was added to mark new thing as preview for the time
|
||||
while they can work incorrectly
|
||||
* Added links utils:
|
||||
* `makeLinkToMessage` have two signatures - for direct creating using username and for abstract creating using
|
||||
chat id
|
||||
|
||||
### 0.22.2 CashTag and independent updates handling
|
||||
|
||||
* `cashtag` entity type was added
|
||||
* Several `Unknown*` realizations was added:
|
||||
* `UnknownUpdateType`
|
||||
* `UnknownMessageType`
|
||||
* `UnknownChatType`
|
||||
* `UnknownCallbackQueryType`
|
||||
* `UpdatesFilter` now have one additional income callback: `unknownUpdateTypeCallback`
|
||||
* `createSimpleUpdateFilter` can receive one more callback: `unknownCallback` (for `unknownUpdateTypeCallback`)
|
||||
|
||||
## 0.21.0 TelegramBotAPI 4.5
|
||||
|
||||
* _**All `MessageEntity`'es now are replaced with `TextPart`**_
|
||||
* Added support of strikethrough and underline
|
||||
* Added `UnderlineTextSource`
|
||||
* Added `StrikethroughTextSource`
|
||||
* Added support in `RawMessageEntity`
|
||||
* Added support of `MarkdownV2`
|
||||
* Now will not be thrown exception when there is income unknown type of `RawMessageEntity`. Instead of this will be
|
||||
created `RegularTextSource` with the same text
|
||||
* Fixed problem that usually string formatting did not trigger escaping of control characters
|
||||
* Actualized work with `pre` type of text - now it is possible to use `language` for formatting of text
|
||||
* Removed constructor of `TextMentionTextSource`, which was deprecated previously
|
||||
* All `TelegramMediaFile` instances now have field `fileUniqueId`, which represents `file_unique_id` field from API
|
||||
* Now `ChatPhoto` have two additional fields: `smallFileUniqueId` and `bigFileUniqueId`
|
||||
* Now any administrator object instance have `customTitle` nullable field
|
||||
* Added the new request `SetChatAdministratorCustomTitle` to manage the custom titles of administrators promoted by the
|
||||
bot.
|
||||
* Added the field `slowModeDelay` to the `ExtendedSupergroupChat` objects.
|
||||
|
||||
* `CaptionedInput` now have extension `fullEntitiesList` which will return list of `TextPart` with `RegularSource`'s
|
||||
* `TextPart` added - it will be used as part of some text and can be not related to telegram bot
|
||||
* `MultilevelTextSource` was added - it is type of `TextSource`, which can have subsources as parts of this text
|
||||
* In all `TextSource`s all fields now are lazy for avoiding of potential risk for performance issues
|
||||
|
||||
* Updates in versions:
|
||||
* Coroutines `1.3.2` -> `1.3.3`
|
||||
* Klock `1.8.0` -> `1.8.6`
|
||||
* UUID `0.0.6` -> `0.0.7`
|
||||
|
||||
## 0.20.0 MPP Migration
|
||||
|
||||
* Time library change: `joda-time` -> `com.soywiz.korlibs.klock:klock`
|
||||
* `Currencied` now using as `currency` value with type `String`
|
||||
* For `Java` there is `Currencied#javaCurrency` extension function, which will give an old currency work way
|
||||
* `User` now have no field `userLocale`
|
||||
* For `Java` there is `User#javaLocale` extension function, which will give an old locale work way
|
||||
|
||||
### 0.20.1
|
||||
|
||||
* `User` now implement `PrivateChat`
|
||||
* `TextMentionMessageEntity` now accept `PrivateChat` instead of `User` in main constructor
|
||||
* `TextMentionMessageEntity` now contains not user, but contains `PrivateChat`
|
||||
* Fixed: `TextMentionMessageEntity#asHtmlSource` previously worked incorrect
|
||||
* Abstraction `TextSource`
|
||||
* `MessageEntity` now extends `TextSource`
|
||||
* `createFormattedText` method now accept `List<TextSource>`
|
||||
* `createHtmlText` method now accept `List<TextSource>`
|
||||
* `createMarkdownText` method now accept `List<TextSource>`
|
||||
* A lot of `TextSource` implementors was added. More info [here](src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/MessageEntity/textsources/)
|
||||
* All `MessageEntity` implementations now are using new `TextSource` analogues as delegates
|
||||
|
||||
### 0.20.2
|
||||
|
||||
* New exception type `MessageIsNotModifierException` was added
|
||||
* New exception type `MessageToEditNotFoundException` was added
|
||||
* Now exceptions in requests will be caught correctly
|
||||
|
||||
### 0.20.3
|
||||
|
||||
* Now `LeftChatMamber` is a `CommonEvent`
|
||||
|
||||
### 0.20.4
|
||||
|
||||
* Now `setWebhook` supports setting up of path for listening
|
||||
* Now `setWebhook` supports custom listen address even if certificate was not provided
|
||||
|
||||
## 0.19.0 ImplicitReflection removing
|
||||
|
||||
* Total rework of serialization for requests. Now all `SimpleRequest` children have:
|
||||
* `requestSerializer` - field, which must provide serializer of current type
|
||||
* `resultDeserializer` - field, which must provide opportunity to deserializer result. Previously it was a function
|
||||
* Removed deprecations:
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.WebhookPrivateKeyConfig`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.UpdatesFilter`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.createSimpleUpdateFilter`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.utils.createMarkdownText`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.utils.toMarkdownCaption`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.utils.toMarkdownText`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.updateshandlers.KtorUpdatesPoller`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.CaptionedMediaContent`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.types.message.CommonForwardedMessage`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.CaptionedInputMedia`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.types.games.Game#text`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.types.games.Game#textEntities`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.types.files.PathedFileKt.makeFileUrl`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.types.files.PathedFileKt.downloadingFilesBaseUrl`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.base.Data`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ByInlineMessageId`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ByMessageId`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.bot.RequestException`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.bot.exceptions.ReplyMessageNotFound`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.bot.BaseRequestsExecutor#baseUrl`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.bot.BaseRequestsExecutor#constructor(token, hostUrl)`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.KtorRequestsExecutor#constructor(token, client, hostUrl, callsFactories, excludeDefaultFactories, requestsLimiter, jsonFormatter)`
|
||||
* `com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.KtorRequestsExecutor#constructor(token, engine, hostUrl)`
|
||||
|
||||
## 0.18.0 Raws cleaning
|
||||
|
||||
* Made internal and not available outside of library:
|
||||
* `RawMessage`
|
||||
* `RawUpdate`
|
||||
* `RawChatMember`
|
||||
* `RawMessageEntity`
|
||||
* `RawInlineQuery`
|
||||
* `RawCallbackQuery`
|
||||
* `RawChosenInlineResult`
|
||||
|
||||
* All `RawMessage` usages was replaced with `Message` interface (with some of other raw classes was made the same things)
|
||||
* `TelegramBotAPIMessageDeserializationStrategy` was created. It was used for deserialization of Telegram Bot API
|
||||
incoming messages
|
||||
* `TelegramBotAPIMessageDeserializeOnlySerializer` was created. It **MUST NOT** be used to serialize messages
|
||||
* Update of description
|
||||
* Make `Game` object a little bit more standartizated
|
||||
* `Game` now is not serializable and have no additional trash, related to serialization
|
||||
* `TelegramFile` was removed
|
||||
|
||||
### 0.18.1 Libraries update
|
||||
|
||||
* Update libraries:
|
||||
* `kotlin`: 1.3.41 -> 1.3.61
|
||||
* `kotlin coroutines`: 1.2.2 -> 1.3.2
|
||||
* `kotlin serialization`: 0.11.1 -> 0.14.0
|
||||
* `joda time`: 2.10.3 -> 2.10.5
|
||||
* `ktor`: 1.2.3 -> 1.2.6
|
||||
* `BotAction` now will be deserialized in a little bit other way
|
||||
* `BotActionSerializer` now is internal
|
||||
* Most part of serializers now are objects (instead of classes as was previously)
|
||||
|
||||
## 0.17.0 July 29, 2019 API Update
|
||||
|
||||
Libraries updates:
|
||||
|
||||
|
||||
4
LICENSE
4
LICENSE
@@ -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.
|
||||
|
||||
275
README.md
275
README.md
@@ -1,178 +1,137 @@
|
||||
# TelegramBotAPI
|
||||
|
||||
[ ](https://bintray.com/insanusmokrassar/StandardRepository/TelegramBotAPI/_latestVersion)
|
||||
[](https://jenkins.insanusmokrassar.space/job/TelegramBotAPI_master__publishing/)
|
||||
| Common info | [](https://github.com/KotlinBy/awesome-kotlin) [](https://travis-ci.com/InsanusMokrassar/TelegramBotAPI) [Small survey](https://forms.gle/tnjuExdSKEr32ygKA)|
|
||||
| -------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| Useful links | [](https://t.me/InMoTelegramBotAPI) [](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 | [](https://bintray.com/insanusmokrassar/TelegramBotAPI/tgbotapi.core/_latestVersion) [](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi.core) |
|
||||
| TelegramBotAPI Extensions status | [](https://bintray.com/insanusmokrassar/TelegramBotAPI/tgbotapi.extensions.api/_latestVersion) [](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi.extensions.api) |
|
||||
| TelegramBotAPI Util Extensions status | [](https://bintray.com/insanusmokrassar/TelegramBotAPI/tgbotapi.extensions.utils/_latestVersion) [](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi.extensions.utils) |
|
||||
| TelegramBotAPI All status | [](https://bintray.com/insanusmokrassar/TelegramBotAPI/tgbotapi/_latestVersion) [](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi) |
|
||||
|
||||
## What is it?
|
||||
|
||||
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).
|
||||
|
||||
## Compatibility
|
||||
|
||||
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).
|
||||
|
||||
## How to implement library?
|
||||
|
||||
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:
|
||||
|
||||
[ ](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:
|
||||
|
||||
```kotlin
|
||||
val requestsExecutor: RequestsExecutor = ...
|
||||
requestsExecutor.execute(GetMe())
|
||||
```
|
||||
|
||||
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.
|
||||
**At the time of publication of version `0.28.0` there are errors in serialization plugins like
|
||||
[kotlinx.serialization#1004](https://github.com/Kotlin/kotlinx.serialization/issues/1004). It is possible, that both JVM
|
||||
and JS version may work improperly in some cases with `kotlinx.serialization` version `1.0.0-RC`**
|
||||
|
||||
|
||||
### RequestsExecutor
|
||||
It is a complex of libraries for working with `TelegramBotAPI` in type-safe and strict way as much as it possible. In
|
||||
the list of this complex currently next projects:
|
||||
|
||||
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`:
|
||||
* [TelegramBotAPI Core](tgbotapi.core/README.md) - core of library. In fact it is independent library and can be used alone
|
||||
without any additional library
|
||||
* [TelegramBotAPI API Extensions](tgbotapi.extensions.api/README.md) - contains extensions (mostly for
|
||||
`RequestsExecutor`), which allows to use the core library in more pleasant way
|
||||
* [TelegramBotAPI Util Extensions](tgbotapi.extensions.utils/README.md) - contains extensions for more comfortable
|
||||
work with commands, updates and other different things
|
||||
* [TelegramBotAPI](tgbotapi/README.md) - concentration of all previously mentioned libraries
|
||||
|
||||
```kotlin
|
||||
val requestsExecutor = KtorRequestsExecutor(TOKEN)
|
||||
```
|
||||
Most part of some specific solves or unuseful
|
||||
moments are describing by official [Telegram Bot API](https://core.telegram.org/bots/api).
|
||||
|
||||
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).
|
||||
## JavaScript notes
|
||||
|
||||
Besides, for correct usage of this, you must implement in your project both one of engines for client and server
|
||||
Ktor libraries:
|
||||
### Versions before `0.28.0`
|
||||
|
||||
In case if you are want to use this library inside of browser, you will need additional settings (thanks for help to [Alexander Nozik](https://research.jetbrains.org/researchers/altavir)):
|
||||
|
||||
<details>
|
||||
<summary>Gradle build script help (for versions before 0.28.0)</summary>
|
||||
|
||||
```groovy
|
||||
dependencies {
|
||||
// ...
|
||||
implementation "io.ktor:ktor-server-cio:$ktor_version"
|
||||
implementation "io.ktor:ktor-client-okhttp:$ktor_version"
|
||||
// ...
|
||||
/* ... */
|
||||
|
||||
implementation "com.github.insanusmokrassar:TelegramBotAPI:$tgbot_api_version"
|
||||
implementation "com.github.insanusmokrassar:TelegramBotAPI-extensions-api:$tgbot_api_version" // optional
|
||||
implementation "com.github.insanusmokrassar:TelegramBotAPI-extensions-utils:$tgbot_api_version" // optional
|
||||
|
||||
/* Block of dependencies for correct building in browser */
|
||||
implementation(npm("fs"))
|
||||
implementation(npm("bufferutil"))
|
||||
implementation(npm("utf-8-validate"))
|
||||
implementation(npm("abort-controller"))
|
||||
implementation(npm("text-encoding"))
|
||||
}
|
||||
|
||||
/* ... */
|
||||
|
||||
kotlin {
|
||||
target {
|
||||
browser {
|
||||
/* Block for fix of exception in absence of some functionality, https://github.com/ktorio/ktor/issues/1339 */
|
||||
dceTask {
|
||||
dceOptions {
|
||||
keep("ktor-ktor-io.\$\$importsForInline\$\$.ktor-ktor-io.io.ktor.utils.io")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
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:
|
||||
</details>
|
||||
|
||||
## Ok, where should I start?
|
||||
|
||||

|
||||
|
||||
In most cases, the most simple way will be to implement [TelegramBotAPI](TelegramBotAPI/README.md) - it contains
|
||||
all necessary tools for comfort usage of this library. If you want to exclude some libraries, you can implement just
|
||||
[TelegramBotAPI API Extensions](tgbotapi.extensions.api/README.md),
|
||||
[TelegramBotAPI Util Extensions](tgbotapi.extensions.utils/README.md) or even
|
||||
[TelegramBotAPI Core](tgbotapi.core/README.md).
|
||||
|
||||
If you want to dive deeper in the core of library or develop something for it - welcome to learn more from
|
||||
[TelegramBotAPI Core](tgbotapi.core/README.md) and our [Telegram Chat](https://teleg.one/InMoTelegramBotAPIChat).
|
||||
|
||||
Anyway, all libraries are very typical inside of them. Examples:
|
||||
|
||||
* In `TelegramBotAPI` common request look like `requestsExecutor.execute(SomeRequest())`
|
||||
* `tgbotapi.extensions.api` typical syntax look like `requestsExecutor.someRequest()` (in most cases it would be
|
||||
better to use `bot` name instead of `requestsExecutor`)
|
||||
* `tgbotapi.extensions.utils` will look like `filter.filterBaseMessageUpdates(chatId).filterExactCommands(Regex("^.*$"))...`
|
||||
|
||||
## Build instruction
|
||||
|
||||
If you want to build this project or to contribute, there are several recommendations:
|
||||
|
||||
### Build
|
||||
|
||||
In case if you want to just build project, run next command:
|
||||
|
||||
```bash
|
||||
./gradlew clean build
|
||||
```
|
||||
|
||||
On windows:
|
||||
|
||||
```
|
||||
gradlew.bat clean build
|
||||
```
|
||||
|
||||
### Publishing for work with your version locally
|
||||
|
||||
In case, if you want to work in your other projects using your modification (or some state) of this library,
|
||||
you can use next code:
|
||||
|
||||
```bash
|
||||
./gradlew clean build publishToMavenLocal
|
||||
```
|
||||
|
||||
On windows:
|
||||
|
||||
```
|
||||
gradlew.bat clean build publishToMavenLocal
|
||||
```
|
||||
|
||||
But you must remember, that in this case your local maven repo must be the first one from
|
||||
your project retrieving libraries:
|
||||
|
||||
```groovy
|
||||
dependencies {
|
||||
// ...
|
||||
implementation "io.ktor:ktor-client-okhttp:$ktor_version"
|
||||
// ...
|
||||
repositories {
|
||||
mavenLocal() // that must be the first one
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
}
|
||||
```
|
||||
|
||||
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.
|
||||
|
||||
## 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:
|
||||
|
||||
```kotlin
|
||||
requestsExecutor.setWebhook(
|
||||
WEBHOOK_URL,
|
||||
INTERNAL_PORT,
|
||||
filter,
|
||||
ENGINE_FACTORY
|
||||
)
|
||||
```
|
||||
|
||||
Here:
|
||||
|
||||
* `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
|
||||
Besides, for your own version you can change variable `library_version` in the file [gradle.properties](./gradle.properties).
|
||||
|
||||
125
TelegramBotAPI.minder
Normal file
125
TelegramBotAPI.minder
Normal file
@@ -0,0 +1,125 @@
|
||||
<?xml version="1.0"?>
|
||||
<minder version="1.11.1">
|
||||
<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="-320.56697591145837" y="-10.028254191080691" scale="0.75"/>
|
||||
<images/>
|
||||
<nodes>
|
||||
<node id="0" posx="748.88964843749955" posy="119.42341613769531" width="472" height="168" side="top" fold="false" treesize="603" 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="764.88964843749955" posy="135.42341613769531" maxwidth="488.96484375">
|
||||
<text data="tgbotapi.core 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="781.88964843749955" posy="387.42341613769531" width="406" height="145" side="bottom" fold="false" treesize="603" 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="797.88964843749955" posy="403.42341613769531" maxwidth="419.451171875">
|
||||
<text data="TelegramBotAPI extensions Family of projects which are fully based on TelegramBotAPI and extend its functionality"/>
|
||||
</nodename>
|
||||
<nodenote></nodenote>
|
||||
<nodes>
|
||||
<node id="2" posx="683.38964843749955" posy="632.42341613769531" 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="699.38964843749955" posy="648.42341613769531" maxwidth="295.90315755208337">
|
||||
<text data="tgbotapi.extensions.api 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="979.38964843749955" posy="632.42341613769531" width="307" height="168" side="bottom" fold="false" treesize="307" 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="995.38964843749955" posy="648.42341613769531" maxwidth="299.252197265625">
|
||||
<text data="tgbotapi.extensions.utils Extensions project with utils things which will make easier different operations"/>
|
||||
</nodename>
|
||||
<nodenote></nodenote>
|
||||
</node>
|
||||
</nodes>
|
||||
</node>
|
||||
</nodes>
|
||||
</node>
|
||||
<node id="4" posx="815.52319335937455" posy="948.04447937011719" width="329" height="213" side="top" fold="false" treesize="329" layout="Downwards" group="false">
|
||||
<style branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="388" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true"/>
|
||||
<nodename posx="831.52319335937455" posy="964.04447937011719" maxwidth="394.3671875">
|
||||
<text data="tgbotapi Here included all available TelegramBotAPI libraries: * tgbotapi.core * tgbotapi.extensions.api * tgbotapi.extensions.utils">
|
||||
<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="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)"/>
|
||||
</color>
|
||||
</text>
|
||||
</nodename>
|
||||
<nodenote></nodenote>
|
||||
</node>
|
||||
</nodes>
|
||||
<groups/>
|
||||
<connections>
|
||||
<connection from_id="2" to_id="4" drag_x="905.70642089843705" drag_y="891.23394775390625" 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="4" drag_x="1056.456420898437" drag_y="885.48394775390625" color="#777777">
|
||||
<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
1
_config.yml
Normal file
@@ -0,0 +1 @@
|
||||
theme: jekyll-theme-cayman
|
||||
20
badges/chat.svg
Normal file
20
badges/chat.svg
Normal 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
20
badges/kdocs.svg
Normal 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 |
54
build.gradle
54
build.gradle
@@ -1,48 +1,48 @@
|
||||
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"
|
||||
private String getCurrentVersionChangelog() {
|
||||
OutputStream changelogDataOS = new ByteArrayOutputStream()
|
||||
exec {
|
||||
standardOutput = changelogDataOS
|
||||
commandLine './changelog_info_retriever', "$library_version", 'CHANGELOG.md'
|
||||
}
|
||||
|
||||
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"
|
||||
return changelogDataOS.toString().trim()
|
||||
}
|
||||
|
||||
compileKotlin {
|
||||
kotlinOptions {
|
||||
freeCompilerArgs = [ disableImplicitReflectionSerializerAnnotation ]
|
||||
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
24
changelog_info_retriever
Executable 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
|
||||
96
docs/build.gradle
Normal file
96
docs/build.gradle
Normal file
@@ -0,0 +1,96 @@
|
||||
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(BOTH) {
|
||||
browser()
|
||||
nodejs()
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
commonMain {
|
||||
dependencies {
|
||||
implementation kotlin('stdlib')
|
||||
|
||||
project.parent.subprojects.forEach {
|
||||
if (it != project) {
|
||||
api it
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Closure includeSourcesInDokka(String... approximateNames) {
|
||||
return {
|
||||
parent.subprojects.forEach {
|
||||
if (it != project) {
|
||||
File srcDir = new File(it.projectDir.absolutePath, "src")
|
||||
if (srcDir.exists() && srcDir.isDirectory()) {
|
||||
srcDir.eachFile { file ->
|
||||
if (approximateNames.any { file.name.contains(it) } && file.isDirectory()) {
|
||||
String pathToSrc = file.absolutePath
|
||||
sourceRoot {
|
||||
path = pathToSrc
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dokka {
|
||||
outputFormat = 'html'
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
multiplatform {
|
||||
global {
|
||||
skipDeprecated = true
|
||||
|
||||
sourceLink {
|
||||
path = "./"
|
||||
url = "https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/"
|
||||
lineSuffix = "#L"
|
||||
}
|
||||
}
|
||||
|
||||
common(includeSourcesInDokka("commonMain"))
|
||||
js(includeSourcesInDokka("jsMain"/*, "commonMain"*/))
|
||||
jvm(includeSourcesInDokka("jvmMain"/*, "commonMain"*/))
|
||||
}
|
||||
}
|
||||
3
docs/gradle.properties
Normal file
3
docs/gradle.properties
Normal file
@@ -0,0 +1,3 @@
|
||||
dokka_version=0.10.1
|
||||
|
||||
org.gradle.jvmargs=-Xmx1024m
|
||||
@@ -1,13 +1,21 @@
|
||||
org.gradle.jvmargs=-Xmx1024m
|
||||
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.4.10
|
||||
kotlin_coroutines_version=1.3.9
|
||||
kotlin_serialisation_runtime_version=1.0.0-RC2
|
||||
klock_version=1.12.1
|
||||
uuid_version=0.2.2
|
||||
ktor_version=1.4.1
|
||||
|
||||
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
|
||||
javax_activation_version=1.1.1
|
||||
|
||||
disableImplicitReflectionSerializerAnnotation=-Xexperimental=kotlinx.serialization.ImplicitReflectionSerializer
|
||||
library_group=dev.inmo
|
||||
library_version=0.29.0
|
||||
|
||||
gradle_bintray_plugin_version=1.8.5
|
||||
github_release_plugin_version=2.2.12
|
||||
|
||||
3
gradle/wrapper/gradle-wrapper.properties
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -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.6.1-bin.zip
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
5
renovate.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"extends": [
|
||||
"config:base"
|
||||
]
|
||||
}
|
||||
811
resources/TelegramBotAPI-libraries-hierarchy.svg
Normal file
811
resources/TelegramBotAPI-libraries-hierarchy.svg
Normal file
@@ -0,0 +1,811 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="623pt" height="1061pt" viewBox="0 0 623 1061" 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 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-35">
|
||||
<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-36">
|
||||
<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-37">
|
||||
<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-38">
|
||||
<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-39">
|
||||
<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="surface46506">
|
||||
<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 984.889648 203.423416 C 984.889648 298.423416 984.889648 298.423416 984.889648 393.423416 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||
<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 984.889648 396.423416 L 992.920898 384.954666 L 976.858398 384.954666 Z M 984.889648 396.423416 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||
<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 984.889648 521.423416 C 984.889648 579.923416 831.389648 579.923416 831.389648 638.423416 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||
<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 831.389648 641.423416 L 840.776367 631.036697 L 824.842773 629.048416 Z M 831.389648 641.423416 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||
<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 694.389648 653.423416 L 694.389648 643.423416 L 968.389648 643.423416 L 968.389648 653.423416 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||
<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 984.889648 521.423416 C 984.889648 579.923416 1132.889648 579.923416 1132.889648 638.423416 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||
<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 1132.889648 641.423416 L 1139.491211 629.079666 L 1123.545898 630.997635 Z M 1132.889648 641.423416 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 317 534 L 602 534 L 602 680 L 317 680 Z M 317 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 990.389648 653.423416 L 990.389648 643.423416 L 1275.389648 643.423416 L 1275.389648 653.423416 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="322" y="557"/>
|
||||
<use xlink:href="#glyph0-2" x="333" y="557"/>
|
||||
<use xlink:href="#glyph0-3" x="344" y="557"/>
|
||||
<use xlink:href="#glyph0-4" x="355" y="557"/>
|
||||
<use xlink:href="#glyph0-1" x="366" y="557"/>
|
||||
<use xlink:href="#glyph0-5" x="377" y="557"/>
|
||||
<use xlink:href="#glyph0-6" x="388" y="557"/>
|
||||
<use xlink:href="#glyph0-7" x="399" y="557"/>
|
||||
<use xlink:href="#glyph0-8" x="410" y="557"/>
|
||||
<use xlink:href="#glyph0-9" x="421" y="557"/>
|
||||
<use xlink:href="#glyph0-10" x="432" y="557"/>
|
||||
<use xlink:href="#glyph0-1" x="443" y="557"/>
|
||||
<use xlink:href="#glyph0-9" x="454" y="557"/>
|
||||
<use xlink:href="#glyph0-11" x="465" y="557"/>
|
||||
<use xlink:href="#glyph0-12" x="476" y="557"/>
|
||||
<use xlink:href="#glyph0-7" x="487" y="557"/>
|
||||
<use xlink:href="#glyph0-4" x="498" y="557"/>
|
||||
<use xlink:href="#glyph0-11" x="509" y="557"/>
|
||||
<use xlink:href="#glyph0-12" x="520" y="557"/>
|
||||
<use xlink:href="#glyph0-8" x="531" y="557"/>
|
||||
<use xlink:href="#glyph0-22" x="542" y="557"/>
|
||||
<use xlink:href="#glyph0-1" x="553" y="557"/>
|
||||
<use xlink:href="#glyph0-7" x="564" y="557"/>
|
||||
<use xlink:href="#glyph0-23" x="575" y="557"/>
|
||||
<use xlink:href="#glyph0-12" x="586" y="557"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-13" x="322" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-10" x="333" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="344" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="355" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-11" x="366" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="377" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="388" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="399" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-11" x="410" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="421" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="432" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-6" x="443" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-15" x="454" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="465" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-16" x="476" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="487" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-17" x="498" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="509" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="520" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-34" x="531" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="542" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="553" y="601.875977"/>
|
||||
<use xlink:href="#glyph0-24" x="564" y="601.875977"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-22" x="322" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="333" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="344" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-23" x="355" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="366" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="377" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="388" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-24" x="399" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="410" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-11" x="421" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-2" x="432" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="443" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="454" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-34" x="465" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-24" x="476" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="487" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-17" x="498" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-24" x="509" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="520" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-34" x="531" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="542" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-23" x="553" y="624.875977"/>
|
||||
<use xlink:href="#glyph0-23" x="564" y="624.875977"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-19" x="322" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-5" x="333" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-20" x="344" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="355" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="366" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="377" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-5" x="388" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="399" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="410" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="421" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-15" x="432" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="443" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-30" x="454" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="465" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-18" x="476" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-18" x="487" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="498" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-15" x="509" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="520" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-11" x="531" y="647.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="542" y="647.875977"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-4" x="322" y="670.875977"/>
|
||||
<use xlink:href="#glyph0-6" x="333" y="670.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="344" y="670.875977"/>
|
||||
<use xlink:href="#glyph0-15" x="355" y="670.875977"/>
|
||||
<use xlink:href="#glyph0-5" x="366" y="670.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="377" y="670.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="388" y="670.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="399" y="670.875977"/>
|
||||
<use xlink:href="#glyph0-11" x="410" y="670.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="421" y="670.875977"/>
|
||||
</g>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 119.5 289 L 503.5 289 L 503.5 412 L 119.5 412 Z M 119.5 289 "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-25" x="124.5" y="312"/>
|
||||
<use xlink:href="#glyph0-9" x="135.5" y="312"/>
|
||||
<use xlink:href="#glyph0-23" x="146.5" y="312"/>
|
||||
<use xlink:href="#glyph0-9" x="157.5" y="312"/>
|
||||
<use xlink:href="#glyph0-2" x="168.5" y="312"/>
|
||||
<use xlink:href="#glyph0-15" x="179.5" y="312"/>
|
||||
<use xlink:href="#glyph0-5" x="190.5" y="312"/>
|
||||
<use xlink:href="#glyph0-19" x="201.5" y="312"/>
|
||||
<use xlink:href="#glyph0-26" x="212.5" y="312"/>
|
||||
<use xlink:href="#glyph0-4" x="223.5" y="312"/>
|
||||
<use xlink:href="#glyph0-1" x="234.5" y="312"/>
|
||||
<use xlink:href="#glyph0-27" x="245.5" y="312"/>
|
||||
<use xlink:href="#glyph0-28" x="256.5" y="312"/>
|
||||
<use xlink:href="#glyph0-29" x="267.5" y="312"/>
|
||||
<use xlink:href="#glyph0-14" x="278.5" y="312"/>
|
||||
<use xlink:href="#glyph0-9" x="289.5" y="312"/>
|
||||
<use xlink:href="#glyph0-10" x="300.5" y="312"/>
|
||||
<use xlink:href="#glyph0-1" x="311.5" y="312"/>
|
||||
<use xlink:href="#glyph0-9" x="322.5" y="312"/>
|
||||
<use xlink:href="#glyph0-11" x="333.5" y="312"/>
|
||||
<use xlink:href="#glyph0-12" x="344.5" y="312"/>
|
||||
<use xlink:href="#glyph0-7" x="355.5" y="312"/>
|
||||
<use xlink:href="#glyph0-4" x="366.5" y="312"/>
|
||||
<use xlink:href="#glyph0-11" x="377.5" y="312"/>
|
||||
<use xlink:href="#glyph0-12" x="388.5" y="312"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-35" x="124.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-5" x="135.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-19" x="146.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="157.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-23" x="168.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-32" x="179.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="190.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="201.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-18" x="212.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="223.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-6" x="234.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-15" x="245.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="256.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-16" x="267.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="278.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-17" x="289.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="300.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="311.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="322.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-34" x="333.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-24" x="344.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="355.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-17" x="366.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-24" x="377.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="388.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-5" x="399.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-15" x="410.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="421.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="432.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-18" x="443.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-22" x="454.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-23" x="465.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-23" x="476.5" y="356.875977"/>
|
||||
<use xlink:href="#glyph0-32" x="487.5" y="356.875977"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-3" x="124.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-5" x="135.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="146.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="157.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-30" x="168.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="179.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="190.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-11" x="201.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="212.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-25" x="223.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="234.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-23" x="245.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="256.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-2" x="267.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-15" x="278.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-5" x="289.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-19" x="300.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-26" x="311.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="322.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="333.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-27" x="344.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-28" x="355.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-29" x="366.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="377.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-5" x="388.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-11" x="399.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-30" x="410.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="421.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="432.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-10" x="443.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="454.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="465.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-11" x="476.5" y="379.875977"/>
|
||||
<use xlink:href="#glyph0-30" x="487.5" y="379.875977"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-7" x="124.5" y="402.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="135.5" y="402.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="146.5" y="402.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="157.5" y="402.875977"/>
|
||||
<use xlink:href="#glyph0-18" x="168.5" y="402.875977"/>
|
||||
<use xlink:href="#glyph0-22" x="179.5" y="402.875977"/>
|
||||
<use xlink:href="#glyph0-11" x="190.5" y="402.875977"/>
|
||||
<use xlink:href="#glyph0-17" x="201.5" y="402.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="212.5" y="402.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="223.5" y="402.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="234.5" y="402.875977"/>
|
||||
<use xlink:href="#glyph0-11" x="245.5" y="402.875977"/>
|
||||
<use xlink:href="#glyph0-5" x="256.5" y="402.875977"/>
|
||||
<use xlink:href="#glyph0-23" x="267.5" y="402.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="278.5" y="402.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="289.5" y="402.875977"/>
|
||||
<use xlink:href="#glyph0-32" x="300.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 86.5 21 L 536.5 21 L 536.5 167 L 86.5 167 Z M 86.5 21 "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="91.5" y="44"/>
|
||||
<use xlink:href="#glyph0-2" x="102.5" y="44"/>
|
||||
<use xlink:href="#glyph0-3" x="113.5" y="44"/>
|
||||
<use xlink:href="#glyph0-4" x="124.5" y="44"/>
|
||||
<use xlink:href="#glyph0-1" x="135.5" y="44"/>
|
||||
<use xlink:href="#glyph0-5" x="146.5" y="44"/>
|
||||
<use xlink:href="#glyph0-6" x="157.5" y="44"/>
|
||||
<use xlink:href="#glyph0-7" x="168.5" y="44"/>
|
||||
<use xlink:href="#glyph0-8" x="179.5" y="44"/>
|
||||
<use xlink:href="#glyph0-17" x="190.5" y="44"/>
|
||||
<use xlink:href="#glyph0-4" x="201.5" y="44"/>
|
||||
<use xlink:href="#glyph0-15" x="212.5" y="44"/>
|
||||
<use xlink:href="#glyph0-9" x="223.5" y="44"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-36" x="91.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="102.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="113.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="124.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="135.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-6" x="146.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-15" x="157.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="168.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-16" x="179.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="190.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-17" x="201.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="212.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="223.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-34" x="234.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="245.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="256.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-24" x="267.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="278.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-27" x="289.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-28" x="300.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-29" x="311.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-8" x="322.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="333.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-29" x="344.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="355.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="366.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="377.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="388.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="399.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-11" x="410.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="421.5" y="88.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="432.5" y="88.875977"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-15" x="91.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="102.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-17" x="113.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="124.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-19" x="135.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-19" x="146.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="157.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-11" x="168.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-30" x="179.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="190.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-30" x="201.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="212.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="223.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="234.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="245.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-22" x="256.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="267.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="278.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="289.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="300.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="311.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="322.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="333.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-15" x="344.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="355.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-21" x="366.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-22" x="377.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="388.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="399.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="410.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="421.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="432.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-30" x="443.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="454.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-15" x="465.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="476.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-17" x="487.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="498.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-23" x="509.5" y="111.875977"/>
|
||||
<use xlink:href="#glyph0-32" x="520.5" y="111.875977"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-5" x="91.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-11" x="102.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-30" x="113.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="124.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-3" x="135.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="146.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="157.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="168.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="179.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-15" x="190.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="201.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="212.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="223.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="234.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-22" x="245.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="256.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="267.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="278.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-5" x="289.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="300.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-14" x="311.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-23" x="322.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="333.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-5" x="344.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="355.5" y="134.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="366.5" y="134.875977"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="91.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-2" x="102.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-3" x="113.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="124.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="135.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-5" x="146.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-6" x="157.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="168.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-8" x="179.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="190.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-10" x="201.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-1" x="212.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-9" x="223.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-11" x="234.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="245.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="256.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-4" x="267.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-11" x="278.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-12" x="289.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-8" x="300.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-5" x="311.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-6" x="322.5" y="157.875977"/>
|
||||
<use xlink:href="#glyph0-7" x="333.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 153.132812 849.621094 L 460.132812 849.621094 L 460.132812 1040.621094 L 153.132812 1040.621094 Z M 153.132812 849.621094 "/>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-1" x="158.132812" y="872.621094"/>
|
||||
<use xlink:href="#glyph0-2" x="169.132812" y="872.621094"/>
|
||||
<use xlink:href="#glyph0-3" x="180.132812" y="872.621094"/>
|
||||
<use xlink:href="#glyph0-4" x="191.132812" y="872.621094"/>
|
||||
<use xlink:href="#glyph0-1" x="202.132812" y="872.621094"/>
|
||||
<use xlink:href="#glyph0-5" x="213.132812" y="872.621094"/>
|
||||
<use xlink:href="#glyph0-6" x="224.132812" y="872.621094"/>
|
||||
<use xlink:href="#glyph0-7" x="235.132812" y="872.621094"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-37" x="158.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-9" x="169.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-15" x="180.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-9" x="191.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-14" x="202.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-7" x="213.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-11" x="224.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-17" x="235.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-23" x="246.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-22" x="257.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-30" x="268.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-9" x="279.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-30" x="290.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-14" x="301.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-5" x="312.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-23" x="323.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-23" x="334.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-14" x="345.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-5" x="356.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-31" x="367.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-5" x="378.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-7" x="389.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-23" x="400.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-5" x="411.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-3" x="422.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-23" x="433.132812" y="917.49707"/>
|
||||
<use xlink:href="#glyph0-9" x="444.132812" y="917.49707"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-25" x="158.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-9" x="169.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-23" x="180.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-9" x="191.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-2" x="202.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-15" x="213.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-5" x="224.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-19" x="235.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-26" x="246.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-4" x="257.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-1" x="268.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-27" x="279.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-28" x="290.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-29" x="301.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-14" x="312.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-23" x="323.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-7" x="334.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-3" x="345.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-15" x="356.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-5" x="367.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-15" x="378.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-7" x="389.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-9" x="400.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-12" x="411.132812" y="940.49707"/>
|
||||
<use xlink:href="#glyph0-38" x="422.132812" y="940.49707"/>
|
||||
</g>
|
||||
<g style="fill:rgb(100%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-39" x="158.132812" y="985.373047"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-14" x="169.132812" y="985.373047"/>
|
||||
<use xlink:href="#glyph0-1" x="180.132812" y="985.373047"/>
|
||||
<use xlink:href="#glyph0-2" x="191.132812" y="985.373047"/>
|
||||
<use xlink:href="#glyph0-3" x="202.132812" y="985.373047"/>
|
||||
<use xlink:href="#glyph0-4" x="213.132812" y="985.373047"/>
|
||||
<use xlink:href="#glyph0-1" x="224.132812" y="985.373047"/>
|
||||
<use xlink:href="#glyph0-5" x="235.132812" y="985.373047"/>
|
||||
<use xlink:href="#glyph0-6" x="246.132812" y="985.373047"/>
|
||||
<use xlink:href="#glyph0-7" x="257.132812" y="985.373047"/>
|
||||
<use xlink:href="#glyph0-8" x="268.132812" y="985.373047"/>
|
||||
<use xlink:href="#glyph0-17" x="279.132812" y="985.373047"/>
|
||||
<use xlink:href="#glyph0-4" x="290.132812" y="985.373047"/>
|
||||
<use xlink:href="#glyph0-15" x="301.132812" y="985.373047"/>
|
||||
<use xlink:href="#glyph0-9" x="312.132812" y="985.373047"/>
|
||||
</g>
|
||||
<g style="fill:rgb(100%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-39" x="158.132812" y="1008.373047"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-14" x="169.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-1" x="180.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-2" x="191.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-3" x="202.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-4" x="213.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-1" x="224.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-5" x="235.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-6" x="246.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-7" x="257.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-8" x="268.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-9" x="279.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-10" x="290.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-1" x="301.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-9" x="312.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-11" x="323.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-12" x="334.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-7" x="345.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-4" x="356.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-11" x="367.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-12" x="378.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-8" x="389.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-5" x="400.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-6" x="411.132812" y="1008.373047"/>
|
||||
<use xlink:href="#glyph0-7" x="422.132812" y="1008.373047"/>
|
||||
</g>
|
||||
<g style="fill:rgb(100%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-39" x="158.132812" y="1031.373047"/>
|
||||
</g>
|
||||
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||
<use xlink:href="#glyph0-14" x="169.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-1" x="180.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-2" x="191.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-3" x="202.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-4" x="213.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-1" x="224.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-5" x="235.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-6" x="246.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-7" x="257.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-8" x="268.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-9" x="279.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-10" x="290.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-1" x="301.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-9" x="312.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-11" x="323.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-12" x="334.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-7" x="345.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-4" x="356.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-11" x="367.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-12" x="378.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-8" x="389.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-22" x="400.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-1" x="411.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-7" x="422.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-23" x="433.132812" y="1031.373047"/>
|
||||
<use xlink:href="#glyph0-12" x="444.132812" y="1031.373047"/>
|
||||
</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 877.31543 816.423416 C 896.026367 869.962479 915.170898 916.16951 934.745117 955.04451 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(46.666667%,46.666667%,46.666667%);fill-opacity:1;" d="M 261.355469 845.621094 L 263.226562 832.757812 L 249.90625 839.464844 Z M 261.355469 845.621094 "/>
|
||||
<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 1082.803711 793.423416 C 1066.94043 862.298416 1047.674805 916.16951 1025.006836 955.04451 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(46.666667%,46.666667%,46.666667%);fill-opacity:1;" d="M 351.617188 845.621094 L 363.421875 840.175781 L 350.539062 832.664062 Z M 351.617188 845.621094 "/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 80 KiB |
@@ -1,18 +1,5 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
/*
|
||||
// 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"
|
||||
include ":docs"
|
||||
|
||||
@@ -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>
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts
|
||||
|
||||
interface MimeTyped {
|
||||
val mimeType: String? // TODO::replace by something like enum or interface
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts
|
||||
|
||||
interface Performerable {
|
||||
val performer: String?
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts
|
||||
|
||||
interface Titled {
|
||||
val title: String?
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,7 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
|
||||
|
||||
interface ChatRequest {
|
||||
val chatId: ChatIdentifier
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
|
||||
|
||||
interface DisableNotification {
|
||||
val disableNotification: Boolean
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineMessageIdentifier
|
||||
|
||||
interface InlineMessageAction {
|
||||
val inlineMessageId: InlineMessageIdentifier
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier
|
||||
|
||||
interface MessageAction: ChatRequest {
|
||||
val messageId: MessageIdentifier
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||
|
||||
interface ReplyMarkup {
|
||||
val replyMarkup: KeyboardMarkup?
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier
|
||||
|
||||
interface ReplyMessageId {
|
||||
val replyToMessageId: MessageIdentifier?
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.TelegramDate
|
||||
|
||||
interface UntilDate {
|
||||
val untilDate: TelegramDate?
|
||||
}
|
||||
@@ -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))
|
||||
}
|
||||
@@ -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?
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
@@ -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?
|
||||
}
|
||||
@@ -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
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
@@ -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))
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
@@ -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())
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
@@ -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)
|
||||
)
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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())
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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())
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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?
|
||||
}
|
||||
@@ -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?
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
@@ -1,23 +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 kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class EditInlineMessageCaption(
|
||||
@SerialName(inlineMessageIdField)
|
||||
override val inlineMessageId: InlineMessageIdentifier,
|
||||
@SerialName(captionField)
|
||||
override val text: String,
|
||||
@SerialName(parseModeField)
|
||||
override val parseMode: ParseMode? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: InlineKeyboardMarkup? = null
|
||||
) : EditInlineMessage, EditTextChatMessage, EditReplyMessage {
|
||||
override fun method(): String = editMessageCaptionMethod
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.media
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.MultipartFile
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts.*
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMedia
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage
|
||||
import kotlinx.serialization.*
|
||||
|
||||
const val editMessageMediaMethod = "editMessageMedia"
|
||||
|
||||
@Serializable
|
||||
data class EditChatMessageMedia(
|
||||
@SerialName(chatIdField)
|
||||
override val chatId: ChatIdentifier,
|
||||
@SerialName(messageIdField)
|
||||
override val messageId: MessageIdentifier,
|
||||
@SerialName(mediaField)
|
||||
override val media: InputMedia,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: InlineKeyboardMarkup? = null
|
||||
) : EditChatMessage, EditReplyMessage, EditMediaMessage {
|
||||
|
||||
init {
|
||||
if (media.file is MultipartFile) {
|
||||
throw IllegalArgumentException("For editing of media messages you MUST use file id (according to documentation)")
|
||||
}
|
||||
}
|
||||
|
||||
override fun method(): String = editMessageMediaMethod
|
||||
override fun resultSerializer(): KSerializer<RawMessage> = RawMessage.serializer()
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.text
|
||||
|
||||
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 editMessageTextMethod = "editMessageText"
|
||||
|
||||
@Serializable
|
||||
data class EditChatMessageText(
|
||||
@SerialName(chatIdField)
|
||||
override val chatId: ChatIdentifier,
|
||||
@SerialName(messageIdField)
|
||||
override val messageId: MessageIdentifier,
|
||||
@SerialName(textField)
|
||||
override val text: String,
|
||||
@SerialName(parseModeField)
|
||||
override val parseMode: ParseMode? = null,
|
||||
@SerialName(disableWebPagePreviewField)
|
||||
override val disableWebPagePreview: Boolean? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: InlineKeyboardMarkup? = null
|
||||
) : EditChatMessage, EditTextChatMessage, EditReplyMessage, EditDisableWebPagePreviewMessage {
|
||||
|
||||
override fun method(): String = editMessageTextMethod
|
||||
override fun resultSerializer(): KSerializer<RawMessage> = RawMessage.serializer()
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.games
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.MessageAction
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.games.abstracts.GetGameHighScores
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class GetGameHighScoresByChat (
|
||||
@SerialName(userIdField)
|
||||
override val userId: UserId,
|
||||
@SerialName(chatIdField)
|
||||
override val chatId: ChatId,
|
||||
@SerialName(messageIdField)
|
||||
override val messageId: MessageIdentifier
|
||||
) : GetGameHighScores, MessageAction
|
||||
@@ -1,15 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.games
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.InlineMessageAction
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.games.abstracts.GetGameHighScores
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class GetGameHighScoresByInlineMessageId (
|
||||
@SerialName(userIdField)
|
||||
override val userId: UserId,
|
||||
@SerialName(inlineMessageIdField)
|
||||
override val inlineMessageId: InlineMessageIdentifier
|
||||
) : GetGameHighScores, InlineMessageAction
|
||||
@@ -1,16 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.games.abstracts
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.UserId
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.games.GameHighScore
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.internal.ArrayListSerializer
|
||||
|
||||
interface GetGameHighScores : SimpleRequest<List<GameHighScore>> {
|
||||
val userId: UserId
|
||||
|
||||
override fun method(): String = "getGameHighScores"
|
||||
override fun resultSerializer(): KSerializer<List<GameHighScore>> = GameHighScoresSerializer
|
||||
}
|
||||
|
||||
object GameHighScoresSerializer : KSerializer<List<GameHighScore>> by ArrayListSerializer(GameHighScore.serializer())
|
||||
@@ -1,16 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.games.abstracts
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.UserId
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.serializer
|
||||
|
||||
interface SetGameScore : SimpleRequest<Boolean> {
|
||||
val userId: UserId
|
||||
val score: Long
|
||||
val force: Boolean
|
||||
val disableEditMessage: Boolean
|
||||
|
||||
override fun method(): String = "setGameScore"
|
||||
override fun resultSerializer(): KSerializer<Boolean> = Boolean.serializer()
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.get
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.files.PathedFile
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.files.abstracts.fileIdField
|
||||
import kotlinx.serialization.*
|
||||
|
||||
@Serializable
|
||||
data class GetFile(
|
||||
@SerialName(fileIdField)
|
||||
val fileId: FileId
|
||||
): SimpleRequest<PathedFile> {
|
||||
override fun method(): String = "getFile"
|
||||
override fun resultSerializer(): KSerializer<PathedFile> = PathedFile.serializer()
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.get
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.stickerSetNameField
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.stickers.StickerSet
|
||||
import kotlinx.serialization.*
|
||||
|
||||
@Serializable
|
||||
data class GetStickerSet(
|
||||
@SerialName(stickerSetNameField)
|
||||
val name: String
|
||||
): SimpleRequest<StickerSet> {
|
||||
override fun method(): String = "getStickerSet"
|
||||
override fun resultSerializer(): KSerializer<StickerSet> = StickerSet.serializer()
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.send
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendChatMessageRequest
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.actions.BotAction
|
||||
import kotlinx.serialization.*
|
||||
import kotlinx.serialization.internal.BooleanSerializer
|
||||
|
||||
/**
|
||||
* Send notification to user which will be shown for 5 seconds or while user have no messages from bot
|
||||
*/
|
||||
@Serializable
|
||||
data class SendAction(
|
||||
@SerialName(chatIdField)
|
||||
override val chatId: ChatIdentifier,
|
||||
@SerialName(actionField)
|
||||
val action: BotAction
|
||||
): SendChatMessageRequest<Boolean> {
|
||||
override fun method(): String = "sendChatAction"
|
||||
override fun resultSerializer(): KSerializer<Boolean> = BooleanSerializer
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.send
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.*
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage
|
||||
import kotlinx.serialization.*
|
||||
|
||||
// TODO:: Add location tracker for tracking location
|
||||
@Serializable
|
||||
data class SendLocation(
|
||||
@SerialName(chatIdField)
|
||||
override val chatId: ChatIdentifier,
|
||||
@SerialName(latitudeField)
|
||||
override val latitude: Double,
|
||||
@SerialName(longitudeField)
|
||||
override val longitude: Double,
|
||||
@SerialName(livePeriodField)
|
||||
val livePeriod: Long? = null,
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(replyToMessageIdField)
|
||||
override val replyToMessageId: MessageIdentifier? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : SendMessageRequest<RawMessage>,
|
||||
ReplyingMarkupSendMessageRequest<RawMessage>,
|
||||
PositionedSendMessageRequest<RawMessage>
|
||||
{
|
||||
|
||||
override fun method(): String = "sendLocation"
|
||||
override fun resultSerializer(): KSerializer<RawMessage> = RawMessage.serializer()
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.send
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.DisableWebPagePreview
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.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.KeyboardMarkup
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage
|
||||
import kotlinx.serialization.*
|
||||
|
||||
@Serializable
|
||||
data class SendMessage(
|
||||
@SerialName(chatIdField)
|
||||
override val chatId: ChatIdentifier,
|
||||
@SerialName(textField)
|
||||
override val text: String,
|
||||
@SerialName(parseModeField)
|
||||
override val parseMode: ParseMode? = null,
|
||||
@SerialName(disableWebPagePreviewField)
|
||||
override val disableWebPagePreview: Boolean? = null,
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(replyToMessageIdField)
|
||||
override val replyToMessageId: MessageIdentifier? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : SendMessageRequest<RawMessage>,
|
||||
ReplyingMarkupSendMessageRequest<RawMessage>,
|
||||
TextableSendMessageRequest<RawMessage>,
|
||||
DisableWebPagePreview
|
||||
{
|
||||
init {
|
||||
if (text.length !in textLength) {
|
||||
throw IllegalArgumentException("Text must be in $textLength range")
|
||||
}
|
||||
}
|
||||
|
||||
override fun method(): String = "sendMessage"
|
||||
override fun resultSerializer(): KSerializer<RawMessage> = RawMessage.serializer()
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.send
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.ReplyingMarkupSendMessageRequest
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts.SendMessageRequest
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.RawMessage
|
||||
import kotlinx.serialization.*
|
||||
|
||||
@Serializable
|
||||
data class SendPoll(
|
||||
@SerialName(chatIdField)
|
||||
override val chatId: ChatIdentifier,
|
||||
@SerialName(questionField)
|
||||
val question: String,
|
||||
@SerialName(optionsField)
|
||||
val options: List<String>,
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(replyToMessageIdField)
|
||||
override val replyToMessageId: MessageIdentifier? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : SendMessageRequest<RawMessage>,
|
||||
ReplyingMarkupSendMessageRequest<RawMessage> {
|
||||
|
||||
init {
|
||||
if (question.length !in pollQuestionTextLength) {
|
||||
throw IllegalArgumentException("The length of questions for polls must be in $pollQuestionTextLength range, but was ${question.length}")
|
||||
}
|
||||
options.forEach {
|
||||
if (it.length !in pollOptionTextLength) {
|
||||
throw IllegalArgumentException("The length of question option text for polls must be in $pollOptionTextLength range, but was ${it.length}")
|
||||
}
|
||||
}
|
||||
if (options.size !in pollOptionsLimit) {
|
||||
throw IllegalArgumentException("The amount of question options for polls must be in $pollOptionsLimit range, but was ${options.size}")
|
||||
}
|
||||
}
|
||||
|
||||
override fun method(): String = "sendPoll"
|
||||
override fun resultSerializer(): KSerializer<RawMessage> = RawMessage.serializer()
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ReplyMarkup
|
||||
|
||||
interface ReplyingMarkupSendMessageRequest<T: Any>: SendMessageRequest<T>, ReplyMarkup
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user