Fix the conflicts

This commit is contained in:
Temirkhan Myrzamadi 2019-12-31 18:45:19 +06:00
commit 5628f7111b
157 changed files with 886 additions and 209 deletions

405
logo.svg Normal file
View file

@ -0,0 +1,405 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
id="svg8"
version="1.1"
viewBox="0 0 1000.1765 1000.1688"
height="1000.1688mm"
width="1000.1688mm">
<defs
id="defs2">
<radialGradient
id="radialGradient2098"
cx="257.63312"
cy="346.10947"
r="1837.1556"
fx="323.34329"
fy="313.63162"
gradientTransform="matrix(0.25369962,0,0,0.25369962,-147.14212,-160.64302)"
gradientUnits="userSpaceOnUse">
<stop
offset="0"
style="stop-color:#FF980E"
id="stop2086" />
<stop
offset="0.295012"
style="stop-color:#FF7139"
id="stop2088" />
<stop
offset="0.4846462"
style="stop-color:#FF5B51"
id="stop2090" />
<stop
offset="0.6260016"
style="stop-color:#FF4F5E"
id="stop2092" />
<stop
offset="0.73652"
style="stop-color:#f6374e;stop-opacity:0.97254902"
id="stop2094" />
<stop
offset="0.8428285"
style="stop-color:#f52d44;stop-opacity:1"
id="stop2096" />
</radialGradient>
<radialGradient
id="radialGradient7778"
cx="624.28052"
cy="138.58418"
r="3105.1294"
gradientTransform="matrix(0.9588647 0 0 0.9588647 1293.9r906006 17.7235451)"
gradientUnits="userSpaceOnUse">
<stop
offset="0.0535657"
style="stop-color:#FFF44F"
id="stop7768" />
<stop
offset="0.4572717"
style="stop-color:#FF980E"
id="stop7770" />
<stop
offset="0.5210502"
style="stop-color:#FF8424"
id="stop7772" />
<stop
offset="0.5831793"
style="stop-color:#FF7634"
id="stop7774" />
<stop
offset="0.639343"
style="stop-color:#FF7139"
id="stop7776" />
</radialGradient>
<linearGradient
y2="180"
x2="100.008"
y1="40.007999"
x1="160.008"
id="linearGradient7176"
gradientUnits="userSpaceOnUse">
<stop
id="stop7172"
offset="0"
stop-color="#37aee2"
style="stop-color:#ff3750;stop-opacity:0" />
<stop
id="stop7174"
offset="1"
stop-color="#1e96c8"
style="stop-color:#ffd865;stop-opacity:1" />
</linearGradient>
<linearGradient
gradientUnits="userSpaceOnUse"
id="b"
x1="160.008"
y1="40.007999"
x2="100.008"
y2="180">
<stop
style="stop-color:#37aee2;stop-opacity:0"
stop-color="#37aee2"
offset="0"
id="stop4892" />
<stop
style="stop-color:#1e96c8;stop-opacity:0"
stop-color="#1e96c8"
offset="1"
id="stop4894" />
</linearGradient>
<linearGradient
gradientUnits="userSpaceOnUse"
gradientTransform="scale(1.0919081,0.91582798)"
id="w"
x1="140.86748"
y1="147.14627"
x2="88.524704"
y2="112.05341">
<stop
style="stop-color:#a047bf;stop-opacity:1"
stop-color="#eff7fc"
offset="0"
id="stop4897" />
<stop
style="stop-color:#ee7e40;stop-opacity:1"
stop-color="#fff"
offset="1"
id="stop4899" />
</linearGradient>
<linearGradient
y2="180"
x2="100.008"
y1="40.007999"
x1="160.008"
gradientUnits="userSpaceOnUse"
id="linearGradient7166"
xlink:href="#b" />
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.25369962,0,0,0.25369962,116.95639,-406.02996)"
r="3105.1294"
cy="138.58418"
cx="624.28052"
id="SVGID_11_">
<stop
id="stop135"
style="stop-color:#FFF44F"
offset="0.0535657" />
<stop
id="stop137"
style="stop-color:#FF980E"
offset="0.4572717" />
<stop
id="stop139"
style="stop-color:#FF8424"
offset="0.5210502" />
<stop
id="stop141"
style="stop-color:#FF7634"
offset="0.587052" />
<stop
id="stop143"
style="stop-color:#FF7139"
offset="0.639343" />
</radialGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(4.4292543,-0.00937413,0.00863853,4.0816693,-654.99926,-176.9423)"
r="65.246368"
fy="60.625607"
fx="198.56102"
cy="60.625607"
cx="198.56102"
id="radialGradient1819"
xlink:href="#SVGID_7_" />
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.25369962,0,0,0.25369962,-147.14212,-160.64302)"
fy="313.63162"
fx="323.34329"
r="1837.1556"
cy="346.10947"
cx="257.63312"
id="SVGID_7_">
<stop
id="stop85"
style="stop-color:#FF980E"
offset="0" />
<stop
id="stop87"
style="stop-color:#FF7139"
offset="0.295012" />
<stop
id="stop89"
style="stop-color:#FF5B51"
offset="0.4846462" />
<stop
id="stop91"
style="stop-color:#FF4F5E"
offset="0.6260016" />
<stop
id="stop93"
style="stop-color:#FF4055"
offset="0.73652" />
<stop
id="stop95"
style="stop-color:#FF3750"
offset="0.8428285" />
</radialGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.26458333,0,0,0.26458333,-232.53772,-527.76884)"
fy="-153.06329"
fx="389.09302"
r="1876.7874"
cy="-119.88482"
cx="321.9653"
id="SVGID_1_">
<stop
id="stop3"
style="stop-color:#FFF44F"
offset="0" />
<stop
id="stop5"
style="stop-color:#FF980E"
offset="0.2948518" />
<stop
id="stop7"
style="stop-color:#FF5D36"
offset="0.4315208" />
<stop
id="stop9"
style="stop-color:#FF3750"
offset="0.5302083" />
<stop
id="stop11"
style="stop-color:#F5156C"
offset="0.7493189" />
<stop
id="stop13"
style="stop-color:#F1136E"
offset="0.7647903" />
<stop
id="stop15"
style="stop-color:#DA057A"
offset="0.8800957" />
<stop
id="stop17"
style="stop-color:#D2007F"
offset="0.9527844" />
</radialGradient>
<linearGradient
gradientTransform="matrix(0.49700557,0,0,0.49700557,7.2354759,-1184.0654)"
y2="1708.0002"
x2="477.68073"
y1="246.00212"
x1="1321.7657"
gradientUnits="userSpaceOnUse"
id="SVGID_12_">
<stop
id="stop2743"
style="stop-color:#FFF44F;stop-opacity:0.8"
offset="0" />
<stop
id="stop2745"
style="stop-color:#FFF44F;stop-opacity:0"
offset="0.75" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.25369962,0,0,0.25369962,-147.14212,-160.64302)"
fy="313.63162"
fx="323.34329"
r="1837.1556"
cy="346.10947"
cx="257.63312"
id="SVGID_7_-2">
<stop
id="stop85-9"
style="stop-color:#FF980E"
offset="0" />
<stop
id="stop87-1"
style="stop-color:#FF7139"
offset="0.295012" />
<stop
id="stop89-2"
style="stop-color:#FF5B51"
offset="0.4846462" />
<stop
id="stop91-7"
style="stop-color:#FF4F5E"
offset="0.6260016" />
<stop
id="stop93-0"
style="stop-color:#FF4055"
offset="0.73652" />
<stop
id="stop95-9"
style="stop-color:#FF3750"
offset="0.8428285" />
</radialGradient>
<linearGradient
gradientTransform="translate(-290.96154,-5.268689)"
gradientUnits="userSpaceOnUse"
y2="220.18013"
x2="24.136377"
y1="-7.9157548"
x1="238.16116"
id="linearGradient1127"
xlink:href="#SVGID_12_" />
</defs>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
style="display:inline"
transform="translate(-25.485081,874.03927)"
id="layer1">
<rect
ry="122.74884"
y="-873.87427"
x="25.485081"
height="1000.0077"
width="1000.0077"
id="rect99"
style="fill:#282828;fill-opacity:1;fill-rule:evenodd;stroke-width:0.24541904" />
<g
transform="matrix(3.4097882,0,0,3.4097882,-58.261564,-771.89541)"
id="g4557">
<path
transform="scale(0.26458333)"
style="fill:#f1f1f1;fill-opacity:1;stroke:#f1f1f1;stroke-width:10.54206085;stroke-opacity:1"
d="m 647.14258,-57.232422 c -274.72614,0 -498.32227,223.703512 -498.32227,498.324222 0,274.6207 223.70155,498.32226 498.32227,498.32226 274.6207,0 498.32422,-223.70156 498.32422,-498.32226 0,-274.62071 -223.70352,-498.324222 -498.32422,-498.324222 z m -0.74219,44.277344 a 32.785812,32.785812 0 0 1 0.004,0 32.680391,32.785812 0 0 1 31.83789,32.785156 32.786135,32.786135 0 0 1 -65.57227,0 32.785812,32.785812 0 0 1 33.73047,-32.785156 z m -74.10547,53.974609 50.4961,52.921875 c 11.38541,11.912534 30.25542,12.440064 42.16796,0.949219 l 56.50586,-53.871094 a 403.44469,403.44469 0 0 1 66.1543,18.777344 c 1.97576,0.407587 3.93673,0.970989 5.87695,1.730469 13.99934,5.479892 27.61358,11.724081 40.80079,18.671875 a 403.44469,403.44469 0 0 1 2.36523,1.269531 c 10.36827,5.551273 20.46754,11.537743 30.26953,17.943359 a 403.44469,403.44469 0 0 1 6.39844,4.269531 c 8.32464,5.66907 16.42445,11.64272 24.28711,17.90234 a 403.44469,403.44469 0 0 1 9.8125,8.05664 c 6.45209,5.47512 12.72445,11.15359 18.81836,17.01758 a 403.44469,403.44469 0 0 1 11.94922,11.9668 c 5.13237,5.3678 10.11852,10.87734 14.95117,16.52148 a 403.44469,403.44469 0 0 1 12.51172,15.37696 c 3.37107,4.35061 6.66483,8.76435 9.85937,13.2539 0.23859,0.33532 0.45279,0.6794 0.67383,1.02149 a 403.44469,403.44469 0 0 1 21.47266,32.93555 l -38.68946,87.28906 c -6.6415,15.07515 0.21195,32.78628 15.18164,39.5332 l 74.4258,32.99609 a 403.44469,403.44469 0 0 1 0.8437,69.99805 h -0.5 c -5.7455,78.10094 -33.7008,150.02515 -77.59567,209.47266 h 0.7168 a 403.44469,403.44469 0 0 1 -37.31836,43.2207 l -69.26172,-14.86328 c -16.12936,-3.47887 -32.04848,6.85115 -35.52734,22.98047 l -16.44532,76.74805 a 403.44469,403.44469 0 0 1 -36.45312,14.36328 c -0.0902,0.0369 -0.18261,0.0712 -0.27344,0.10742 a 403.44469,403.44469 0 0 1 -1.01367,0.375 c -0.24074,0.087 -0.47392,0.18338 -0.71875,0.26562 -40.39438,13.56934 -83.64335,20.92188 -128.60938,20.92188 -40.73374,0 -80.05693,-6.03481 -117.12695,-17.25781 -2.64112,-0.79961 -5.08556,-1.88567 -7.35742,-3.22071 A 403.44469,403.44469 0 0 1 477.09961,803.52734 L 460.6543,726.78125 c -3.47891,-16.12936 -19.29252,-26.46129 -35.42188,-22.98242 l -67.78515,14.54883 a 403.44469,403.44469 0 0 1 -21.21289,-24.19141 c -1.98,-1.33851 -3.76227,-2.94462 -5.30469,-4.875 -55.15082,-69.02256 -88.12305,-156.54162 -88.12305,-251.76172 0,-2.92892 0.34165,-5.66443 0.98047,-8.23242 a 403.44469,403.44469 0 0 1 2.23047,-35.21289 l 70.63086,-31.41602 c 15.07515,-6.74692 21.92856,-24.35258 15.18164,-39.42773 l -14.54883,-32.78516 h 0.26563 c -13.3252,-23.74604 -27.38086,-44.84375 -27.38086,-44.84375 10.41967,-18.87574 21.81773,-35.1234 34.7871,-52.17773 51.04777,-67.12628 122.64108,-117.779826 205.4043,-142.587892 2.17055,-0.650615 4.32668,-0.947976 6.47266,-0.953126 a 403.44469,403.44469 0 0 1 35.46484,-8.863281 z M 255.5,283.69727 a 32.785812,32.785812 0 0 1 0.006,0 32.785812,32.785812 0 0 1 31.83594,32.78711 32.785812,32.785812 0 0 1 -65.57032,0 A 32.785812,32.785812 0 0 1 255.5,283.69727 Z m 781.6934,1.47656 a 32.785812,32.785812 0 0 1 0.01,0 32.785812,32.785812 0 0 1 31.8379,32.78515 32.78615,32.78615 0 0 1 -65.5723,0 32.785812,32.785812 0 0 1 33.7286,-32.78515 z M 403.61523,745.33398 a 32.785812,32.785812 0 0 1 0.006,0.002 32.785812,32.785812 0 0 1 31.83789,32.78515 32.78613,32.78613 0 0 1 -65.57226,0 32.785812,32.785812 0 0 1 33.72851,-32.78711 z m 485.46289,1.47657 a 32.785812,32.785812 0 0 1 0.006,0 32.785812,32.785812 0 0 1 31.83594,32.78711 32.78613,32.78613 0 0 1 -65.57226,0 32.785812,32.785812 0 0 1 33.73046,-32.78711 z"
id="path4504" />
<path
style="fill:#f1f1f1;fill-opacity:1;fill-rule:evenodd;stroke:#f1f1f1;stroke-width:8.36776161;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="M 295.70761,116.70536 A 124.4844,124.4844 0 0 1 171.22322,241.18976 124.4844,124.4844 0 0 1 46.738819,116.70536 124.4844,124.4844 0 0 1 171.22322,-7.779039 124.4844,124.4844 0 0 1 295.70761,116.70536 Z m -2.34297,-12.02169 19.41321,12.02169 -19.41321,12.02168 16.67974,15.59193 -21.36569,8.00516 13.33264,18.54854 -22.56507,3.68181 9.48347,20.80784 -22.84399,-0.80889 5.2438,22.25825 -22.25825,-5.2438 0.80888,22.84399 -20.80783,-9.48346 -3.68181,22.56506 -18.54854,-13.33263 -8.00516,21.36568 -15.59193,-16.67974 -12.02168,19.41321 -12.02169,-19.41321 -15.59193,16.67974 -8.00515,-21.36568 -18.54854,13.33263 -3.68182,-22.56506 -20.807831,9.48346 0.808884,-22.84399 -22.258245,5.2438 5.243797,-22.25825 -22.843989,0.80889 9.483463,-20.80784 L 40.435106,170.87267 53.767739,152.32413 32.402055,144.31897 49.081793,128.72704 29.668586,116.70536 49.081793,104.68367 32.402055,89.091745 53.767739,81.086587 40.435106,62.538049 63.000169,58.856234 53.516706,38.048401 l 22.843989,0.808884 -5.243797,-22.258246 22.258245,5.243797 -0.808884,-22.8439882 20.807831,9.4834629 3.68182,-22.5650637 18.54854,13.33263359 8.00515,-21.36568459 15.59193,16.6797382 12.02169,-19.4132062 12.02168,19.4132062 15.59193,-16.6797382 8.00516,21.36568459 18.54854,-13.33263359 3.68181,22.5650637 20.80783,-9.4834629 -0.80888,22.8439882 22.25825,-5.243797 -5.2438,22.258246 22.84399,-0.808884 -9.48347,20.807833 22.56507,3.681815 -13.33264,18.548538 21.36569,8.005158 z"
id="path4506" />
</g>
<g
transform="matrix(2.9858713,0,0,2.9858713,167.26874,-732.2594)"
id="g4928">
<circle
style="fill:url(#linearGradient7166);fill-opacity:1"
cx="120"
cy="120"
r="120"
id="circle4904" />
<path
style="fill:#bf2543;fill-opacity:1"
d="m 98,175 c -3.8876,0 -3.227,-1.4679 -4.5678,-5.1695 L 82,132.2059 170,80"
id="path4906" />
<path
style="fill:#a92543;fill-opacity:1"
d="m 98,175 c 3,0 4.3255,-1.372 6,-3 l 16,-15.558 -19.958,-12.035"
id="path4908" />
<path
style="fill:url(#radialGradient1819);fill-opacity:1"
d="m 100.04,144.41 48.36,35.729 c 5.5185,3.0449 9.5014,1.4684 10.876,-5.1235 l 19.685,-92.763 c 2.0154,-8.0802 -3.0801,-11.745 -8.3594,-9.3482 l -115.59,44.571 c -7.8901,3.1647 -7.8441,7.5666 -1.4382,9.528 l 29.663,9.2583 68.673,-43.325 c 3.2419,-1.9659 6.2173,-0.90899 3.7752,1.2584"
id="path4910" />
</g>
<rect
y="-44.385658"
x="34.240719"
height="159.17772"
width="164.35423"
id="rect2241"
style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke-width:0.25622422" />
<g
transform="matrix(0.53235487,0,0,0.53235487,-27.283341,10.578064)"
id="g4557-3"
style="display:inline">
<path
style="fill:#282828;fill-opacity:1;stroke:#282828;stroke-width:2.78925347;stroke-opacity:1"
d="m -136.20958,-18.218258 c -72.68796,0 -131.84776,59.18822 -131.84776,131.848288 0,72.66006 59.1877,131.84776 131.84776,131.84776 72.660061,0 131.8482833,-59.1877 131.8482833,-131.84776 0,-72.660068 -59.1882223,-131.848288 -131.8482833,-131.848288 z m -0.19637,11.7150471 a 8.6745793,8.6745793 0 0 1 10e-4,0 8.6466867,8.6745793 0 0 1 8.42377,8.6744058 8.674665,8.674665 0 0 1 -17.34933,0 8.6745793,8.6745793 0 0 1 8.92452,-8.6744058 z m -19.60707,14.2807817 13.36042,14.0022462 c 3.01239,3.151858 8.00508,3.291434 11.15694,0.251148 l 14.95051,-14.2533942 a 106.74474,106.74474 0 0 1 17.503328,4.9681722 c 0.522753,0.107841 1.041593,0.256908 1.554943,0.457854 3.703992,1.449888 7.306093,3.101996 10.795209,4.940266 a 106.74474,106.74474 0 0 1 0.6258,0.335897 c 2.743271,1.468774 5.41537,3.052695 8.008813,4.747514 a 106.74474,106.74474 0 0 1 1.692921,1.129647 c 2.202561,1.499941 4.345635,3.080469 6.425964,4.73666 a 106.74474,106.74474 0 0 1 2.596224,2.131653 c 1.707115,1.448625 3.366677,2.951054 4.979024,4.502568 a 106.74474,106.74474 0 0 1 3.161565,3.166216 c 1.357939,1.42023 2.677192,2.877963 3.95583,4.371308 a 106.74474,106.74474 0 0 1 3.310393,4.068487 c 0.891929,1.151099 1.763403,2.318901 2.608625,3.506761 0.06313,0.08872 0.1198,0.179758 0.178284,0.270269 a 106.74474,106.74474 0 0 1 5.681308,8.714198 l -10.236586,23.09523 c -1.757231,3.988633 0.05608,8.674703 4.016808,10.459826 l 19.691826,8.730223 a 106.74474,106.74474 0 0 1 0.223229,18.52031 h -0.132291 c -1.520164,20.66421 -8.91667,39.69416 -20.530521,55.42298 h 0.189653 a 106.74474,106.74474 0 0 1 -9.873816,11.43547 l -18.325496,-3.93257 c -4.26756,-0.92045 -8.479494,1.8127 -9.399942,6.08025 l -4.351158,20.30625 a 106.74474,106.74474 0 0 1 -9.644887,3.80029 c -0.0239,0.01 -0.0483,0.0188 -0.0724,0.0284 a 106.74474,106.74474 0 0 1 -0.2682,0.0992 c -0.0637,0.023 -0.12539,0.0485 -0.19017,0.0703 -10.68768,3.59023 -22.13063,5.53558 -34.0279,5.53558 -10.77746,0 -21.18172,-1.59671 -30.98983,-4.56612 -0.6988,-0.21157 -1.34556,-0.49892 -1.94665,-0.85215 a 106.74474,106.74474 0 0 1 -11.86491,-4.53409 l -4.35116,-20.30574 c -0.92046,-4.26756 -5.10448,-7.00121 -9.37204,-6.08076 l -17.93482,3.84938 a 106.74474,106.74474 0 0 1 -5.61258,-6.40065 c -0.52387,-0.35415 -0.99543,-0.7791 -1.40353,-1.28984 -14.59199,-18.26222 -23.31589,-41.4183 -23.31589,-66.61196 0,-0.77494 0.0904,-1.49871 0.25942,-2.17816 a 106.74474,106.74474 0 0 1 0.59014,-9.31674 l 18.68775,-8.312159 c 3.98863,-1.785122 5.80193,-6.443287 4.01681,-10.43192 l -3.84938,-8.674407 h 0.0703 c -3.52562,-6.282806 -7.24452,-11.864908 -7.24452,-11.864908 2.75688,-4.994207 5.77261,-9.293067 9.20409,-13.805358 13.50639,-17.760495 32.44879,-31.162579 54.34656,-37.726379 0.57429,-0.172142 1.14476,-0.250819 1.71255,-0.252181 a 106.74474,106.74474 0 0 1 9.38341,-2.3450772 z m -83.81866,64.2084842 a 8.6745793,8.6745793 0 0 1 0.002,0 8.6745793,8.6745793 0 0 1 8.42326,8.674923 8.6745793,8.6745793 0 0 1 -17.34881,0 8.6745793,8.6745793 0 0 1 8.92396,-8.674923 z m 206.823047,0.390674 a 8.6745793,8.6745793 0 0 1 0.0026,0 8.6745793,8.6745793 0 0 1 8.423778,8.674404 8.674669,8.674669 0 0 1 -17.349338,0 8.6745793,8.6745793 0 0 1 8.924026,-8.674404 z M -200.64286,194.12744 a 8.6745793,8.6745793 0 0 1 0.002,5.3e-4 8.6745793,8.6745793 0 0 1 8.42378,8.6744 8.674665,8.674665 0 0 1 -17.34933,0 8.6745793,8.6745793 0 0 1 8.924,-8.67492 z m 128.445393,0.39067 a 8.6745793,8.6745793 0 0 1 0.0016,0 8.6745793,8.6745793 0 0 1 8.423259,8.67492 8.6746635,8.6746635 0 0 1 -17.349327,0 8.6745793,8.6745793 0 0 1 8.924518,-8.67492 z"
id="path4504-6" />
<path
style="fill:#282828;fill-opacity:1;fill-rule:evenodd;stroke:#282828;stroke-width:8.36776161;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="m -11.724928,113.62977 a 124.4844,124.4844 0 0 1 -124.484392,124.4844 124.4844,124.4844 0 0 1 -124.4844,-124.4844 124.4844,124.4844 0 0 1 124.4844,-124.484403 124.4844,124.4844 0 0 1 124.484392,124.484403 z m -2.34297,-12.02169 19.4132097,12.02169 -19.4132097,12.02168 16.6797397,15.59193 -21.3656897,8.00516 13.3326397,18.54854 -22.5650697,3.68181 9.48347,20.80784 -22.84399,-0.80889 5.2438,22.25825 -22.25825,-5.2438 0.80888,22.84399 -20.80783,-9.48346 -3.68181,22.56506 -18.548542,-13.33263 -8.00516,21.36568 -15.59193,-16.67974 -12.02168,19.41321 -12.02169,-19.41321 -15.59193,16.67974 -8.00515,-21.36568 -18.54854,13.33263 -3.68182,-22.56506 -20.80783,9.48346 0.80888,-22.84399 -22.25824,5.2438 5.2438,-22.25825 -22.84399,0.80889 9.48346,-20.80784 -22.56506,-3.68181 13.33263,-18.54854 -21.36568,-8.00516 16.67973,-15.59193 -19.4132,-12.02168 19.4132,-12.02169 -16.67973,-15.591929 21.36568,-8.005158 -13.33263,-18.548538 22.56506,-3.681815 -9.48346,-20.807833 22.84399,0.808884 -5.2438,-22.258246 22.25824,5.243797 -0.80888,-22.8439878 20.80783,9.4834629 3.68182,-22.5650641 18.54854,13.332634 8.00515,-21.365685 15.59193,16.6797386 12.02169,-19.4132066 12.02168,19.4132066 15.59193,-16.6797386 8.00516,21.365685 18.548542,-13.332634 3.68181,22.5650641 20.80783,-9.4834629 -0.80888,22.8439878 22.25825,-5.243797 -5.2438,22.258246 22.84399,-0.808884 -9.48347,20.807833 22.5650697,3.681815 -13.3326397,18.548538 21.3656897,8.005158 z"
id="path4506-7" />
</g>
<g
transform="matrix(2.9858713,0,0,2.9858713,1047.9069,-718.22402)"
id="g4928-3"
style="display:inline">
<path
id="path4906-0"
d="m -121.42796,67.483064 c -0.93128,0.03404 -1.91559,0.271144 -2.90546,0.720544 l -115.58979,44.570682 c -7.8901,3.1647 -7.84366,7.56642 -1.43777,9.52782 l 29.65763,9.25734 10.20069,33.56963 c 1.34081,3.70159 0.68066,5.17018 4.56826,5.17018 3,0 4.32487,-1.37279 5.99937,-3.00079 l 14.41311,-14.01404 29.98686,22.15398 c 5.51849,3.0449 9.5023,1.46827 10.87689,-5.12363 l 19.68418,-92.762936 c 1.63751,-6.565163 -1.41841,-10.216308 -5.45397,-10.06878 z"
style="fill:url(#linearGradient1127);fill-opacity:1;stroke-width:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 22 KiB

