Compare commits

..
2 Commits
Author SHA1 Message Date
Alexander Kalinovsky 4364c2c175 rename project
Build Docs / changes (push) Successful in 6s
Build Docs / build-docs (push) Successful in 1m5s
Build Docs / deploy-docs (push) Successful in 5s
2025-03-27 15:48:55 +07:00
Alexander Kalinovsky 5db09d0fd1 rename project 2025-03-27 15:48:00 +07:00
57 changed files with 64 additions and 58 deletions

No files matched your search

+21 -13
View File
@@ -9,7 +9,10 @@
id="svg1" id="svg1"
xml:space="preserve" xml:space="preserve"
inkscape:version="1.4 (e7c3feb1, 2024-10-09)" inkscape:version="1.4 (e7c3feb1, 2024-10-09)"
sodipodi:docname="qbot.svg" sodipodi:docname="quickbot.svg"
inkscape:export-filename="quickbot.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
@@ -23,16 +26,21 @@
inkscape:pagecheckerboard="0" inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1" inkscape:deskcolor="#d1d1d1"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:zoom="0.52452521" inkscape:zoom="0.29812844"
inkscape:cx="704.4466" inkscape:cx="1061.623"
inkscape:cy="297.41182" inkscape:cy="-147.5874"
inkscape:window-width="1608" inkscape:window-width="1608"
inkscape:window-height="1007" inkscape:window-height="1007"
inkscape:window-x="8" inkscape:window-x="8"
inkscape:window-y="52" inkscape:window-y="44"
inkscape:window-maximized="0" inkscape:window-maximized="0"
inkscape:current-layer="layer1" /><defs inkscape:current-layer="layer1" /><defs
id="defs1"><rect id="defs1"><rect
x="620.53792"
y="0"
width="879.46208"
height="218.02683"
id="rect1" /><rect
x="80.81143" x="80.81143"
y="115.09507" y="115.09507"
width="901.16989" width="901.16989"
@@ -46,14 +54,10 @@
inkscape:label="Слой 1" inkscape:label="Слой 1"
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="layer1"><g id="layer1"><g
id="g18" id="g2"
transform="translate(118.93657)"><path transform="translate(118.3711,30.188331)"><g
style="font-size:266.667px;font-family:'Arial Rounded MT Bold';-inkscape-font-specification:'Arial Rounded MT Bold, Normal';fill:#404040"
d="m 685.86904,314.58341 q 8.46355,5.72918 18.4896,11.19793 10.02606,5.33854 13.28127,8.59377 3.25521,3.125 3.25521,8.98437 0,4.16668 -3.90625,8.33335 -3.77605,4.16668 -9.24481,4.16668 -4.42708,0 -10.8073,-2.8646 -6.25001,-2.86459 -14.84377,-8.33334 -8.46355,-5.46876 -18.61981,-12.76044 -18.88023,9.63543 -46.35423,9.63543 -22.26565,0 -39.974,-7.03126 -17.57815,-7.16146 -29.55733,-20.44273 -11.97918,-13.41147 -18.09898,-31.77087 -5.98959,-18.3594 -5.98959,-39.97401 0,-22.00523 6.25001,-40.36463 6.38021,-18.3594 18.35939,-31.25004 11.97918,-12.89064 29.16671,-19.66148 17.18752,-6.90105 39.06254,-6.90105 29.68754,0 50.91152,12.10939 21.3542,11.97918 32.29171,34.24483 10.93751,22.13545 10.93751,52.0834 0,45.44276 -24.6094,72.0053 z m -30.33858,-21.09377 q 8.07293,-9.2448 11.84897,-21.87503 3.90626,-12.63022 3.90626,-29.29691 0,-20.96358 -6.77084,-36.32817 -6.77085,-15.3646 -19.40107,-23.17711 -12.50002,-7.94273 -28.77608,-7.94273 -11.58855,0 -21.4844,4.42709 -9.76563,4.29688 -16.9271,12.63022 -7.03126,8.33335 -11.19793,21.3542 -4.03647,12.89064 -4.03647,29.0365 0,32.94274 15.36461,50.78131 15.3646,17.70836 38.80213,17.70836 9.63543,0 19.79169,-4.03647 -6.1198,-4.55729 -15.3646,-9.11459 -9.1146,-4.5573 -12.50002,-7.03126 -3.38542,-2.47396 -3.38542,-7.03126 0,-3.90625 3.25521,-6.90105 3.25521,-2.99479 7.16147,-2.99479 11.84897,0 39.71359,19.79169 z m 169.53146,44.79172 h -58.3334 q -12.63023,0 -18.09898,-5.59898 -5.33855,-5.72917 -5.33855,-18.09897 V 171.09366 q 0,-12.63023 5.46876,-18.09898 5.59896,-5.59897 17.96877,-5.59897 h 61.84903 q 13.67189,0 23.69795,1.69271 10.02605,1.69271 17.96877,6.51043 6.77084,4.03646 11.97918,10.28647 5.20834,6.1198 7.94272,13.67189 2.73438,7.42188 2.73438,15.75523 0,28.64586 -28.64587,41.92713 37.63025,11.97918 37.63025,46.61464 0,16.01564 -8.20313,28.90629 -8.20314,12.76043 -22.13545,18.88023 -8.72396,3.64583 -20.0521,5.20834 -11.32814,1.43229 -26.43233,1.43229 z m -2.86458,-84.76574 h -40.23443 v 55.72924 h 41.53651 q 39.19276,0 39.19276,-28.25524 0,-14.45315 -10.15627,-20.96357 -10.15626,-6.51043 -30.33857,-6.51043 z m -40.23443,-77.08343 v 49.34902 h 35.41671 q 14.45314,0 22.26565,-2.73438 7.94272,-2.73437 12.10939,-10.41667 3.25522,-5.46876 3.25522,-12.2396 0,-14.45315 -10.28647,-19.14065 -10.28648,-4.81772 -31.38025,-4.81772 z m 283.98469,92.83866 q 0,15.88544 -4.9479,29.29691 -4.9479,13.41148 -14.3229,23.0469 -9.375,9.63543 -22.3959,14.84377 -13.0208,5.07813 -29.29688,5.07813 -16.14586,0 -29.0365,-5.20834 -12.89064,-5.20834 -22.39586,-14.84377 -9.37501,-9.76563 -14.32293,-22.91669 -4.81772,-13.28127 -4.81772,-29.29691 0,-16.14585 4.94793,-29.55733 4.94792,-13.41147 14.19272,-22.91669 9.2448,-9.50522 22.39586,-14.58335 13.15106,-5.20834 29.0365,-5.20834 16.14588,0 29.29688,5.20834 13.1511,5.20834 22.5261,14.84376 9.375,9.63543 14.1927,22.9167 4.9479,13.28126 4.9479,29.29691 z m -35.6771,0 q 0,-21.74482 -9.6354,-33.85421 -9.5052,-12.10939 -25.65108,-12.10939 -10.41668,0 -18.3594,5.46876 -7.94272,5.33855 -12.2396,15.88544 -4.29688,10.54689 -4.29688,24.60941 0,13.93231 4.16667,24.34899 4.29688,10.41668 12.10939,16.01564 7.94272,5.46876 18.61982,5.46876 16.14588,0 25.65108,-12.10939 9.6354,-12.2396 9.6354,-33.72401 z m 65.6251,-69.14071 h 3.9062 v -21.35419 q 0,-8.59376 0.3906,-13.41148 0.5209,-4.94792 2.6042,-8.46355 2.0833,-3.64584 5.9896,-5.85938 3.9063,-2.34375 8.724,-2.34375 6.7708,0 12.2396,5.07813 3.6458,3.38542 4.5573,8.33334 1.0416,4.81771 1.0416,13.8021 v 24.21878 h 13.0209 q 7.5521,0 11.4583,3.64584 4.0365,3.51563 4.0365,9.11459 0,7.16147 -5.7292,10.02606 -5.5989,2.86458 -16.1458,2.86458 h -6.6407 v 65.36467 q 0,8.33334 0.5209,12.89064 0.651,4.42709 3.125,7.29167 2.6041,2.73438 8.3333,2.73438 3.125,0 8.4636,-1.04167 5.3385,-1.17187 8.3333,-1.17187 4.2969,0 7.6823,3.51563 3.5156,3.38542 3.5156,8.46355 0,8.59376 -9.375,13.15106 -9.375,4.55729 -26.9531,4.55729 -16.6667,0 -25.2605,-5.59896 -8.5937,-5.59897 -11.3281,-15.49481 -2.6042,-9.89585 -2.6042,-26.43233 v -68.22924 h -4.6875 q -7.6823,0 -11.7188,-3.64584 -4.0364,-3.64583 -4.0364,-9.2448 0,-5.59896 4.1667,-9.11459 4.2968,-3.64584 12.3698,-3.64585 z"
id="text17"
aria-label="QBot" /><g
id="g17" id="g17"
transform="matrix(1.195598,0,0,1.195598,-52.1047,-71.699942)"><path transform="matrix(0.94873996,0,0,0.98304435,-83.800507,-44.696394)"><path
id="path17" id="path17"
style="-inkscape-font-specification:'Arial Rounded MT Bold, ';opacity:1;fill:#a587c9;fill-opacity:1" style="-inkscape-font-specification:'Arial Rounded MT Bold, ';opacity:1;fill:#a587c9;fill-opacity:1"
d="m 272.44727,142.82422 c -6.05914,0.0153 -11.03743,2.03697 -14.95508,6.0293 -3.98025,4.51096 -6.09057,11.66026 -6.47657,21.24218 v 3.72461 c -0.0471,-0.0706 -0.0973,-0.13474 -0.14453,-0.20508 v 52.01758 18.20703 57.11524 c 0.0477,-0.0476 0.0968,-0.0871 0.14453,-0.13477 v 64.16602 c 2e-5,8.38844 1.13695,15.11813 3.29102,20.36523 0.73739,1.28016 1.58937,2.4395 2.56445,3.46875 3.62458,3.92663 8.21734,6.0553 13.75782,6.42383 0.5993,0.0286 1.18235,0.0711 1.8125,0.0723 6.05823,-0.0157 11.0359,-2.03742 14.95312,-6.0293 3.98025,-4.51096 6.09057,-11.66026 6.47656,-21.24219 v -3.72461 c 0.0471,0.0706 0.0974,0.13474 0.14453,0.20508 v -52.01953 -18.20508 -57.11523 c -0.0477,0.0476 -0.0968,0.0871 -0.14453,0.13476 V 173.1543 c 0,-8.38703 -1.13767,-15.11654 -3.29101,-20.36328 -0.73758,-1.28076 -1.58899,-2.44105 -2.56446,-3.47071 -3.6877,-3.99502 -8.37983,-6.1256 -14.05078,-6.4375 -0.50595,-0.0202 -0.99001,-0.0576 -1.51757,-0.0586 z" /><path d="m 272.44727,142.82422 c -6.05914,0.0153 -11.03743,2.03697 -14.95508,6.0293 -3.98025,4.51096 -6.09057,11.66026 -6.47657,21.24218 v 3.72461 c -0.0471,-0.0706 -0.0973,-0.13474 -0.14453,-0.20508 v 52.01758 18.20703 57.11524 c 0.0477,-0.0476 0.0968,-0.0871 0.14453,-0.13477 v 64.16602 c 2e-5,8.38844 1.13695,15.11813 3.29102,20.36523 0.73739,1.28016 1.58937,2.4395 2.56445,3.46875 3.62458,3.92663 8.21734,6.0553 13.75782,6.42383 0.5993,0.0286 1.18235,0.0711 1.8125,0.0723 6.05823,-0.0157 11.0359,-2.03742 14.95312,-6.0293 3.98025,-4.51096 6.09057,-11.66026 6.47656,-21.24219 v -3.72461 c 0.0471,0.0706 0.0974,0.13474 0.14453,0.20508 v -52.01953 -18.20508 -57.11523 c -0.0477,0.0476 -0.0968,0.0871 -0.14453,0.13476 V 173.1543 c 0,-8.38703 -1.13767,-15.11654 -3.29101,-20.36328 -0.73758,-1.28076 -1.58899,-2.44105 -2.56446,-3.47071 -3.6877,-3.99502 -8.37983,-6.1256 -14.05078,-6.4375 -0.50595,-0.0202 -0.99001,-0.0576 -1.51757,-0.0586 z" /><path
@@ -62,4 +66,8 @@
id="path13" /><path id="path13" /><path
d="m 294.01562,237.18555 v 57.11523 c 0.79416,-8.72281 2.70075,-16.33307 5.73633,-22.81445 4.1111,-8.77777 9.55426,-15.33269 16.33203,-19.66602 6.77777,-4.22221 14.22288,-6.33398 22.33399,-6.33398 7.44443,0 14.38954,2.11177 20.83398,6.33398 6.44444,4.33333 11.66602,10.88825 15.66602,19.66602 3.88888,8.88888 5.83398,19.4438 5.83398,31.66601 0,18.55553 -4.05687,32.88889 -12.16797,43 -8.1111,10.1111 -18.27779,15.16797 -30.5,15.16797 -6,0 -11.66668,-1.22353 -17,-3.66797 -5.33333,-2.33333 -10.05491,-5.94314 -14.16601,-10.83203 -4.11111,-4.77777 -7.33269,-10.83464 -9.66602,-18.16797 -1.6545,-4.96351 -2.70166,-10.36855 -3.23633,-16.14648 v 52.01953 c 6.86067,10.22655 15.08688,17.82909 24.6875,22.79492 9.66665,5.11111 20.61178,7.66602 32.83399,7.66602 14.44443,0 27.61113,-3.61178 39.5,-10.83399 11.77777,-7.22221 20.99936,-17.77713 27.66601,-31.66601 6.66667,-13.77776 10,-30.3327 10,-49.66602 10e-6,-18.88887 -3.27648,-35.33399 -9.83203,-49.33398 -6.66666,-13.88887 -15.77843,-24.55556 -27.33398,-32 -11.66665,-7.44444 -24.55492,-11.16602 -38.66602,-11.16602 -11.55555,0 -22.05557,2.27844 -31.5,6.83399 -9.50364,4.64131 -18.62118,11.32337 -27.35547,20.03125 z" d="m 294.01562,237.18555 v 57.11523 c 0.79416,-8.72281 2.70075,-16.33307 5.73633,-22.81445 4.1111,-8.77777 9.55426,-15.33269 16.33203,-19.66602 6.77777,-4.22221 14.22288,-6.33398 22.33399,-6.33398 7.44443,0 14.38954,2.11177 20.83398,6.33398 6.44444,4.33333 11.66602,10.88825 15.66602,19.66602 3.88888,8.88888 5.83398,19.4438 5.83398,31.66601 0,18.55553 -4.05687,32.88889 -12.16797,43 -8.1111,10.1111 -18.27779,15.16797 -30.5,15.16797 -6,0 -11.66668,-1.22353 -17,-3.66797 -5.33333,-2.33333 -10.05491,-5.94314 -14.16601,-10.83203 -4.11111,-4.77777 -7.33269,-10.83464 -9.66602,-18.16797 -1.6545,-4.96351 -2.70166,-10.36855 -3.23633,-16.14648 v 52.01953 c 6.86067,10.22655 15.08688,17.82909 24.6875,22.79492 9.66665,5.11111 20.61178,7.66602 32.83399,7.66602 14.44443,0 27.61113,-3.61178 39.5,-10.83399 11.77777,-7.22221 20.99936,-17.77713 27.66601,-31.66601 6.66667,-13.77776 10,-30.3327 10,-49.66602 10e-6,-18.88887 -3.27648,-35.33399 -9.83203,-49.33398 -6.66666,-13.88887 -15.77843,-24.55556 -27.33398,-32 -11.66665,-7.44444 -24.55492,-11.16602 -38.66602,-11.16602 -11.55555,0 -22.05557,2.27844 -31.5,6.83399 -9.50364,4.64131 -18.62118,11.32337 -27.35547,20.03125 z"
style="-inkscape-font-specification:'Arial Rounded MT Bold, ';opacity:1;fill:#a7a7fa;fill-opacity:1" style="-inkscape-font-specification:'Arial Rounded MT Bold, ';opacity:1;fill:#a7a7fa;fill-opacity:1"
id="path15" /></g></g></g></svg> id="path15" /></g><path
style="font-size:192px;font-family:'Arial Rounded MT Bold';-inkscape-font-specification:'Arial Rounded MT Bold, Normal';white-space:pre;opacity:0.9;fill:#404040;stroke-width:5.66929"
d="m 499.58029,266.31166 q 6.09375,4.125 13.3125,8.0625 7.21875,3.84375 9.5625,6.1875 2.34375,2.25 2.34375,6.46875 0,3 -2.8125,6 -2.71875,3 -6.65625,3 -3.1875,0 -7.78125,-2.0625 -4.5,-2.0625 -10.6875,-6 -6.09375,-3.9375 -13.40625,-9.1875 -13.59375,6.9375 -33.375,6.9375 -16.03125,0 -28.78125,-5.0625 -12.65625,-5.15625 -21.28125,-14.71875 -8.625,-9.65625 -13.03125,-22.875 -4.3125,-13.21875 -4.3125,-28.78125 0,-15.84375 4.5,-29.0625 4.59375,-13.21875 13.21875,-22.5 8.625,-9.28125 21,-14.15625 12.375,-4.96875 28.125,-4.96875 21.375,0 36.65625,8.71875 15.375,8.625 23.25,24.65625 7.875,15.9375 7.875,37.5 0,32.71875 -17.71875,51.84375 z m -21.84375,-15.1875 q 5.8125,-6.65625 8.53125,-15.75 2.8125,-9.09375 2.8125,-21.09375 0,-15.09375 -4.875,-26.15625 -4.875,-11.0625 -13.96875,-16.6875 -9,-5.71875 -20.71875,-5.71875 -8.34375,0 -15.46875,3.1875 -7.03125,3.09375 -12.1875,9.09375 -5.0625,6 -8.0625,15.375 -2.90625,9.28125 -2.90625,20.90625 0,23.71875 11.0625,36.5625 11.0625,12.75 27.9375,12.75 6.9375,0 14.25,-2.90625 -4.40625,-3.28125 -11.0625,-6.5625 -6.5625,-3.28125 -9,-5.0625 -2.4375,-1.78125 -2.4375,-5.0625 0,-2.8125 2.34375,-4.96875 2.34375,-2.15625 5.15625,-2.15625 8.53125,0 28.59375,14.25 z m 128.0625,20.15625 v -3.28125 q -4.59375,5.8125 -9.65625,9.75 -5.0625,3.9375 -11.0625,5.8125 -6,1.96875 -13.6875,1.96875 -9.28125,0 -16.6875,-3.84375 -7.3125,-3.84375 -11.34375,-10.59375 -4.78125,-8.15625 -4.78125,-23.4375 v -50.71875 q 0,-7.6875 3.46875,-11.4375 3.46875,-3.84375 9.1875,-3.84375 5.8125,0 9.375,3.84375 3.5625,3.84375 3.5625,11.4375 v 40.96875 q 0,8.90625 1.5,15 1.5,6 5.34375,9.46875 3.9375,3.375 10.59375,3.375 6.46875,0 12.1875,-3.84375 5.71875,-3.84375 8.34375,-10.03125 2.15625,-5.4375 2.15625,-23.8125 v -31.125 q 0,-7.59375 3.5625,-11.4375 3.5625,-3.84375 9.28125,-3.84375 5.71875,0 9.1875,3.84375 3.46875,3.75 3.46875,11.4375 v 74.15625 q 0,7.3125 -3.375,10.96875 -3.28125,3.65625 -8.53125,3.65625 -5.25,0 -8.71875,-3.75 -3.375,-3.84375 -3.375,-10.6875 z m 75.09375,-75.09375 v 73.96875 q 0,7.6875 -3.65625,11.625 -3.65625,3.9375 -9.28125,3.9375 -5.625,0 -9.1875,-4.03125 -3.46875,-4.03125 -3.46875,-11.53125 v -73.21875 q 0,-7.59375 3.46875,-11.4375 3.5625,-3.84375 9.1875,-3.84375 5.625,0 9.28125,3.84375 3.65625,3.84375 3.65625,10.6875 z m -12.65625,-26.4375 q -5.34375,0 -9.1875,-3.28125 -3.75,-3.28125 -3.75,-9.28125 0,-5.4375 3.84375,-8.90625 3.9375,-3.5625 9.09375,-3.5625 4.96875,0 8.8125,3.1875 3.84375,3.1875 3.84375,9.28125 0,5.90625 -3.75,9.28125 -3.75,3.28125 -8.90625,3.28125 z m 130.87499,84.28125 q 0,4.78125 -2.9062,10.21875 -2.8125,5.4375 -8.7188,10.40625 -5.8125,4.875 -14.7187,7.875 -8.9063,3 -20.06254,3 -23.71875,0 -37.03125,-13.78125 -13.3125,-13.875 -13.3125,-37.125 0,-15.75 6.09375,-27.84375 6.09375,-12.09375 17.625,-18.65625 11.53125,-6.65625 27.56254,-6.65625 9.9375,0 18.1875,2.90625 8.3437,2.90625 14.0625,7.5 5.8125,4.59375 8.8125,9.84375 3.0937,5.15625 3.0937,9.65625 0,4.59375 -3.4687,7.78125 -3.375,3.1875 -8.25,3.1875 -3.1875,0 -5.3438,-1.59375 -2.0625,-1.6875 -4.6875,-5.34375 -4.6875,-7.125 -9.8437,-10.6875 -5.0625,-3.5625 -12.93754,-3.5625 -11.34375,0 -18.28125,8.90625 -6.9375,8.8125 -6.9375,24.1875 0,7.21875 1.78125,13.3125 1.78125,6 5.15625,10.3125 3.375,4.21875 8.15625,6.46875 4.78125,2.15625 10.50004,2.15625 7.6875,0 13.125,-3.5625 5.5312,-3.5625 9.75,-10.875 2.3437,-4.3125 5.0625,-6.75 2.7187,-2.4375 6.6562,-2.4375 4.6875,0 7.7813,3.5625 3.0937,3.5625 3.0937,7.59375 z m 78.75,19.96875 -22.5937,-37.125 -13.875,13.125 v 20.34375 q 0,7.40625 -3.9375,11.4375 -3.8438,3.9375 -8.9063,3.9375 -5.9062,0 -9.2812,-3.9375 -3.375,-3.9375 -3.375,-11.625 v -109.125 q 0,-8.53125 3.2812,-12.9375 3.2813,-4.5 9.375,-4.5 5.9063,0 9.375,4.03125 3.4688,4.03125 3.4688,11.90625 v 62.0625 l 28.7812,-30.1875 q 5.3438,-5.625 8.1563,-7.6875 2.8125,-2.0625 6.8437,-2.0625 4.7813,0 7.9688,3.09375 3.1875,3 3.1875,7.59375 0,5.625 -10.4063,15 l -13.5937,12.46875 26.25,41.25 q 2.9062,4.59375 4.125,7.03125 1.3125,2.34375 1.3125,4.5 0,6.09375 -3.375,9.65625 -3.2813,3.46875 -8.7188,3.46875 -4.6875,0 -7.2187,-2.53125 -2.5313,-2.53125 -6.8438,-9.1875 z m 106.7813,9.375 h -42 q -9.0938,0 -13.0313,-4.03125 -3.8437,-4.125 -3.8437,-13.03125 v -103.3125 q 0,-9.09375 3.9375,-13.03125 4.0312,-4.03125 12.9375,-4.03125 h 44.5312 q 9.8438,0 17.06247,1.21875 7.2188,1.21875 12.9375,4.6875 4.875,2.90625 8.625,7.40625 3.75,4.40625 5.7188,9.84375 1.9687,5.34375 1.9687,11.34375 0,20.625 -20.625,30.1875 27.0938,8.625 27.0938,33.5625 0,11.53125 -5.9063,20.8125 -5.9062,9.1875 -15.9375,13.59375 -6.2812,2.625 -14.4375,3.75 -8.15617,1.03125 -19.03117,1.03125 z m -2.0625,-61.03125 h -28.9688 v 40.125 h 29.9063 q 28.21867,0 28.21867,-20.34375 0,-10.40625 -7.3125,-15.09375 -7.31247,-4.6875 -21.84367,-4.6875 z m -28.9688,-55.5 v 35.53125 h 25.5 q 10.4063,0 16.0313,-1.96875 5.71867,-1.96875 8.71867,-7.5 2.3438,-3.9375 2.3438,-8.8125 0,-10.40625 -7.40627,-13.78125 -7.4062,-3.46875 -22.5937,-3.46875 z m 204.46877,66.84375 q 0,11.4375 -3.5625,21.0Line truncated
id="text1"
aria-label="QuickBot" /></g></g></svg>

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 12 KiB