View file

@ -1,4 +1,6 @@
use derive_more::From;
use reqwest::StatusCode; use reqwest::StatusCode;
use thiserror::Error;
//<editor-fold desc="download"> //<editor-fold desc="download">
#[derive(Debug, Error, From)] #[derive(Debug, Error, From)]

View file

@ -1,16 +1,8 @@
#![allow(clippy::unit_arg)] // TODO
#![allow(clippy::ptr_arg)] // TODO
#![doc( #![doc(
html_logo_url = "https://github.com/teloxide/teloxide/raw/dev/ICON.png", html_logo_url = "https://github.com/teloxide/teloxide/raw/dev/logo.svg",
html_favicon_url = "https://github.com/teloxide/teloxide/raw/dev/ICON.png" html_favicon_url = "https://github.com/teloxide/teloxide/raw/dev/ICON.png"
)] )]
#![allow(clippy::match_bool)]
#[macro_use]
extern crate derive_more;
#[macro_use]
extern crate serde;
#[macro_use]
extern crate thiserror;
pub use bot::Bot; pub use bot::Bot;
pub use errors::{DownloadError, RequestError}; pub use errors::{DownloadError, RequestError};

View file

@ -1,4 +1,5 @@
use reqwest::StatusCode; use reqwest::StatusCode;
use serde::Deserialize;
use crate::{ use crate::{
requests::ResponseResult, requests::ResponseResult,

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use reqwest::multipart::Form; use reqwest::multipart::Form;
use crate::{ use crate::{

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::True, types::True,

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::InlineQueryResult, types::InlineQueryResult,

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::True, types::True,

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ShippingOption, True}, types::{ShippingOption, True},

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use reqwest::multipart::Form; use reqwest::multipart::Form;
use crate::{ use crate::{

View file

@ -1,7 +1,9 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, True},
}; };
use crate::types::{ChatId, True};
/// Use this method to delete a chat photo. Photos can't be changed for private chats. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Returns True on success. /// Use this method to delete a chat photo. Photos can't be changed for private chats. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Returns True on success.
#[serde_with_macros::skip_serializing_none] #[serde_with_macros::skip_serializing_none]

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, True}, types::{ChatId, True},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, True}, types::{ChatId, True},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::True, types::True,

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::True, types::True,

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, ParseMode, InlineKeyboardMarkup, Message}, types::{ChatId, ParseMode, InlineKeyboardMarkup, Message},

View file

@ -1,10 +1,9 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ParseMode, InlineKeyboardMarkup}, types::{ParseMode, InlineKeyboardMarkup, Message},
}; };
use crate::types::Message;
/// Use this method to edit captions of messages. On success, if edited message is sent by the bot, the edited Message is returned, otherwise True is returned. /// Use this method to edit captions of messages. On success, if edited message is sent by the bot, the edited Message is returned, otherwise True is returned.
#[serde_with_macros::skip_serializing_none] #[serde_with_macros::skip_serializing_none]

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, InlineKeyboardMarkup, Message}, types::{ChatId, InlineKeyboardMarkup, Message},

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use reqwest::multipart::Form; use reqwest::multipart::Form;
use crate::{ use crate::{

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use reqwest::multipart::Form; use reqwest::multipart::Form;
use crate::{ use crate::{

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, InlineKeyboardMarkup, Message}, types::{ChatId, InlineKeyboardMarkup, Message},

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, ParseMode, InlineKeyboardMarkup, Message}, types::{ChatId, ParseMode, InlineKeyboardMarkup, Message},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ParseMode, InlineKeyboardMarkup, Message}, types::{ParseMode, InlineKeyboardMarkup, Message},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::ChatId, types::ChatId,

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, Message}, types::{ChatId, Message},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, Chat}, types::{ChatId, Chat},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, ChatMember}, types::{ChatId, ChatMember},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, ChatMember}, types::{ChatId, ChatMember},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::ChatId, types::ChatId,

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::File, types::File,

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::GameHighScore, types::GameHighScore,

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::GameHighScore, types::GameHighScore,

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::User, types::User,

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::StickerSet, types::StickerSet,

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::Update, types::Update,

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::UserProfilePhotos, types::UserProfilePhotos,