+8 -10
View File
@@ -3,13 +3,13 @@
</style> </style>
<p align="center"> <p align="center">
<a href="https://qbot.botforge.biz"><img src="img/qbot.svg" alt="QBot"></a> <a href="https://quickbot.botforge.biz"><img src="img/qbot.svg" alt="QuickBot"></a>
</p> </p>
<p align="center"> <p align="center">
<em>Telegram Bots Rapid Application Development (RAD) Framework.</em> <em>Telegram Bots Rapid Application Development (RAD) Framework.</em>
</p> </p>
**QBot** is a library for fast development of Telegram bots and mini-apps following the **RAD (Rapid Application Development)** principle in a **declarative style**. **QuickBot** is a library for fast development of Telegram bots and mini-apps following the **RAD (Rapid Application Development)** principle in a **declarative style**.
## Key Features ## Key Features
@@ -20,13 +20,13 @@
- **Context Preservation** – Store navigation stacks and user interaction states in the database. - **Context Preservation** – Store navigation stacks and user interaction states in the database.
- **Internationalization Support** – Localizable UI and string fields for multilingual bots. - **Internationalization Support** – Localizable UI and string fields for multilingual bots.
**QBot** powered by **[FastAPI](https://fastapi.tiangolo.com)**, **[SQLModel](https://sqlmodel.tiangolo.com)** & **[aiogram](https://aiogram.dev)** – Leverage the full capabilities of these frameworks for high performance and flexibility. **QuickBot** powered by **[FastAPI](https://fastapi.tiangolo.com)**, **[SQLModel](https://sqlmodel.tiangolo.com)** & **[aiogram](https://aiogram.dev)** – Leverage the full capabilities of these frameworks for high performance and flexibility.
## Benefits ## Benefits
- **Faster Development** – Automate repetitive tasks and build bots in record time. - **Faster Development** – Automate repetitive tasks and build bots in record time.
- **Highly Modular** – Easily extend and customize functionality. - **Highly Modular** – Easily extend and customize functionality.
- **Less Code Duplication** – Focus on core features while QBot handles the rest. - **Less Code Duplication** – Focus on core features while QuickBot handles the rest.
- **Enterprise-Grade Structure** – Scalable, maintainable, and optimized for real-world usage. - **Enterprise-Grade Structure** – Scalable, maintainable, and optimized for real-world usage.
## Example ## Example
@@ -42,12 +42,12 @@ class AppEntity(BotEntity):
) )
name: str # entity field with default sqlmodel's FieldInfo descriptor name: str # entity field with default sqlmodel's FieldInfo descriptor
# and default qbot's field descriptor # and default quickbot's field descriptor
description: str | None = Field( # field with sqlmodel's descriptor description: str | None = Field( # field with sqlmodel's descriptor
sa_type = String, index = True) # and default qbot's descriptor sa_type = String, index = True) # and default quickbot's descriptor
age: int = EntityField( # field with qbot's descriptor age: int = EntityField( # field with quickbot's descriptor
caption = "Age", caption = "Age",
) )
@@ -96,6 +96,4 @@ async def menu(context: CommandCallbackContext):
``` ```
## Result ## Result
<iframe width="100%" height="691" src="https://www.youtube.com/embed/ptTnoppkYfM" title="QBot Framework – The Open-Source RAD Tool for Telegram Bots" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> <iframe width="100%" height="691" src="https://www.youtube.com/embed/ptTnoppkYfM" title="QuickBot Framework – The Open-Source RAD Tool for Telegram Bots" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
forced_change_
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -2,7 +2,7 @@ from aiogram.types import Message, CallbackQuery
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
if TYPE_CHECKING: if TYPE_CHECKING:
from qbot.main import QBotApp from quickbot.main import QBotApp
from ..context import CallbackCommand from ..context import CallbackCommand
@@ -12,14 +12,14 @@ from ....utils.navigation import (
pop_navigation_context, pop_navigation_context,
) )
import qbot.bot.handlers.menu.main as menu_main import quickbot.bot.handlers.menu.main as menu_main
import qbot.bot.handlers.menu.settings as menu_settings import quickbot.bot.handlers.menu.settings as menu_settings
import qbot.bot.handlers.menu.parameters as menu_parameters import quickbot.bot.handlers.menu.parameters as menu_parameters
import qbot.bot.handlers.menu.language as menu_language import quickbot.bot.handlers.menu.language as menu_language
import qbot.bot.handlers.menu.entities as menu_entities import quickbot.bot.handlers.menu.entities as menu_entities
import qbot.bot.handlers.forms.entity_list as form_list import quickbot.bot.handlers.forms.entity_list as form_list
import qbot.bot.handlers.forms.entity_form as form_item import quickbot.bot.handlers.forms.entity_form as form_item
import qbot.bot.handlers.editors.main as editor import quickbot.bot.handlers.editors.main as editor
async def route_callback(message: Message | CallbackQuery, back: bool = True, **kwargs): async def route_callback(message: Message | CallbackQuery, back: bool = True, **kwargs):
@@ -47,7 +47,7 @@ async def route_callback(message: Message | CallbackQuery, back: bool = True, **
elif context.command == CallbackCommand.FIELD_EDITOR: elif context.command == CallbackCommand.FIELD_EDITOR:
await editor.field_editor(message, **kwargs) await editor.field_editor(message, **kwargs)
elif context.command == CallbackCommand.USER_COMMAND: elif context.command == CallbackCommand.USER_COMMAND:
import qbot.bot.handlers.user_handlers.main as user_handler import quickbot.bot.handlers.user_handlers.main as user_handler
app: "QBotApp" = kwargs["app"] app: "QBotApp" = kwargs["app"]
cmd = app.bot_commands.get(context.user_command.split("&")[0]) cmd = app.bot_commands.get(context.user_command.split("&")[0])
File renamed without changes.
@@ -6,7 +6,7 @@ from aiogram.utils.keyboard import InlineKeyboardBuilder
from sqlmodel.ext.asyncio.session import AsyncSession from sqlmodel.ext.asyncio.session import AsyncSession
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from qbot.model.descriptors import EntityEventContext from quickbot.model.descriptors import EntityEventContext
from ..context import ContextData, CallbackCommand from ..context import ContextData, CallbackCommand
from ....model.user import UserBase from ....model.user import UserBase
@@ -7,17 +7,17 @@ from ..context import ContextData, CallbackCommand
from ....utils.main import get_send_message from ....utils.main import get_send_message
from ....utils.navigation import save_navigation_context, pop_navigation_context from ....utils.navigation import save_navigation_context, pop_navigation_context
import qbot.bot.handlers.menu.entities as entities import quickbot.bot.handlers.menu.entities as entities
import qbot.bot.handlers.menu.settings as settings import quickbot.bot.handlers.menu.settings as settings
import qbot.bot.handlers.menu.parameters as parameters import quickbot.bot.handlers.menu.parameters as parameters
import qbot.bot.handlers.menu.language as language import quickbot.bot.handlers.menu.language as language
import qbot.bot.handlers.editors.main as editor import quickbot.bot.handlers.editors.main as editor
import qbot.bot.handlers.editors.main_callbacks as editor_callbacks import quickbot.bot.handlers.editors.main_callbacks as editor_callbacks
import qbot.bot.handlers.forms.entity_list as entity_list import quickbot.bot.handlers.forms.entity_list as entity_list
import qbot.bot.handlers.forms.entity_form as entity_form import quickbot.bot.handlers.forms.entity_form as entity_form
import qbot.bot.handlers.forms.entity_form_callbacks as entity_form_callbacks import quickbot.bot.handlers.forms.entity_form_callbacks as entity_form_callbacks
import qbot.bot.handlers.common.filtering_callbacks as filtering_callbacks import quickbot.bot.handlers.common.filtering_callbacks as filtering_callbacks
import qbot.bot.handlers.user_handlers.main as user_handlers_main import quickbot.bot.handlers.user_handlers.main as user_handlers_main
logger = getLogger(__name__) logger = getLogger(__name__)
File renamed without changes.
@@ -4,21 +4,21 @@ from aiogram.types import Message, CallbackQuery, InlineKeyboardButton
from inspect import iscoroutinefunction from inspect import iscoroutinefunction
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from qbot.utils.main import clear_state from quickbot.utils.main import clear_state
from qbot.utils.navigation import ( from quickbot.utils.navigation import (
save_navigation_context, save_navigation_context,
get_navigation_context, get_navigation_context,
pop_navigation_context, pop_navigation_context,
) )
from qbot.bot.handlers.editors.main import field_editor from quickbot.bot.handlers.editors.main import field_editor
from qbot.bot.handlers.common.routing import route_callback from quickbot.bot.handlers.common.routing import route_callback
from qbot.utils.serialization import deserialize from quickbot.utils.serialization import deserialize
from qbot.utils.main import get_send_message from quickbot.utils.main import get_send_message
from qbot.model.descriptors import BotCommand, CommandCallbackContext from quickbot.model.descriptors import BotCommand, CommandCallbackContext
from qbot.model.settings import Settings from quickbot.model.settings import Settings
if TYPE_CHECKING: if TYPE_CHECKING:
from qbot.main import QBotApp from quickbot.main import QBotApp
from ..context import ContextData, CallbackCommand, CommandContext from ..context import ContextData, CallbackCommand, CommandContext
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+4 -4
View File
@@ -1,4 +1,4 @@
from qbot import ( from quickbot import (
QBotApp, QBotApp,
BotEntity, BotEntity,
Entity, Entity,
@@ -10,9 +10,9 @@ from qbot import (
ContextData, ContextData,
CallbackCommand, CallbackCommand,
) )
from qbot.model.user import UserBase from quickbot.model.user import UserBase
from qbot.model.descriptors import Filter from quickbot.model.descriptors import Filter
from qbot.model.role import RoleBase from quickbot.model.role import RoleBase
from aiogram.types import InlineKeyboardButton from aiogram.types import InlineKeyboardButton
from datetime import datetime from datetime import datetime