View file

@ -1,7 +1,9 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::WebhookInfo,
}; };
use crate::types::WebhookInfo;
/// Use this method to get current webhook status. Requires no parameters. On success, returns a WebhookInfo object. If the bot is using getUpdates, will return an object with the url field empty. /// Use this method to get current webhook status. Requires no parameters. On success, returns a WebhookInfo object. If the bot is using getUpdates, will return an object with the url field empty.
#[derive(Debug, PartialEq, Eq, Hash, Clone, Deserialize, Serialize, Default)] #[derive(Debug, PartialEq, Eq, Hash, Clone, Deserialize, Serialize, Default)]

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, True}, types::{ChatId, True},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, True}, types::{ChatId, True},

View file

@ -1,7 +1,9 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, True},
}; };
use crate::types::{ChatId, True};
/// Use this method to pin a message in a group, a supergroup, or a channel. The bot must be an administrator in the chat for this to work and must have the can_pin_messages admin right in the supergroup or can_edit_messages admin right in the channel. Returns True on success. /// Use this method to pin a message in a group, a supergroup, or a channel. The bot must be an administrator in the chat for this to work and must have the can_pin_messages admin right in the supergroup or can_edit_messages admin right in the channel. Returns True on success.
#[serde_with_macros::skip_serializing_none] #[serde_with_macros::skip_serializing_none]

View file

@ -1,7 +1,9 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, True},
}; };
use crate::types::{ChatId, True};
/// Use this method to promote or demote a user in a supergroup or a channel. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Pass False for all boolean parameters to demote a user. Returns True on success. /// Use this method to promote or demote a user in a supergroup or a channel. The bot must be an administrator in the chat for this to work and must have the appropriate admin rights. Pass False for all boolean parameters to demote a user. Returns True on success.
#[serde_with_macros::skip_serializing_none] #[serde_with_macros::skip_serializing_none]

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, ChatPermissions, True}, types::{ChatId, ChatPermissions, True},

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use reqwest::multipart::Form; use reqwest::multipart::Form;
use crate::{ use crate::{

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use reqwest::multipart::Form; use reqwest::multipart::Form;
use crate::{ use crate::{

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, True}, types::{ChatId, True},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, ReplyMarkup, Message}, types::{ChatId, ReplyMarkup, Message},

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use reqwest::multipart::Form; use reqwest::multipart::Form;
use crate::{ use crate::{

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{InlineKeyboardMarkup, Message}, types::{InlineKeyboardMarkup, Message},

View file

@ -1,7 +1,9 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{LabeledPrice, InlineKeyboardMarkup, Message},
}; };
use crate::types::{LabeledPrice, InlineKeyboardMarkup, Message};
/// Use this method to send invoices. On success, the sent Message is returned. /// Use this method to send invoices. On success, the sent Message is returned.
#[serde_with_macros::skip_serializing_none] #[serde_with_macros::skip_serializing_none]

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, ReplyMarkup, Message}, types::{ChatId, ReplyMarkup, Message},

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use reqwest::multipart::Form; use reqwest::multipart::Form;
use crate::{ use crate::{

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, Message, ParseMode, ReplyMarkup}, types::{ChatId, Message, ParseMode, ReplyMarkup},

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use reqwest::multipart::Form; use reqwest::multipart::Form;
use crate::{ use crate::{

View file

@ -1,7 +1,9 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, ReplyMarkup, Message},
}; };
use crate::types::{ChatId, ReplyMarkup, Message};
/// Use this method to send a native poll. A native poll can't be sent to a private chat. On success, the sent Message is returned. /// Use this method to send a native poll. A native poll can't be sent to a private chat. On success, the sent Message is returned.
#[serde_with_macros::skip_serializing_none] #[serde_with_macros::skip_serializing_none]

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use reqwest::multipart::Form; use reqwest::multipart::Form;
use crate::{ use crate::{

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, ReplyMarkup, Message}, types::{ChatId, ReplyMarkup, Message},

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use reqwest::multipart::Form; use reqwest::multipart::Form;
use crate::{ use crate::{

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use reqwest::multipart::Form; use reqwest::multipart::Form;
use crate::{ use crate::{

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use reqwest::multipart::Form; use reqwest::multipart::Form;
use crate::{ use crate::{

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, True}, types::{ChatId, True},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, ChatPermissions, True}, types::{ChatId, ChatPermissions, True},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, InputFile, True}, types::{ChatId, InputFile, True},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, True}, types::{ChatId, True},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, True}, types::{ChatId, True},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{Message, ChatId}, types::{Message, ChatId},

View file

@ -1,3 +1,4 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::True, types::True,

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{InputFile, True}, types::{InputFile, True},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, InlineKeyboardMarkup, Message}, types::{ChatId, InlineKeyboardMarkup, Message},

View file

@ -1,4 +1,4 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},

View file

@ -1,8 +1,9 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, InlineKeyboardMarkup}, types::{ChatId, InlineKeyboardMarkup, Poll},
}; };
use crate::types::Poll;
/// Use this method to stop a poll which was sent by the bot. On success, the stopped Poll with the final results is returned. /// Use this method to stop a poll which was sent by the bot. On success, the stopped Poll with the final results is returned.
#[serde_with_macros::skip_serializing_none] #[serde_with_macros::skip_serializing_none]

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, True}, types::{ChatId, True},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{ChatId, True}, types::{ChatId, True},

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::{ use crate::{
requests::{dynamic, json, Method}, requests::{dynamic, json, Method},
types::{InputFile, File}, types::{InputFile, File},

View file

@ -1,9 +1,12 @@
use serde::{Deserialize, Serialize};
use crate::types::PhotoSize; use crate::types::PhotoSize;
/// This object represents an animation file (GIF or H.264/MPEG-4 AVC video /// This object represents an animation file (GIF or H.264/MPEG-4 AVC video
/// without sound). /// without sound).
/// ///
/// [The official docs](https://core.telegram.org/bots/api#animation). /// [The official docs](https://core.telegram.org/bots/api#animation).
#[serde_with_macros::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct Animation { pub struct Animation {
/// An identifier for this file. /// An identifier for this file.

View file

@ -1,9 +1,12 @@
use serde::{Deserialize, Serialize};
use crate::types::PhotoSize; use crate::types::PhotoSize;
/// This object represents an audio file to be treated as music by the Telegram /// This object represents an audio file to be treated as music by the Telegram
/// clients. /// clients.
/// ///
/// [The official docs](https://core.telegram.org/bots/api#audio). /// [The official docs](https://core.telegram.org/bots/api#audio).
#[serde_with_macros::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct Audio { pub struct Audio {
/// An identifier for this file. /// An identifier for this file.

View file

@ -1,4 +1,5 @@
/// A placeholder, currently holds no information. Use [@BotFather](https://t.me/botfather) to set up your game. /// A placeholder, currently holds no information. Use [@BotFather](https://t.me/botfather) to set up your game.
/// ///
/// [The official docs](https://core.telegram.org/bots/api#callbackgame). /// [The official docs](https://core.telegram.org/bots/api#callbackgame).
// TODO: derives?
pub struct CallbackGame; pub struct CallbackGame;

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::types::{Message, User}; use crate::types::{Message, User};
/// This object represents an incoming callback query from a callback button in /// This object represents an incoming callback query from a callback button in
@ -11,6 +13,7 @@ use crate::types::{Message, User};
/// ///
/// [inline keyboard]: https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating /// [inline keyboard]: https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating
/// [inline mode]: https://core.telegram.org/bots/api#inline-mode /// [inline mode]: https://core.telegram.org/bots/api#inline-mode
#[serde_with_macros::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
pub struct CallbackQuery { pub struct CallbackQuery {
/// An unique identifier for this query. /// An unique identifier for this query.

View file

@ -1,8 +1,11 @@
use serde::{Deserialize, Serialize};
use crate::types::{ChatPermissions, ChatPhoto, Message}; use crate::types::{ChatPermissions, ChatPhoto, Message};
/// This object represents a chat. /// This object represents a chat.
/// ///
/// [The official docs](https://core.telegram.org/bots/api#chat). /// [The official docs](https://core.telegram.org/bots/api#chat).
#[serde_with_macros::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
pub struct Chat { pub struct Chat {
/// A unique identifier for this chat. This number may be greater than 32 /// A unique identifier for this chat. This number may be greater than 32
@ -21,6 +24,7 @@ pub struct Chat {
pub photo: Option<ChatPhoto>, pub photo: Option<ChatPhoto>,
} }
#[serde_with_macros::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
#[serde(untagged)] #[serde(untagged)]
pub enum ChatKind { pub enum ChatKind {
@ -74,6 +78,7 @@ pub enum ChatKind {
}, },
} }
#[serde_with_macros::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")] #[serde(rename_all = "snake_case")]
#[serde(tag = "type")] #[serde(tag = "type")]

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")] #[serde(rename_all = "snake_case")]
pub enum ChatAction { pub enum ChatAction {

View file

@ -1,3 +1,6 @@
use derive_more::{Display, From};
use serde::{Deserialize, Serialize};
/// A unique identifier for the target chat or username of the target channel /// A unique identifier for the target chat or username of the target channel
/// (in the format `@channelusername`). /// (in the format `@channelusername`).
#[derive( #[derive(

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::types::User; use crate::types::User;
/// This object contains information about one member of the chat. /// This object contains information about one member of the chat.

View file

@ -1,46 +1,41 @@
use serde::{Deserialize, Serialize};
/// Describes actions that a non-administrator user is allowed to take in a /// Describes actions that a non-administrator user is allowed to take in a
/// chat. /// chat.
/// ///
/// [The official docs](https://core.telegram.org/bots/api#chatpermissions). /// [The official docs](https://core.telegram.org/bots/api#chatpermissions).
#[serde_with_macros::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct ChatPermissions { pub struct ChatPermissions {
/// `true`, if the user is allowed to send text messages, contacts, /// `true`, if the user is allowed to send text messages, contacts,
/// locations and venues. /// locations and venues.
#[serde(skip_serializing_if = "Option::is_none")]
pub can_send_messages: Option<bool>, pub can_send_messages: Option<bool>,
/// `true`, if the user is allowed to send audios, documents, /// `true`, if the user is allowed to send audios, documents,
/// photos, videos, video notes and voice notes, implies /// photos, videos, video notes and voice notes, implies
/// `can_send_messages`. /// `can_send_messages`.
#[serde(skip_serializing_if = "Option::is_none")]
pub can_send_media_messages: Option<bool>, pub can_send_media_messages: Option<bool>,
/// `true`, if the user is allowed to send polls, implies /// `true`, if the user is allowed to send polls, implies
/// `can_send_messages`. /// `can_send_messages`.
#[serde(skip_serializing_if = "Option::is_none")]
pub can_send_polls: Option<bool>, pub can_send_polls: Option<bool>,
/// `true`, if the user is allowed to send animations, games, stickers and /// `true`, if the user is allowed to send animations, games, stickers and
/// use inline bots, implies `can_send_media_messages`. /// use inline bots, implies `can_send_media_messages`.
#[serde(skip_serializing_if = "Option::is_none")]
pub can_send_other_messages: Option<bool>, pub can_send_other_messages: Option<bool>,
/// `true`, if the user is allowed to add web page previews to /// `true`, if the user is allowed to add web page previews to
/// their messages, implies `can_send_media_messages`. /// their messages, implies `can_send_media_messages`.
#[serde(skip_serializing_if = "Option::is_none")]
pub can_add_web_page_previews: Option<bool>, pub can_add_web_page_previews: Option<bool>,
/// `true`, if the user is allowed to change the chat title, photo and /// `true`, if the user is allowed to change the chat title, photo and
/// other settings. Ignored in public supergroups. /// other settings. Ignored in public supergroups.
#[serde(skip_serializing_if = "Option::is_none")]
pub can_change_info: Option<bool>, pub can_change_info: Option<bool>,
/// `true`, if the user is allowed to invite new users to the chat. /// `true`, if the user is allowed to invite new users to the chat.
#[serde(skip_serializing_if = "Option::is_none")]
pub can_invite_users: Option<bool>, pub can_invite_users: Option<bool>,
/// `true`, if the user is allowed to pin messages. Ignored in public /// `true`, if the user is allowed to pin messages. Ignored in public
/// supergroups. /// supergroups.
#[serde(skip_serializing_if = "Option::is_none")]
pub can_pin_messages: Option<bool>, pub can_pin_messages: Option<bool>,
} }

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
/// This object represents a chat photo. /// This object represents a chat photo.
/// ///
/// [The official docs](https://core.telegram.org/bots/api#chatphoto). /// [The official docs](https://core.telegram.org/bots/api#chatphoto).

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::types::{Location, User}; use crate::types::{Location, User};
/// Represents a [result] of an inline query that was chosen by the user and /// Represents a [result] of an inline query that was chosen by the user and
@ -6,6 +8,7 @@ use crate::types::{Location, User};
/// [The official docs](https://core.telegram.org/bots/api#choseninlineresult). /// [The official docs](https://core.telegram.org/bots/api#choseninlineresult).
/// ///
/// [result]: https://core.telegram.org/bots/api#inlinequeryresult /// [result]: https://core.telegram.org/bots/api#inlinequeryresult
#[serde_with_macros::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
pub struct ChosenInlineResult { pub struct ChosenInlineResult {
/// The unique identifier for the result that was chosen. /// The unique identifier for the result that was chosen.

View file

@ -1,6 +1,9 @@
use serde::{Deserialize, Serialize};
/// This object represents a phone contact. /// This object represents a phone contact.
/// ///
/// [The official docs](https://core.telegram.org/bots/api#contact). /// [The official docs](https://core.telegram.org/bots/api#contact).
#[serde_with_macros::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct Contact { pub struct Contact {
/// A contact's phone number. /// A contact's phone number.

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::types::PhotoSize; use crate::types::PhotoSize;
/// This object represents a general file (as opposed to [photos], [voice /// This object represents a general file (as opposed to [photos], [voice
@ -8,6 +10,7 @@ use crate::types::PhotoSize;
/// [photos]: https://core.telegram.org/bots/api#photosize /// [photos]: https://core.telegram.org/bots/api#photosize
/// [voice messages]: https://core.telegram.org/bots/api#voice /// [voice messages]: https://core.telegram.org/bots/api#voice
/// [audio files]: https://core.telegram.org/bots/api#audio /// [audio files]: https://core.telegram.org/bots/api#audio
#[serde_with_macros::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct Document { pub struct Document {
/// An identifier for this file. /// An identifier for this file.

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
/// Contains data required for decrypting and authenticating /// Contains data required for decrypting and authenticating
/// [`EncryptedPassportElement`]. See the [Telegram Passport Documentation] for /// [`EncryptedPassportElement`]. See the [Telegram Passport Documentation] for
/// a complete description of the data decryption and authentication processes. /// a complete description of the data decryption and authentication processes.
@ -7,6 +9,7 @@
/// [`EncryptedPassportElement`]: /// [`EncryptedPassportElement`]:
/// crate::types::EncryptedPassportElement /// crate::types::EncryptedPassportElement
/// [Telegram Passport Documentation]: https://core.telegram.org/passport#receiving-information /// [Telegram Passport Documentation]: https://core.telegram.org/passport#receiving-information
#[serde_with_macros::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct EncryptedCredentials { pub struct EncryptedCredentials {
/// Base64-encoded encrypted JSON-serialized data with unique user's /// Base64-encoded encrypted JSON-serialized data with unique user's

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use super::PassportFile; use super::PassportFile;
/// Contains information about documents or other Telegram Passport elements /// Contains information about documents or other Telegram Passport elements
@ -17,6 +19,7 @@ pub struct EncryptedPassportElement {
pub kind: EncryptedPassportElementKind, pub kind: EncryptedPassportElementKind,
} }
#[serde_with_macros::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")] #[serde(rename_all = "snake_case")]
pub enum EncryptedPassportElementKind { pub enum EncryptedPassportElementKind {

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
/// This object represents a file ready to be downloaded. The file can be /// This object represents a file ready to be downloaded. The file can be
/// downloaded via the link `https://api.telegram.org/file/bot<token>/<file_path>`. /// downloaded via the link `https://api.telegram.org/file/bot<token>/<file_path>`.
/// It is guaranteed that the link will be valid for at least 1 hour. When the /// It is guaranteed that the link will be valid for at least 1 hour. When the
@ -14,6 +16,7 @@ pub struct File {
/// File size, if known. /// File size, if known.
pub file_size: u32, pub file_size: u32,
// TODO: chacge "Use ..." to use bot.download...
/// File path. Use `https://api.telegram.org/file/bot<token>/<file_path>` /// File path. Use `https://api.telegram.org/file/bot<token>/<file_path>`
/// to get the file. /// to get the file.
pub file_path: String, pub file_path: String,

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::types::True; use crate::types::True;
/// Upon receiving a message with this object, Telegram clients will display a /// Upon receiving a message with this object, Telegram clients will display a
@ -9,6 +11,7 @@ use crate::types::True;
/// [The official docs](https://core.telegram.org/bots/api#forcereply). /// [The official docs](https://core.telegram.org/bots/api#forcereply).
/// ///
/// [privacy mode]: https://core.telegram.org/bots#privacy-mode /// [privacy mode]: https://core.telegram.org/bots#privacy-mode
#[serde_with_macros::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct ForceReply { pub struct ForceReply {
/// Shows reply interface to the user, as if they manually selected the /// Shows reply interface to the user, as if they manually selected the
@ -21,6 +24,5 @@ pub struct ForceReply {
/// (has reply_to_message_id), sender of the original message. /// (has reply_to_message_id), sender of the original message.
/// ///
/// [`Message`]: crate::types::Message /// [`Message`]: crate::types::Message
#[serde(skip_serializing_if = "Option::is_none")]
pub selective: Option<bool>, pub selective: Option<bool>,
} }

View file

@ -1,4 +1,4 @@
use serde::Deserialize; use serde::{Deserialize, Serialize};
use crate::types::{Animation, MessageEntity, PhotoSize}; use crate::types::{Animation, MessageEntity, PhotoSize};
@ -6,6 +6,7 @@ use crate::types::{Animation, MessageEntity, PhotoSize};
/// their short names will act as unique identifiers. /// their short names will act as unique identifiers.
/// ///
/// [@Botfather]: https://t.me/botfather /// [@Botfather]: https://t.me/botfather
#[serde_with_macros::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct Game { pub struct Game {
/// Title of the game. /// Title of the game.

View file

@ -1,4 +1,4 @@
use serde::Deserialize; use serde::{Deserialize, Serialize};
use crate::types::user::User; use crate::types::user::User;

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
/// This object represents one button of an inline keyboard. /// This object represents one button of an inline keyboard.
/// ///
/// [The official docs](https://core.telegram.org/bots/api#inlinekeyboardbutton). /// [The official docs](https://core.telegram.org/bots/api#inlinekeyboardbutton).

View file

@ -1,3 +1,5 @@
use serde::{Deserialize, Serialize};
use crate::types::InlineKeyboardButton; use crate::types::InlineKeyboardButton;
/// This object represents an [inline keyboard] that appears right next to the /// This object represents an [inline keyboard] that appears right next to the

View file

@ -1,9 +1,12 @@
use serde::{Deserialize, Serialize};
use crate::types::{Location, User}; use crate::types::{Location, User};
/// This object represents an incoming inline query. When the user sends an /// This object represents an incoming inline query. When the user sends an
/// empty query, your bot could return some default or trending results. /// empty query, your bot could return some default or trending results.
/// ///
/// [The official docs](https://core.telegram.org/bots/api#inlinequery). /// [The official docs](https://core.telegram.org/bots/api#inlinequery).
#[serde_with_macros::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
pub struct InlineQuery { pub struct InlineQuery {
/// Unique identifier for this query. /// Unique identifier for this query.

View file

@ -1,5 +1,8 @@
#![allow(clippy::large_enum_variant)] #![allow(clippy::large_enum_variant)]
use derive_more::From;
use serde::{Deserialize, Serialize};
use crate::types::{ use crate::types::{
InlineQueryResultArticle, InlineQueryResultAudio, InlineQueryResultArticle, InlineQueryResultAudio,
InlineQueryResultCachedAudio, InlineQueryResultCachedDocument, InlineQueryResultCachedAudio, InlineQueryResultCachedDocument,

View file

@ -1,8 +1,11 @@
use serde::{Deserialize, Serialize};
use crate::types::{InlineKeyboardMarkup, InputMessageContent}; use crate::types::{InlineKeyboardMarkup, InputMessageContent};
/// Represents a link to an article or web page. /// Represents a link to an article or web page.
/// ///
/// [The official docs](https://core.telegram.org/bots/api#inlinequeryresultarticle). /// [The official docs](https://core.telegram.org/bots/api#inlinequeryresultarticle).
#[serde_with_macros::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] #[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
pub struct InlineQueryResultArticle { pub struct InlineQueryResultArticle {
/// Unique identifier for this result, 1-64 Bytes. /// Unique identifier for this result, 1-64 Bytes.
@ -15,31 +18,24 @@ pub struct InlineQueryResultArticle {
pub input_message_content: InputMessageContent, pub input_message_content: InputMessageContent,
/// Inline keyboard attached to the message. /// Inline keyboard attached to the message.
#[serde(skip_serializing_if = "Option::is_none")]
pub reply_markup: Option<InlineKeyboardMarkup>, pub reply_markup: Option<InlineKeyboardMarkup>,
/// URL of the result. /// URL of the result.
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<String>, pub url: Option<String>,
/// Pass `true`, if you don't want the URL to be shown in the /// Pass `true`, if you don't want the URL to be shown in the
/// message. /// message.
#[serde(skip_serializing_if = "Option::is_none")]
pub hide_url: Option<bool>, pub hide_url: Option<bool>,
/// Short description of the result. /// Short description of the result.
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>, pub description: Option<String>,
/// Url of the thumbnail for the result. /// Url of the thumbnail for the result.
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_url: Option<String>, pub thumb_url: Option<String>,
/// Thumbnail width. /// Thumbnail width.
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_width: Option<i32>, pub thumb_width: Option<i32>,
/// Thumbnail height. /// Thumbnail height.
#[serde(skip_serializing_if = "Option::is_none")]
pub thumb_height: Option<i32>, pub thumb_height: Option<i32>,
} }

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