├── .gitignore ├── Readme.md ├── book_src ├── .gitmodules ├── archetypes │ └── default.md ├── config.toml ├── content │ ├── _index.md │ ├── docs │ │ ├── aiogram │ │ │ ├── _index.md │ │ │ ├── lesson_13.md │ │ │ └── lesson_14.md │ │ ├── cheatsheet.md │ │ └── pyTelegramBotAPI │ │ │ ├── _index.md │ │ │ ├── lesson_00.md │ │ │ ├── lesson_01.md │ │ │ ├── lesson_02.md │ │ │ ├── lesson_03.md │ │ │ ├── lesson_04.md │ │ │ ├── lesson_05.md │ │ │ ├── lesson_06.md │ │ │ ├── lesson_07.md │ │ │ ├── lesson_08.md │ │ │ ├── lesson_09.md │ │ │ ├── lesson_10.md │ │ │ ├── lesson_11.md │ │ │ └── lesson_12.md │ └── posts │ │ ├── _index.md │ │ ├── creating-a-new-theme.md │ │ ├── goisforlovers.md │ │ ├── hugoisforlovers.md │ │ └── migrate-from-jekyll.md ├── layouts │ ├── docs │ │ └── single.html │ ├── partials │ │ └── docs │ │ │ ├── html-head.html │ │ │ ├── menu-filetree.html │ │ │ └── title_menu.html │ └── shortcodes │ │ ├── btn_left.html │ │ ├── btn_right.html │ │ └── img2.html ├── resources │ └── _gen │ │ └── assets │ │ └── scss │ │ ├── book-dev │ │ ├── book.scss_50fc8c04e12a2f59027287995557ceff.content │ │ └── book.scss_50fc8c04e12a2f59027287995557ceff.json │ │ ├── book.scss_50fc8c04e12a2f59027287995557ceff.content │ │ ├── book.scss_50fc8c04e12a2f59027287995557ceff.json │ │ └── telegram-tutorial │ │ ├── book.scss_50fc8c04e12a2f59027287995557ceff.content │ │ └── book.scss_50fc8c04e12a2f59027287995557ceff.json ├── static │ ├── assets │ │ └── custom.css │ ├── bot_logo.png │ ├── favicon.ico │ ├── favicon.png │ ├── flexsearch.min.js │ ├── images │ │ ├── l0_1.jpg │ │ ├── l0_2.png │ │ ├── l0_3.png │ │ ├── l0_4.png │ │ ├── l0_5.jpg │ │ ├── l0_6.png │ │ ├── l10_1.png │ │ ├── l10_2.png │ │ ├── l10_3.png │ │ ├── l11_1.png │ │ ├── l11_2.png │ │ ├── l12_1.jpg │ │ ├── l12_2.jpg │ │ ├── l13_1.png │ │ ├── l13_2.png │ │ ├── l13_3.png │ │ ├── l14_1.png │ │ ├── l14_2.png │ │ ├── l1_1.jpg │ │ ├── l1_2.jpg │ │ ├── l2_1.jpg │ │ ├── l2_2.jpg │ │ ├── l3_1.jpg │ │ ├── l4_1.jpg │ │ ├── l4_2.jpg │ │ ├── l6_1.jpg │ │ ├── l6_2.jpg │ │ ├── l6_3.jpg │ │ ├── l7_1.jpg │ │ ├── l7_2.jpg │ │ ├── l7_3.jpg │ │ ├── l7_4.jpg │ │ ├── l8_1.png │ │ ├── l8_2.png │ │ ├── l8_3.png │ │ ├── l8_4.png │ │ ├── l8_5.png │ │ ├── l9_1.jpg │ │ ├── l9_2.png │ │ └── l9_3.png │ ├── katex │ │ ├── auto-render.min.js │ │ ├── fonts │ │ │ ├── KaTeX_AMS-Regular.ttf │ │ │ ├── KaTeX_AMS-Regular.woff │ │ │ ├── KaTeX_AMS-Regular.woff2 │ │ │ ├── KaTeX_Caligraphic-Bold.ttf │ │ │ ├── KaTeX_Caligraphic-Bold.woff │ │ │ ├── KaTeX_Caligraphic-Bold.woff2 │ │ │ ├── KaTeX_Caligraphic-Regular.ttf │ │ │ ├── KaTeX_Caligraphic-Regular.woff │ │ │ ├── KaTeX_Caligraphic-Regular.woff2 │ │ │ ├── KaTeX_Fraktur-Bold.ttf │ │ │ ├── KaTeX_Fraktur-Bold.woff │ │ │ ├── KaTeX_Fraktur-Bold.woff2 │ │ │ ├── KaTeX_Fraktur-Regular.ttf │ │ │ ├── KaTeX_Fraktur-Regular.woff │ │ │ ├── KaTeX_Fraktur-Regular.woff2 │ │ │ ├── KaTeX_Main-Bold.ttf │ │ │ ├── KaTeX_Main-Bold.woff │ │ │ ├── KaTeX_Main-Bold.woff2 │ │ │ ├── KaTeX_Main-BoldItalic.ttf │ │ │ ├── KaTeX_Main-BoldItalic.woff │ │ │ ├── KaTeX_Main-BoldItalic.woff2 │ │ │ ├── KaTeX_Main-Italic.ttf │ │ │ ├── KaTeX_Main-Italic.woff │ │ │ ├── KaTeX_Main-Italic.woff2 │ │ │ ├── KaTeX_Main-Regular.ttf │ │ │ ├── KaTeX_Main-Regular.woff │ │ │ ├── KaTeX_Main-Regular.woff2 │ │ │ ├── KaTeX_Math-BoldItalic.ttf │ │ │ ├── KaTeX_Math-BoldItalic.woff │ │ │ ├── KaTeX_Math-BoldItalic.woff2 │ │ │ ├── KaTeX_Math-Italic.ttf │ │ │ ├── KaTeX_Math-Italic.woff │ │ │ ├── KaTeX_Math-Italic.woff2 │ │ │ ├── KaTeX_SansSerif-Bold.ttf │ │ │ ├── KaTeX_SansSerif-Bold.woff │ │ │ ├── KaTeX_SansSerif-Bold.woff2 │ │ │ ├── KaTeX_SansSerif-Italic.ttf │ │ │ ├── KaTeX_SansSerif-Italic.woff │ │ │ ├── KaTeX_SansSerif-Italic.woff2 │ │ │ ├── KaTeX_SansSerif-Regular.ttf │ │ │ ├── KaTeX_SansSerif-Regular.woff │ │ │ ├── KaTeX_SansSerif-Regular.woff2 │ │ │ ├── KaTeX_Script-Regular.ttf │ │ │ ├── KaTeX_Script-Regular.woff │ │ │ ├── KaTeX_Script-Regular.woff2 │ │ │ ├── KaTeX_Size1-Regular.ttf │ │ │ ├── KaTeX_Size1-Regular.woff │ │ │ ├── KaTeX_Size1-Regular.woff2 │ │ │ ├── KaTeX_Size2-Regular.ttf │ │ │ ├── KaTeX_Size2-Regular.woff │ │ │ ├── KaTeX_Size2-Regular.woff2 │ │ │ ├── KaTeX_Size3-Regular.ttf │ │ │ ├── KaTeX_Size3-Regular.woff │ │ │ ├── KaTeX_Size3-Regular.woff2 │ │ │ ├── KaTeX_Size4-Regular.ttf │ │ │ ├── KaTeX_Size4-Regular.woff │ │ │ ├── KaTeX_Size4-Regular.woff2 │ │ │ ├── KaTeX_Typewriter-Regular.ttf │ │ │ ├── KaTeX_Typewriter-Regular.woff │ │ │ └── KaTeX_Typewriter-Regular.woff2 │ │ ├── katex.min.css │ │ └── katex.min.js │ ├── mermaid.min.js │ └── svg │ │ ├── calendar.svg │ │ ├── edit.svg │ │ ├── menu.svg │ │ ├── toc.svg │ │ └── translate.svg └── themes │ └── book │ ├── .github │ └── workflows │ │ └── main.yml │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── archetypes │ ├── docs.md │ └── posts.md │ ├── assets │ ├── _custom.scss │ ├── _defaults.scss │ ├── _fonts.scss │ ├── _main.scss │ ├── _markdown.scss │ ├── _print.scss │ ├── _shortcodes.scss │ ├── _utils.scss │ ├── _variables.scss │ ├── book.scss │ ├── manifest.json │ ├── menu-reset.js │ ├── normalize.css │ ├── plugins │ │ ├── _dark.scss │ │ ├── _numbered.scss │ │ └── _scrollbars.scss │ ├── search-data.js │ ├── search.js │ ├── sw-register.js │ └── sw.js │ ├── exampleSite │ ├── assets │ │ ├── _custom.scss │ │ └── _variables.scss │ ├── config.toml │ ├── config.yaml │ ├── content.ru │ │ └── _index.md │ ├── content.zh │ │ └── _index.md │ ├── content │ │ ├── _index.md │ │ ├── docs │ │ │ ├── example │ │ │ │ ├── _index.md │ │ │ │ ├── collapsed │ │ │ │ │ ├── 3rd-level │ │ │ │ │ │ ├── 4th-level.md │ │ │ │ │ │ └── _index.md │ │ │ │ │ └── _index.md │ │ │ │ ├── hidden.md │ │ │ │ └── table-of-contents │ │ │ │ │ ├── _index.md │ │ │ │ │ ├── with-toc.md │ │ │ │ │ └── without-toc.md │ │ │ └── shortcodes │ │ │ │ ├── _index.md │ │ │ │ ├── buttons.md │ │ │ │ ├── columns.md │ │ │ │ ├── details.md │ │ │ │ ├── expand.md │ │ │ │ ├── hints.md │ │ │ │ ├── katex.md │ │ │ │ ├── mermaid.md │ │ │ │ └── tabs.md │ │ ├── menu │ │ │ └── index.md │ │ └── posts │ │ │ ├── _index.md │ │ │ ├── creating-a-new-theme.md │ │ │ ├── goisforlovers.md │ │ │ ├── hugoisforlovers.md │ │ │ └── migrate-from-jekyll.md │ └── resources │ │ └── _gen │ │ └── assets │ │ └── scss │ │ ├── book.scss_50fc8c04e12a2f59027287995557ceff.content │ │ ├── book.scss_50fc8c04e12a2f59027287995557ceff.json │ │ └── example │ │ ├── book.scss_50fc8c04e12a2f59027287995557ceff.content │ │ └── book.scss_50fc8c04e12a2f59027287995557ceff.json │ ├── i18n │ ├── cn.yaml │ ├── de.yaml │ ├── en.yaml │ ├── es.yaml │ ├── fr.yaml │ ├── jp.yaml │ ├── ko.yaml │ ├── pt.yaml │ ├── ru.yaml │ ├── sv.yaml │ ├── uk.yaml │ └── zh.yaml │ ├── images │ ├── screenshot.png │ └── tn.png │ ├── layouts │ ├── 404.html │ ├── _default │ │ ├── _markup │ │ │ ├── render-image.html │ │ │ └── render-link.html │ │ ├── baseof.html │ │ ├── list.html │ │ └── single.html │ ├── partials │ │ └── docs │ │ │ ├── brand.html │ │ │ ├── comments.html │ │ │ ├── date.html │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ ├── html-head.html │ │ │ ├── inject │ │ │ ├── body.html │ │ │ ├── content-after.html │ │ │ ├── content-before.html │ │ │ ├── footer.html │ │ │ ├── head.html │ │ │ ├── menu-after.html │ │ │ └── menu-before.html │ │ │ ├── languages.html │ │ │ ├── menu-bundle.html │ │ │ ├── menu-filetree.html │ │ │ ├── menu-hugo.html │ │ │ ├── menu.html │ │ │ ├── post-meta.html │ │ │ ├── search.html │ │ │ ├── taxonomy.html │ │ │ ├── title.html │ │ │ └── toc.html │ ├── posts │ │ ├── list.html │ │ └── single.html │ ├── shortcodes │ │ ├── button.html │ │ ├── columns.html │ │ ├── details.html │ │ ├── expand.html │ │ ├── hint.html │ │ ├── katex.html │ │ ├── mermaid.html │ │ ├── tab.html │ │ └── tabs.html │ └── taxonomy │ │ ├── list.html │ │ └── taxonomy.html │ ├── static │ ├── favicon.png │ ├── favicon.svg │ ├── flexsearch.min.js │ ├── fonts │ │ ├── roboto-mono-v6-latin-regular.woff │ │ ├── roboto-mono-v6-latin-regular.woff2 │ │ ├── roboto-v19-latin-300italic.woff │ │ ├── roboto-v19-latin-300italic.woff2 │ │ ├── roboto-v19-latin-700.woff │ │ ├── roboto-v19-latin-700.woff2 │ │ ├── roboto-v19-latin-regular.woff │ │ └── roboto-v19-latin-regular.woff2 │ ├── katex │ │ ├── auto-render.min.js │ │ ├── fonts │ │ │ ├── KaTeX_AMS-Regular.ttf │ │ │ ├── KaTeX_AMS-Regular.woff │ │ │ ├── KaTeX_AMS-Regular.woff2 │ │ │ ├── KaTeX_Caligraphic-Bold.ttf │ │ │ ├── KaTeX_Caligraphic-Bold.woff │ │ │ ├── KaTeX_Caligraphic-Bold.woff2 │ │ │ ├── KaTeX_Caligraphic-Regular.ttf │ │ │ ├── KaTeX_Caligraphic-Regular.woff │ │ │ ├── KaTeX_Caligraphic-Regular.woff2 │ │ │ ├── KaTeX_Fraktur-Bold.ttf │ │ │ ├── KaTeX_Fraktur-Bold.woff │ │ │ ├── KaTeX_Fraktur-Bold.woff2 │ │ │ ├── KaTeX_Fraktur-Regular.ttf │ │ │ ├── KaTeX_Fraktur-Regular.woff │ │ │ ├── KaTeX_Fraktur-Regular.woff2 │ │ │ ├── KaTeX_Main-Bold.ttf │ │ │ ├── KaTeX_Main-Bold.woff │ │ │ ├── KaTeX_Main-Bold.woff2 │ │ │ ├── KaTeX_Main-BoldItalic.ttf │ │ │ ├── KaTeX_Main-BoldItalic.woff │ │ │ ├── KaTeX_Main-BoldItalic.woff2 │ │ │ ├── KaTeX_Main-Italic.ttf │ │ │ ├── KaTeX_Main-Italic.woff │ │ │ ├── KaTeX_Main-Italic.woff2 │ │ │ ├── KaTeX_Main-Regular.ttf │ │ │ ├── KaTeX_Main-Regular.woff │ │ │ ├── KaTeX_Main-Regular.woff2 │ │ │ ├── KaTeX_Math-BoldItalic.ttf │ │ │ ├── KaTeX_Math-BoldItalic.woff │ │ │ ├── KaTeX_Math-BoldItalic.woff2 │ │ │ ├── KaTeX_Math-Italic.ttf │ │ │ ├── KaTeX_Math-Italic.woff │ │ │ ├── KaTeX_Math-Italic.woff2 │ │ │ ├── KaTeX_SansSerif-Bold.ttf │ │ │ ├── KaTeX_SansSerif-Bold.woff │ │ │ ├── KaTeX_SansSerif-Bold.woff2 │ │ │ ├── KaTeX_SansSerif-Italic.ttf │ │ │ ├── KaTeX_SansSerif-Italic.woff │ │ │ ├── KaTeX_SansSerif-Italic.woff2 │ │ │ ├── KaTeX_SansSerif-Regular.ttf │ │ │ ├── KaTeX_SansSerif-Regular.woff │ │ │ ├── KaTeX_SansSerif-Regular.woff2 │ │ │ ├── KaTeX_Script-Regular.ttf │ │ │ ├── KaTeX_Script-Regular.woff │ │ │ ├── KaTeX_Script-Regular.woff2 │ │ │ ├── KaTeX_Size1-Regular.ttf │ │ │ ├── KaTeX_Size1-Regular.woff │ │ │ ├── KaTeX_Size1-Regular.woff2 │ │ │ ├── KaTeX_Size2-Regular.ttf │ │ │ ├── KaTeX_Size2-Regular.woff │ │ │ ├── KaTeX_Size2-Regular.woff2 │ │ │ ├── KaTeX_Size3-Regular.ttf │ │ │ ├── KaTeX_Size3-Regular.woff │ │ │ ├── KaTeX_Size3-Regular.woff2 │ │ │ ├── KaTeX_Size4-Regular.ttf │ │ │ ├── KaTeX_Size4-Regular.woff │ │ │ ├── KaTeX_Size4-Regular.woff2 │ │ │ ├── KaTeX_Typewriter-Regular.ttf │ │ │ ├── KaTeX_Typewriter-Regular.woff │ │ │ └── KaTeX_Typewriter-Regular.woff2 │ │ ├── katex.min.css │ │ └── katex.min.js │ ├── mermaid.min.js │ └── svg │ │ ├── calendar.svg │ │ ├── edit.svg │ │ ├── menu.svg │ │ ├── toc.svg │ │ └── translate.svg │ └── theme.toml ├── docs ├── 404.html ├── assets │ └── custom.css ├── book.min.6df681b0bb21155cba49f6078e3559216772d8e03e780d240c73ea21817ed5e5.css ├── bot_logo.png ├── dev │ └── cheatsheet │ │ └── index.html ├── docs │ ├── aiogram │ │ ├── index.html │ │ └── index.xml │ ├── index.html │ ├── index.xml │ ├── lesson_01 │ │ └── index.html │ ├── lesson_02 │ │ └── index.html │ ├── lesson_03 │ │ └── index.html │ ├── lesson_04 │ │ └── index.html │ ├── lesson_05 │ │ └── index.html │ ├── lesson_06 │ │ └── index.html │ ├── lesson_07 │ │ └── index.html │ ├── lesson_08 │ │ └── index.html │ ├── lesson_09 │ │ └── index.html │ ├── lesson_10 │ │ └── index.html │ ├── lesson_11 │ │ └── index.html │ ├── lesson_12 │ │ └── index.html │ ├── lesson_13 │ │ └── index.html │ ├── lesson_14 │ │ └── index.html │ └── pyTelegramBotAPI │ │ ├── index.html │ │ ├── index.xml │ │ └── lesson_00 │ │ └── index.html ├── favicon.ico ├── favicon.png ├── favicon.svg ├── flexsearch.min.js ├── fonts │ ├── roboto-mono-v6-latin-regular.woff │ ├── roboto-mono-v6-latin-regular.woff2 │ ├── roboto-v19-latin-300italic.woff │ ├── roboto-v19-latin-300italic.woff2 │ ├── roboto-v19-latin-700.woff │ ├── roboto-v19-latin-700.woff2 │ ├── roboto-v19-latin-regular.woff │ └── roboto-v19-latin-regular.woff2 ├── images │ ├── l0_1.jpg │ ├── l0_2.png │ ├── l0_3.png │ ├── l0_4.png │ ├── l0_5.jpg │ ├── l0_6.png │ ├── l10_1.png │ ├── l10_2.png │ ├── l10_3.png │ ├── l11_1.png │ ├── l11_2.png │ ├── l12_1.jpg │ ├── l12_2.jpg │ ├── l13_1.png │ ├── l13_2.png │ ├── l13_3.png │ ├── l14_1.png │ ├── l14_2.png │ ├── l1_1.jpg │ ├── l1_2.jpg │ ├── l2_1.jpg │ ├── l2_2.jpg │ ├── l3_1.jpg │ ├── l4_1.jpg │ ├── l4_2.jpg │ ├── l6_1.jpg │ ├── l6_2.jpg │ ├── l6_3.jpg │ ├── l7_1.jpg │ ├── l7_2.jpg │ ├── l7_3.jpg │ ├── l7_4.jpg │ ├── l8_1.png │ ├── l8_2.png │ ├── l8_3.png │ ├── l8_4.png │ ├── l8_5.png │ ├── l9_1.jpg │ ├── l9_2.png │ └── l9_3.png ├── index.html ├── index.xml ├── katex │ ├── auto-render.min.js │ ├── fonts │ │ ├── KaTeX_AMS-Regular.ttf │ │ ├── KaTeX_AMS-Regular.woff │ │ ├── KaTeX_AMS-Regular.woff2 │ │ ├── KaTeX_Caligraphic-Bold.ttf │ │ ├── KaTeX_Caligraphic-Bold.woff │ │ ├── KaTeX_Caligraphic-Bold.woff2 │ │ ├── KaTeX_Caligraphic-Regular.ttf │ │ ├── KaTeX_Caligraphic-Regular.woff │ │ ├── KaTeX_Caligraphic-Regular.woff2 │ │ ├── KaTeX_Fraktur-Bold.ttf │ │ ├── KaTeX_Fraktur-Bold.woff │ │ ├── KaTeX_Fraktur-Bold.woff2 │ │ ├── KaTeX_Fraktur-Regular.ttf │ │ ├── KaTeX_Fraktur-Regular.woff │ │ ├── KaTeX_Fraktur-Regular.woff2 │ │ ├── KaTeX_Main-Bold.ttf │ │ ├── KaTeX_Main-Bold.woff │ │ ├── KaTeX_Main-Bold.woff2 │ │ ├── KaTeX_Main-BoldItalic.ttf │ │ ├── KaTeX_Main-BoldItalic.woff │ │ ├── KaTeX_Main-BoldItalic.woff2 │ │ ├── KaTeX_Main-Italic.ttf │ │ ├── KaTeX_Main-Italic.woff │ │ ├── KaTeX_Main-Italic.woff2 │ │ ├── KaTeX_Main-Regular.ttf │ │ ├── KaTeX_Main-Regular.woff │ │ ├── KaTeX_Main-Regular.woff2 │ │ ├── KaTeX_Math-BoldItalic.ttf │ │ ├── KaTeX_Math-BoldItalic.woff │ │ ├── KaTeX_Math-BoldItalic.woff2 │ │ ├── KaTeX_Math-Italic.ttf │ │ ├── KaTeX_Math-Italic.woff │ │ ├── KaTeX_Math-Italic.woff2 │ │ ├── KaTeX_SansSerif-Bold.ttf │ │ ├── KaTeX_SansSerif-Bold.woff │ │ ├── KaTeX_SansSerif-Bold.woff2 │ │ ├── KaTeX_SansSerif-Italic.ttf │ │ ├── KaTeX_SansSerif-Italic.woff │ │ ├── KaTeX_SansSerif-Italic.woff2 │ │ ├── KaTeX_SansSerif-Regular.ttf │ │ ├── KaTeX_SansSerif-Regular.woff │ │ ├── KaTeX_SansSerif-Regular.woff2 │ │ ├── KaTeX_Script-Regular.ttf │ │ ├── KaTeX_Script-Regular.woff │ │ ├── KaTeX_Script-Regular.woff2 │ │ ├── KaTeX_Size1-Regular.ttf │ │ ├── KaTeX_Size1-Regular.woff │ │ ├── KaTeX_Size1-Regular.woff2 │ │ ├── KaTeX_Size2-Regular.ttf │ │ ├── KaTeX_Size2-Regular.woff │ │ ├── KaTeX_Size2-Regular.woff2 │ │ ├── KaTeX_Size3-Regular.ttf │ │ ├── KaTeX_Size3-Regular.woff │ │ ├── KaTeX_Size3-Regular.woff2 │ │ ├── KaTeX_Size4-Regular.ttf │ │ ├── KaTeX_Size4-Regular.woff │ │ ├── KaTeX_Size4-Regular.woff2 │ │ ├── KaTeX_Typewriter-Regular.ttf │ │ ├── KaTeX_Typewriter-Regular.woff │ │ └── KaTeX_Typewriter-Regular.woff2 │ ├── katex.min.css │ └── katex.min.js ├── manifest.json ├── mermaid.min.js ├── posts │ ├── creating-a-new-theme │ │ └── index.html │ ├── goisforlovers │ │ └── index.html │ ├── hugoisforlovers │ │ └── index.html │ ├── index.html │ ├── index.xml │ ├── migrate-from-jekyll │ │ └── index.html │ └── page │ │ └── 1 │ │ └── index.html ├── sitemap.xml └── svg │ ├── calendar.svg │ ├── edit.svg │ ├── menu.svg │ ├── toc.svg │ └── translate.svg ├── lesson_01 ├── bot.py └── config.py ├── lesson_02_03 ├── SQLighter.py ├── bot.py ├── config.py ├── music.db ├── music │ ├── 01_ImagineDragons_Radioactive.ogg │ ├── 02_ArcticMonkeys_DoIWannaKnow.ogg │ ├── 03_ThePixies_WhereIsMyMind.ogg │ ├── 04_BlackEyedPeas_DumDiddly.ogg │ └── 05_Arabesque_InTheHeatOfADiscoNight.ogg └── utils.py ├── lesson_04 ├── bot.py └── config.py ├── lesson_05 └── bot.py ├── lesson_06 ├── README.md ├── bot.py ├── botan.py └── config.py ├── lesson_07 └── bot.py ├── lesson_08 └── bot.py ├── lesson_09 └── bot.py ├── lesson_10 └── bot.py ├── lesson_11 ├── bot.py ├── config.py └── dbworker.py ├── lesson_12 ├── variant_1 │ ├── bot1.py │ ├── bot2.py │ └── server.py └── variant_2 │ ├── add_this_to_nginx.conf │ ├── bot1.py │ └── bot2.py ├── lesson_13 ├── bot.py └── quizzer.py └── lesson_14 ├── bot.py ├── handlers ├── __init__.py ├── default_handler.py ├── drinks.py ├── food.py ├── general_commands.py └── test.py └── misc.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | .idea/ 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | venv/ 13 | build/ 14 | develop-eggs/ 15 | dist/ 16 | downloads/ 17 | eggs/ 18 | .eggs/ 19 | lib/ 20 | lib64/ 21 | parts/ 22 | sdist/ 23 | var/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *,cover 47 | 48 | # Translations 49 | *.mo 50 | *.pot 51 | 52 | # Django stuff: 53 | *.log 54 | 55 | # Sphinx documentation 56 | docs/_build/ 57 | 58 | # PyBuilder 59 | target/ 60 | 61 | # Other 62 | book_src/hugo* 63 | -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | ### Уроки по написанию простого бота для Telegram 2 | 3 | ℹ️ также доступна [вторая версия книги](https://mastergroosha.github.io/telegram-tutorial-2/), 4 | посвящённая преимущественно фреймворку aiogram. 5 | 6 | В данном репозитории хранятся исходные коды для уроков по написанию простого бота для Telegram. 7 | Сами уроки можно прочесть [вот тут](https://mastergroosha.github.io/telegram-tutorial). А обсудить – в [Telegram-чатике](https://t.me/joinchat/TsftDfnevFLQS1ts) 8 | 9 | [Урок 1. Введение, простой echo-бот](https://mastergroosha.github.io/telegram-tutorial/docs/lesson_01/) 10 | [Урок 2. “Угадай мелодию”. Подготовка](https://mastergroosha.github.io/telegram-tutorial/docs/lesson_02/) 11 | [Урок 3. “Угадай мелодию”. Завершаем бота](https://mastergroosha.github.io/telegram-tutorial/docs/lesson_03/) 12 | [Урок 4. Вебхуки](https://mastergroosha.github.io/telegram-tutorial/docs/lesson_04/) 13 | [Урок 5. Автопостинг в каналы](https://mastergroosha.github.io/telegram-tutorial/docs/lesson_05/) 14 | Урок 6. Собираем аналитику при помощи Botan (устарел) 15 | [Урок 7. Встраиваемые боты (Inline)](https://mastergroosha.github.io/telegram-tutorial/docs/lesson_07/) 16 | [Урок 8. Bot API v2: Кнопки и редактирование сообщений](https://mastergroosha.github.io/telegram-tutorial/docs/lesson_08/) 17 | [Урок 9. Bot API v2: Специальные кнопки, опять редактирование сообщений, кэшированный инлайн](https://mastergroosha.github.io/telegram-tutorial/docs/lesson_09/) 18 | [Урок 10. Bot API v3. Автоматизируем работу в группах](https://mastergroosha.github.io/telegram-tutorial/docs/lesson_10/) 19 | [Урок 11. Ведём (более-менее) осмысленные диалоги. Конечные автоматы](https://mastergroosha.github.io/telegram-tutorial/docs/lesson_11/) 20 | [Урок 12. Запускаем несколько ботов на одном сервере](https://mastergroosha.github.io/telegram-tutorial/docs/lesson_12/) 21 | [Урок 13. Опросы v2.0](https://mastergroosha.github.io/telegram-tutorial/docs/lesson_13/) 22 | [Урок 14. Конечные автоматы в aiogram, разбиваем логику по файлам](https://mastergroosha.github.io/telegram-tutorial-2/fsm/) 23 | 24 | 25 | Вдобавок к текстам программ, в репозитории с июня 2019 года располагаются исходники учебника, который хостится здесь же, на Github Pages, и собирается при помощи фреймворка [Hugo](https://gohugo.io) 26 | 27 | -------------------------------------------------------------------------------- /book_src/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "themes/book"] 2 | path = themes/book 3 | url = https://github.com/alex-shpak/hugo-book 4 | -------------------------------------------------------------------------------- /book_src/archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .Name "-" " " | title }}" 3 | date: {{ .Date }} 4 | draft: true 5 | --- 6 | 7 | -------------------------------------------------------------------------------- /book_src/content/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Предисловие 3 | type: docs 4 | bookFlatSection: false 5 | BookToC: false 6 | --- 7 | 8 | # Предисловие 9 | 10 | Здравствуйте! «Учебник», на страницах которого вы оказались, предназначен для тех, кто хочет научиться писать ботов для Telegram с использованием библиотек [pyTelegramBotAPI](https://github.com/eternnoir/pyTelegramBotAPI) (Уроки 1-12) и [aiogram](https://github.com/aiogram/aiogram) ([урок 13]({{< relref "/docs/aiogram/lesson_13" >}}) и новее). Автор не ставил собой целью сделать всеобъемлющую документацию, а лишь познакомить читателя с прекрасным миром ботов. 11 | 12 | {{< hint warning >}} 13 | Предполагается, что читатель уже знаком с языком Python и способен самостоятельно настроить virtual environment (venv), а также перевести текст возникающих ошибок и хотя бы их загуглить. 14 | Если же вы начали изучать язык только вчера/на прошлой неделе/в прошлом месяце, то, наверное, этот учебник пока ещё не для вас. 15 | {{< /hint >}} 16 | 17 | Новичкам рекомендуется – после ознакомления с языком Python, разумеется, – читать уроки по порядку, более продвинутые разработчики вольны использовать «учебник» в режиме справочника. 18 | 19 | Все исходные коды к урокам расположены в [этом репозитории](https://github.com/MasterGroosha/telegram-tutorial), а обсудить материал можно в [Telegram-чате](https://t.me/joinchat/TsftDfnevFLQS1ts). 20 | 21 | Поблагодарить автора (материально) можно [здесь](https://money.yandex.ru/to/41001515922197). Перевод является добровольным и безвозмездным. Вам несложно, а мне приятно :) 22 | 23 | ℹ️ также доступна [вторая версия книги](https://mastergroosha.github.io/telegram-tutorial-2/), 24 | посвящённая преимущественно фреймворку aiogram. 25 | 26 |
27 | {{< button relref="/docs/pytelegrambotapi/lesson_00" >}}Настроить рабочее окружение{{< /button >}} {{< button relref="/docs/pytelegrambotapi/lesson_01" >}}Перейти к первому уроку{{< /button >}} 28 |
-------------------------------------------------------------------------------- /book_src/content/docs/aiogram/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | weight: 2 3 | bookFlatSection: true 4 | title: "aiogram" 5 | --- 6 | -------------------------------------------------------------------------------- /book_src/content/docs/aiogram/lesson_14.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Урок 14" 3 | description: "Конечные автоматы в aiogram, разбиваем логику по файлам" 4 | type: docs 5 | url: "/docs/lesson_14" 6 | BookToC: true 7 | weight: 15 8 | --- 9 | 10 | {{< hint warning >}} 11 | Эта глава отныне доступна во [второй версии книги](https://mastergroosha.github.io/telegram-tutorial-2/fsm/), 12 | бесплатно, без регистрации и SMS. 13 | {{< /hint >}} -------------------------------------------------------------------------------- /book_src/content/docs/pyTelegramBotAPI/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | weight: 1 3 | bookFlatSection: true 4 | title: "pyTelegramBotAPI" 5 | --- 6 | -------------------------------------------------------------------------------- /book_src/content/posts/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | menu: 3 | after: 4 | name: posts 5 | weight: 999 6 | title: " " # пока прячем всю секцию 7 | --- 8 | -------------------------------------------------------------------------------- /book_src/layouts/docs/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
3 |

{{ .Description }}

4 |

5 | {{- .Content -}} 6 |

7 |
8 | {{ end }} 9 | -------------------------------------------------------------------------------- /book_src/layouts/partials/docs/menu-filetree.html: -------------------------------------------------------------------------------- 1 | {{ $bookSection := default "docs" .Site.Params.BookSection }} 2 | {{ if eq $bookSection "*" }} 3 | {{ $bookSection = "/" }}{{/* Backward compatibility */}} 4 | {{ end }} 5 | 6 | {{ with .Site.GetPage $bookSection }} 7 | {{ template "book-section-children" (dict "Section" . "CurrentPage" $) }} 8 | {{ end }} 9 | 10 | {{ define "book-section-children" }}{{/* (dict "Section" .Section "CurrentPage" .CurrentPage) */}} 11 | {{ $self := eq .CurrentPage .Section }} 12 | {{ $ancestor := .Section.IsAncestor .CurrentPage }} 13 | {{ $collapsed := .Section.Params.bookCollapseSection }} 14 | 15 | {{ if or $self $ancestor (not $collapsed) }} 16 | 30 | {{ end }} 31 | {{ end }} 32 | 33 | {{ define "book-page-link" }}{{/* (dict "Page" .Page "CurrentPage" .CurrentPage) */}} 34 | {{ if .Page.Content }} 35 | 38 | {{- partial "docs/title_menu" .Page -}} 39 | 40 | {{ else }} 41 | {{- partial "docs/title" .Page -}} 42 | {{ end }} 43 | {{ end }} 44 | -------------------------------------------------------------------------------- /book_src/layouts/partials/docs/title_menu.html: -------------------------------------------------------------------------------- 1 | 5 | {{ $title := "" }} 6 | 7 | 8 | {{ if and .Title .Description }} 9 | {{ $title = printf "%s. %s" .Title .Description }} 10 | {{ else if .Title }} 11 | {{ $title = .Title }} 12 | {{ else if and .IsSection .File }} 13 | {{ $title = path.Base .File.Dir | humanize | title }} 14 | {{ else if and .IsPage .File }} 15 | {{ $title = .File.BaseFileName | humanize | title }} 16 | {{ end }} 17 | 18 | {{ return $title }} 19 | -------------------------------------------------------------------------------- /book_src/layouts/shortcodes/btn_left.html: -------------------------------------------------------------------------------- 1 | {{ $ref := "" }} 2 | {{ $target := "" }} 3 | {{ with .Get "href" }} 4 | {{ $ref = . }} 5 | {{ $target = "_blank" }} 6 | {{ end }} 7 | {{ with .Get "relref" }} 8 | {{ $ref = relref $ . }} 9 | {{ end }} 10 | ← {{ $.Inner }} 11 | -------------------------------------------------------------------------------- /book_src/layouts/shortcodes/btn_right.html: -------------------------------------------------------------------------------- 1 | {{ $ref := "" }} 2 | {{ $target := "" }} 3 | {{ with .Get "href" }} 4 | {{ $ref = . }} 5 | {{ $target = "_blank" }} 6 | {{ end }} 7 | {{ with .Get "relref" }} 8 | {{ $ref = relref $ . }} 9 | {{ end }} 10 | {{ $.Inner }} → 11 | -------------------------------------------------------------------------------- /book_src/layouts/shortcodes/img2.html: -------------------------------------------------------------------------------- 1 |
2 |
{{ with .Get "caption" }} {{.}} {{ end }}
-------------------------------------------------------------------------------- /book_src/resources/_gen/assets/scss/book-dev/book.scss_50fc8c04e12a2f59027287995557ceff.json: -------------------------------------------------------------------------------- 1 | {"Target":"book.min.6df681b0bb21155cba49f6078e3559216772d8e03e780d240c73ea21817ed5e5.css","MediaType":"text/css","Data":{"Integrity":"sha256-bfaBsLshFVy6SfYHjjVZIWdy2OA+eA0kDHPqIYF+1eU="}} -------------------------------------------------------------------------------- /book_src/resources/_gen/assets/scss/book.scss_50fc8c04e12a2f59027287995557ceff.json: -------------------------------------------------------------------------------- 1 | {"Target":"book.min.6df681b0bb21155cba49f6078e3559216772d8e03e780d240c73ea21817ed5e5.css","MediaType":"text/css","Data":{"Integrity":"sha256-bfaBsLshFVy6SfYHjjVZIWdy2OA+eA0kDHPqIYF+1eU="}} -------------------------------------------------------------------------------- /book_src/resources/_gen/assets/scss/telegram-tutorial/book.scss_50fc8c04e12a2f59027287995557ceff.json: -------------------------------------------------------------------------------- 1 | {"Target":"book.min.6df681b0bb21155cba49f6078e3559216772d8e03e780d240c73ea21817ed5e5.css","MediaType":"text/css","Data":{"Integrity":"sha256-bfaBsLshFVy6SfYHjjVZIWdy2OA+eA0kDHPqIYF+1eU="}} -------------------------------------------------------------------------------- /book_src/static/assets/custom.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size: 10px; 3 | } -------------------------------------------------------------------------------- /book_src/static/bot_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/bot_logo.png -------------------------------------------------------------------------------- /book_src/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/favicon.ico -------------------------------------------------------------------------------- /book_src/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/favicon.png -------------------------------------------------------------------------------- /book_src/static/images/l0_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l0_1.jpg -------------------------------------------------------------------------------- /book_src/static/images/l0_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l0_2.png -------------------------------------------------------------------------------- /book_src/static/images/l0_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l0_3.png -------------------------------------------------------------------------------- /book_src/static/images/l0_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l0_4.png -------------------------------------------------------------------------------- /book_src/static/images/l0_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l0_5.jpg -------------------------------------------------------------------------------- /book_src/static/images/l0_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l0_6.png -------------------------------------------------------------------------------- /book_src/static/images/l10_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l10_1.png -------------------------------------------------------------------------------- /book_src/static/images/l10_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l10_2.png -------------------------------------------------------------------------------- /book_src/static/images/l10_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l10_3.png -------------------------------------------------------------------------------- /book_src/static/images/l11_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l11_1.png -------------------------------------------------------------------------------- /book_src/static/images/l11_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l11_2.png -------------------------------------------------------------------------------- /book_src/static/images/l12_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l12_1.jpg -------------------------------------------------------------------------------- /book_src/static/images/l12_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l12_2.jpg -------------------------------------------------------------------------------- /book_src/static/images/l13_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l13_1.png -------------------------------------------------------------------------------- /book_src/static/images/l13_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l13_2.png -------------------------------------------------------------------------------- /book_src/static/images/l13_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l13_3.png -------------------------------------------------------------------------------- /book_src/static/images/l14_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l14_1.png -------------------------------------------------------------------------------- /book_src/static/images/l14_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l14_2.png -------------------------------------------------------------------------------- /book_src/static/images/l1_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l1_1.jpg -------------------------------------------------------------------------------- /book_src/static/images/l1_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l1_2.jpg -------------------------------------------------------------------------------- /book_src/static/images/l2_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l2_1.jpg -------------------------------------------------------------------------------- /book_src/static/images/l2_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l2_2.jpg -------------------------------------------------------------------------------- /book_src/static/images/l3_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l3_1.jpg -------------------------------------------------------------------------------- /book_src/static/images/l4_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l4_1.jpg -------------------------------------------------------------------------------- /book_src/static/images/l4_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l4_2.jpg -------------------------------------------------------------------------------- /book_src/static/images/l6_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l6_1.jpg -------------------------------------------------------------------------------- /book_src/static/images/l6_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l6_2.jpg -------------------------------------------------------------------------------- /book_src/static/images/l6_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l6_3.jpg -------------------------------------------------------------------------------- /book_src/static/images/l7_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l7_1.jpg -------------------------------------------------------------------------------- /book_src/static/images/l7_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l7_2.jpg -------------------------------------------------------------------------------- /book_src/static/images/l7_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l7_3.jpg -------------------------------------------------------------------------------- /book_src/static/images/l7_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l7_4.jpg -------------------------------------------------------------------------------- /book_src/static/images/l8_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l8_1.png -------------------------------------------------------------------------------- /book_src/static/images/l8_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l8_2.png -------------------------------------------------------------------------------- /book_src/static/images/l8_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l8_3.png -------------------------------------------------------------------------------- /book_src/static/images/l8_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l8_4.png -------------------------------------------------------------------------------- /book_src/static/images/l8_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l8_5.png -------------------------------------------------------------------------------- /book_src/static/images/l9_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l9_1.jpg -------------------------------------------------------------------------------- /book_src/static/images/l9_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l9_2.png -------------------------------------------------------------------------------- /book_src/static/images/l9_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/images/l9_3.png -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_AMS-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_AMS-Regular.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_AMS-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_AMS-Regular.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_AMS-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_AMS-Regular.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Caligraphic-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Caligraphic-Bold.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Caligraphic-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Caligraphic-Bold.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Caligraphic-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Caligraphic-Bold.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Caligraphic-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Caligraphic-Regular.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Caligraphic-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Caligraphic-Regular.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Caligraphic-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Caligraphic-Regular.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Fraktur-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Fraktur-Bold.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Fraktur-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Fraktur-Bold.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Fraktur-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Fraktur-Bold.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Fraktur-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Fraktur-Regular.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Fraktur-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Fraktur-Regular.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Fraktur-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Fraktur-Regular.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Main-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Main-Bold.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Main-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Main-Bold.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Main-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Main-Bold.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Main-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Main-BoldItalic.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Main-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Main-BoldItalic.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Main-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Main-BoldItalic.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Main-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Main-Italic.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Main-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Main-Italic.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Main-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Main-Italic.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Main-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Main-Regular.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Main-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Main-Regular.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Main-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Main-Regular.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Math-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Math-BoldItalic.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Math-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Math-BoldItalic.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Math-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Math-BoldItalic.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Math-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Math-Italic.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Math-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Math-Italic.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Math-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Math-Italic.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_SansSerif-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_SansSerif-Bold.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_SansSerif-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_SansSerif-Bold.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_SansSerif-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_SansSerif-Bold.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_SansSerif-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_SansSerif-Italic.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_SansSerif-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_SansSerif-Italic.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_SansSerif-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_SansSerif-Italic.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_SansSerif-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_SansSerif-Regular.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_SansSerif-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_SansSerif-Regular.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_SansSerif-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_SansSerif-Regular.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Script-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Script-Regular.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Script-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Script-Regular.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Script-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Script-Regular.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Size1-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Size1-Regular.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Size1-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Size1-Regular.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Size1-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Size1-Regular.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Size2-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Size2-Regular.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Size2-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Size2-Regular.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Size2-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Size2-Regular.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Size3-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Size3-Regular.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Size3-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Size3-Regular.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Size3-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Size3-Regular.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Size4-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Size4-Regular.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Size4-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Size4-Regular.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Size4-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Size4-Regular.woff2 -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Typewriter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Typewriter-Regular.ttf -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Typewriter-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Typewriter-Regular.woff -------------------------------------------------------------------------------- /book_src/static/katex/fonts/KaTeX_Typewriter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/static/katex/fonts/KaTeX_Typewriter-Regular.woff2 -------------------------------------------------------------------------------- /book_src/static/svg/calendar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /book_src/static/svg/edit.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /book_src/static/svg/menu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /book_src/static/svg/toc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /book_src/static/svg/translate.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /book_src/themes/book/.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Build with Hugo 2 | 3 | on: [push] 4 | 5 | jobs: 6 | hugo-latest: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@master 10 | 11 | - name: Install Hugo 12 | run: | 13 | LATEST_VERSION=`curl --silent "https://api.github.com/repos/gohugoio/hugo/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/'` 14 | VERSION_NO_PREFIX=`echo $LATEST_VERSION | cut -c 2-` 15 | wget "https://github.com/gohugoio/hugo/releases/download/$LATEST_VERSION/hugo_extended_${VERSION_NO_PREFIX}_Linux-64bit.deb" -O /tmp/hugo.deb 16 | sudo dpkg -i /tmp/hugo.deb 17 | 18 | - name: Run Hugo 19 | working-directory: exampleSite 20 | run: hugo --themesDir ../.. 21 | hugo-minimum: 22 | runs-on: ubuntu-latest 23 | steps: 24 | - uses: actions/checkout@master 25 | 26 | - name: Install Hugo 27 | run: | 28 | wget "https://github.com/gohugoio/hugo/releases/download/v0.65.0/hugo_extended_0.65.0_Linux-64bit.deb" -O /tmp/hugo.deb 29 | sudo dpkg -i /tmp/hugo.deb 30 | 31 | - name: Run Hugo 32 | working-directory: exampleSite 33 | run: hugo --themesDir ../.. 34 | -------------------------------------------------------------------------------- /book_src/themes/book/.gitignore: -------------------------------------------------------------------------------- 1 | public/ 2 | exampleSite/public/ 3 | .DS_Store 4 | -------------------------------------------------------------------------------- /book_src/themes/book/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 Alex Shpak 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /book_src/themes/book/archetypes/docs.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ .Name | humanize | title }}" 3 | weight: 1 4 | # bookFlatSection: false 5 | # bookToc: true 6 | # bookHidden: false 7 | # bookCollapseSection: false 8 | # bookComments: true 9 | --- 10 | -------------------------------------------------------------------------------- /book_src/themes/book/archetypes/posts.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .Name "-" " " | title }}" 3 | date: {{ .Date }} 4 | --- 5 | 6 |

TEST

-------------------------------------------------------------------------------- /book_src/themes/book/assets/_custom.scss: -------------------------------------------------------------------------------- 1 | /* You can add custom styles here. */ 2 | 3 | // @import "plugins/numbered"; 4 | -------------------------------------------------------------------------------- /book_src/themes/book/assets/_defaults.scss: -------------------------------------------------------------------------------- 1 | // Used in layout 2 | $padding-1: 1px !default; 3 | $padding-4: 0.25rem !default; 4 | $padding-8: 0.5rem !default; 5 | $padding-16: 1rem !default; 6 | 7 | $font-size-base: 16px !default; 8 | $font-size-12: 0.75rem !default; 9 | $font-size-14: 0.875rem !default; 10 | $font-size-16: 1rem !default; 11 | 12 | $border-radius: $padding-4 !default; 13 | 14 | // Grayscale 15 | $white: #ffffff !default; 16 | $gray-100: #f8f9fa !default; 17 | $gray-200: #e9ecef !default; 18 | $gray-300: #dee2e6 !default; 19 | $gray-400: #ced4da !default; 20 | $gray-500: #adb5bd !default; 21 | $gray-600: #868e96 !default; 22 | $gray-700: #495057 !default; 23 | $gray-800: #343a40 !default; 24 | $gray-900: #212529 !default; 25 | $black: #000 !default; 26 | 27 | $color-link: #05b !default; 28 | $color-visited-link: #8440f1 !default; 29 | 30 | $body-background: white !default; 31 | $body-font-color: $black !default; 32 | $body-font-weight: normal !default; 33 | 34 | $body-min-width: 20rem !default; 35 | $container-max-width: 80rem !default; 36 | 37 | $header-height: 3.5rem !default; 38 | $menu-width: 16rem !default; 39 | $toc-width: 16rem !default; 40 | 41 | $mobile-breakpoint: $menu-width + $body-min-width * 1.2 + $toc-width !default; 42 | 43 | // Hint colors 44 | $hint-colors: ( 45 | info: #6bf, 46 | warning: #fd6, 47 | danger: #f66 48 | ) !default; 49 | 50 | $icon-filter: none !default; 51 | -------------------------------------------------------------------------------- /book_src/themes/book/assets/_fonts.scss: -------------------------------------------------------------------------------- 1 | /* roboto-300italic - latin */ 2 | @font-face { 3 | font-family: 'Roboto'; 4 | font-style: italic; 5 | font-weight: 300; 6 | font-display: swap; 7 | src: local('Roboto Light Italic'), local('Roboto-LightItalic'), 8 | url('fonts/roboto-v19-latin-300italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ 9 | url('fonts/roboto-v19-latin-300italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 10 | } 11 | /* roboto-regular - latin */ 12 | @font-face { 13 | font-family: 'Roboto'; 14 | font-style: normal; 15 | font-weight: 400; 16 | font-display: swap; 17 | src: local('Roboto'), local('Roboto-Regular'), 18 | url('fonts/roboto-v19-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ 19 | url('fonts/roboto-v19-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 20 | } 21 | /* roboto-700 - latin */ 22 | @font-face { 23 | font-family: 'Roboto'; 24 | font-style: normal; 25 | font-weight: 700; 26 | font-display: swap; 27 | src: local('Roboto Bold'), local('Roboto-Bold'), 28 | url('fonts/roboto-v19-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ 29 | url('fonts/roboto-v19-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 30 | } 31 | 32 | /* roboto-mono-regular - latin */ 33 | @font-face { 34 | font-family: 'Roboto Mono'; 35 | font-style: normal; 36 | font-weight: 400; 37 | font-display: swap; 38 | src: local('Roboto Mono'), local('RobotoMono-Regular'), 39 | url('fonts/roboto-mono-v6-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ 40 | url('fonts/roboto-mono-v6-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 41 | } 42 | 43 | body { 44 | font-family: 'Roboto', sans-serif; 45 | } 46 | 47 | code { 48 | font-family: 'Roboto Mono', monospace; 49 | } 50 | -------------------------------------------------------------------------------- /book_src/themes/book/assets/_print.scss: -------------------------------------------------------------------------------- 1 | @media print { 2 | .book-menu, 3 | .book-footer, 4 | .book-toc { 5 | display: none; 6 | } 7 | 8 | .book-header, 9 | .book-header aside { 10 | display: block; 11 | } 12 | 13 | main { 14 | // Fix for https://bugzilla.mozilla.org/show_bug.cgi?id=939897 15 | display: block !important; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /book_src/themes/book/assets/_utils.scss: -------------------------------------------------------------------------------- 1 | .flex { 2 | display: flex; 3 | } 4 | 5 | .flex-auto { 6 | flex: 1 1 auto; 7 | } 8 | 9 | .flex-even { 10 | flex: 1 1; 11 | } 12 | 13 | .flex-wrap { 14 | flex-wrap: wrap; 15 | } 16 | 17 | .justify-start { 18 | justify-content: flex-start; 19 | } 20 | 21 | .justify-end { 22 | justify-content: flex-end; 23 | } 24 | 25 | .justify-center { 26 | justify-content: center; 27 | } 28 | 29 | .justify-between { 30 | justify-content: space-between; 31 | } 32 | 33 | .align-center { 34 | align-items: center; 35 | } 36 | 37 | .mx-auto { 38 | margin: 0 auto; 39 | } 40 | 41 | .text-center { 42 | text-align: center; 43 | } 44 | 45 | .hidden { 46 | display: none; 47 | } 48 | 49 | .clearfix::after { 50 | content: ""; 51 | display: table; 52 | clear: both; 53 | } 54 | 55 | @mixin spin($duration) { 56 | animation: spin $duration ease infinite; 57 | @keyframes spin { 58 | 100% { 59 | transform: rotate(360deg); 60 | } 61 | } 62 | } 63 | 64 | @mixin fixed { 65 | position: fixed; 66 | top: 0; 67 | bottom: 0; 68 | overflow-x: hidden; 69 | overflow-y: auto; 70 | } 71 | -------------------------------------------------------------------------------- /book_src/themes/book/assets/_variables.scss: -------------------------------------------------------------------------------- 1 | /* You can override SASS variables here. */ 2 | 3 | // @import "plugins/dark"; 4 | -------------------------------------------------------------------------------- /book_src/themes/book/assets/book.scss: -------------------------------------------------------------------------------- 1 | @import "defaults"; 2 | @import "variables"; 3 | 4 | @import "normalize"; 5 | @import "utils"; 6 | @import "main"; 7 | @import "fonts"; 8 | @import "print"; 9 | 10 | @import "markdown"; 11 | @import "shortcodes"; 12 | 13 | // Custom defined styles 14 | @import "custom"; 15 | -------------------------------------------------------------------------------- /book_src/themes/book/assets/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "{{ .Site.Title }}", 3 | "short_name": "{{ .Site.Title }}", 4 | "start_url": "{{ "/" | relURL }}", 5 | "scope": "{{ "/" | relURL }}", 6 | "display": "standalone", 7 | "background_color": "#000000", 8 | "theme_color": "#000000", 9 | "icons": [ 10 | { 11 | "src": "{{ "/favicon.svg" | relURL }}", 12 | "sizes": "512x512" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /book_src/themes/book/assets/menu-reset.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var menu = document.querySelector("aside.book-menu nav"); 3 | addEventListener("beforeunload", function(event) { 4 | localStorage.setItem("menu.scrollTop", menu.scrollTop); 5 | }); 6 | menu.scrollTop = localStorage.getItem("menu.scrollTop"); 7 | })(); 8 | -------------------------------------------------------------------------------- /book_src/themes/book/assets/plugins/_dark.scss: -------------------------------------------------------------------------------- 1 | $gray-100: rgba(255, 255, 255, 0.1); 2 | $gray-200: rgba(255, 255, 255, 0.2); 3 | 4 | $body-background: #343a40; 5 | $body-font-color: #e9ecef; 6 | 7 | $color-link: #84b2ff; 8 | $color-visited-link: #b88dff; 9 | 10 | $icon-filter: brightness(0) invert(1); 11 | -------------------------------------------------------------------------------- /book_src/themes/book/assets/plugins/_numbered.scss: -------------------------------------------------------------------------------- 1 | $startLevel: 1; 2 | $endLevel: 6; 3 | 4 | .book-page .markdown { 5 | @for $currentLevel from $startLevel through $endLevel { 6 | > h#{$currentLevel} { 7 | counter-increment: h#{$currentLevel}; 8 | counter-reset: h#{$currentLevel + 1}; 9 | 10 | $content: ""; 11 | @for $n from $startLevel through $currentLevel { 12 | $content: $content + 'counter(h#{$n})"."'; 13 | } 14 | 15 | &::before { 16 | content: unquote($content) " "; 17 | } 18 | } 19 | } 20 | } 21 | 22 | .book-toc nav ul { 23 | li { 24 | counter-increment: item; 25 | 26 | &:first-child { 27 | counter-reset: item; 28 | } 29 | 30 | &:before { 31 | content: counters(item, ".") ". "; 32 | float: left; 33 | margin-right: $padding-4; 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /book_src/themes/book/assets/plugins/_scrollbars.scss: -------------------------------------------------------------------------------- 1 | @import "defaults"; 2 | @import "variables"; 3 | 4 | // Webkit 5 | ::-webkit-scrollbar { 6 | width: $padding-8; 7 | } 8 | 9 | ::-webkit-scrollbar-thumb { 10 | background: transparent; 11 | border-radius: $padding-8; 12 | } 13 | 14 | :hover::-webkit-scrollbar-thumb { 15 | background: $gray-500; 16 | } 17 | 18 | // MS 19 | body { 20 | -ms-overflow-style: -ms-autohiding-scrollbar 21 | } 22 | 23 | // Future 24 | .book-menu nav { 25 | scrollbar-color: transparent $gray-500; 26 | } 27 | -------------------------------------------------------------------------------- /book_src/themes/book/assets/search-data.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | (function() { 4 | const indexCfg = {{ with i18n "bookSearchConfig" }} 5 | {{ . }}; 6 | {{ else }} 7 | {}; 8 | {{ end }} 9 | 10 | indexCfg.doc = { 11 | id: 'id', 12 | field: ['title', 'content'], 13 | store: ['title', 'href'], 14 | }; 15 | 16 | const index = FlexSearch.create('balance', indexCfg); 17 | window.bookSearchIndex = index; 18 | 19 | {{ range $index, $page := where .Site.Pages "Kind" "in" (slice "page" "section") }} 20 | index.add({ 21 | 'id': {{ $index }}, 22 | 'href': '{{ $page.RelPermalink }}', 23 | 'title': {{ (partial "docs/title" $page) | jsonify }}, 24 | 'content': {{ $page.Plain | jsonify }} 25 | }); 26 | {{- end -}} 27 | })(); 28 | -------------------------------------------------------------------------------- /book_src/themes/book/assets/sw-register.js: -------------------------------------------------------------------------------- 1 | {{- $swJS := resources.Get "sw.js" | resources.ExecuteAsTemplate "sw.js" . -}} 2 | if (navigator.serviceWorker) { 3 | navigator.serviceWorker.register( 4 | "{{ $swJS.RelPermalink }}", 5 | { scope: "{{ "/" | relURL }}" } 6 | ); 7 | } 8 | -------------------------------------------------------------------------------- /book_src/themes/book/assets/sw.js: -------------------------------------------------------------------------------- 1 | const cacheName = self.location.pathname 2 | const pages = [ 3 | {{ if eq .Site.Params.BookServiceWorker "precache" }} 4 | {{ range .Site.AllPages -}} 5 | "{{ .RelPermalink }}", 6 | {{ end -}} 7 | {{ end }} 8 | ]; 9 | 10 | self.addEventListener("install", function (event) { 11 | self.skipWaiting(); 12 | 13 | caches.open(cacheName).then((cache) => { 14 | return cache.addAll(pages); 15 | }); 16 | }); 17 | 18 | self.addEventListener("fetch", (event) => { 19 | const request = event.request; 20 | if (request.method !== "GET") { 21 | return; 22 | } 23 | 24 | /** 25 | * @param {Response} response 26 | * @returns {Promise} 27 | */ 28 | function saveToCache(response) { 29 | if (cacheable(response)) { 30 | return caches 31 | .open(cacheName) 32 | .then((cache) => cache.put(request, response.clone())) 33 | .then(() => response); 34 | } else { 35 | return response; 36 | } 37 | } 38 | 39 | /** 40 | * @param {Error} error 41 | */ 42 | function serveFromCache(error) { 43 | return caches.open(cacheName).then((cache) => cache.match(request.url)); 44 | } 45 | 46 | /** 47 | * @param {Response} response 48 | * @returns {Boolean} 49 | */ 50 | function cacheable(response) { 51 | return response.type === "basic" && response.ok && !response.headers.has("Content-Disposition") 52 | } 53 | 54 | event.respondWith(fetch(request).then(saveToCache).catch(serveFromCache)); 55 | }); 56 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/assets/_custom.scss: -------------------------------------------------------------------------------- 1 | /* You can add custom styles here. */ 2 | 3 | // @import "plugins/numbered"; 4 | // @import "plugins/scrollbars"; 5 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/assets/_variables.scss: -------------------------------------------------------------------------------- 1 | /* You can override SASS variables here. */ 2 | 3 | // @import "plugins/dark"; 4 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/content/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Introduction 3 | type: docs 4 | --- 5 | 6 | # Acerbo datus maxime 7 | 8 | {{< columns >}} 9 | ## Astris ipse furtiva 10 | 11 | Est in vagis et Pittheus tu arge accipiter regia iram vocatur nurus. Omnes ut 12 | olivae sensit **arma sorori** deducit, inesset **crudus**, ego vetuere aliis, 13 | modo arsit? Utinam rapta fiducia valuere litora _adicit cursu_, ad facies 14 | 15 | <---> 16 | 17 | ## Suis quot vota 18 | 19 | Ea _furtique_ risere fratres edidit terrae magis. Colla tam mihi tenebat: 20 | miseram excita suadent es pecudes iam. Concilio _quam_ velatus posset ait quod 21 | nunc! Fragosis suae dextra geruntur functus vulgata. 22 | {{< /columns >}} 23 | 24 | 25 | ## Tempora nisi nunc 26 | 27 | Lorem **markdownum** emicat gestu. Cannis sol pressit ducta. **Est** Idaei, 28 | tremens ausim se tutaeque, illi ulnis hausit, sed, lumina cutem. Quae avis 29 | sequens! 30 | 31 | var panel = ram_design; 32 | if (backup + system) { 33 | file.readPoint = network_native; 34 | sidebar_engine_device(cell_tftp_raster, 35 | dual_login_paper.adf_vci.application_reader_design( 36 | graphicsNvramCdma, lpi_footer_snmp, integer_model)); 37 | } 38 | 39 | ## Locis suis novi cum suoque decidit eadem 40 | 41 | Idmoniae ripis, at aves, ali missa adest, ut _et autem_, et ab? 42 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/content/docs/example/collapsed/3rd-level/4th-level.md: -------------------------------------------------------------------------------- 1 | # 4th Level of Menu 2 | 3 | ## Caesorum illa tu sentit micat vestes papyriferi 4 | 5 | Inde aderam facti; Theseus vis de tauri illa peream. Oculos **uberaque** non 6 | regisque vobis cursuque, opus venit quam vulnera. Et maiora necemque, lege modo; 7 | gestanda nitidi, vero? Dum ne pectoraque testantur. 8 | 9 | Venasque repulsa Samos qui, exspectatum eram animosque hinc, [aut 10 | manes](http://www.creveratnon.net/apricaaetheriis), Assyrii. Cupiens auctoribus 11 | pariter rubet, profana magni super nocens. Vos ius sibilat inpar turba visae 12 | iusto! Sedes ante dum superest **extrema**. 13 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/content/docs/example/collapsed/3rd-level/_index.md: -------------------------------------------------------------------------------- 1 | # 3rd Level of Menu 2 | 3 | Nefas discordemque domino montes numen tum humili nexilibusque exit, Iove. Quae 4 | miror esse, scelerisque Melaneus viribus. Miseri laurus. Hoc est proposita me 5 | ante aliquid, aura inponere candidioribus quidque accendit bella, sumpta. 6 | Intravit quam erat figentem hunc, motus de fontes parvo tempestate. 7 | 8 | iscsi_virus = pitch(json_in_on(eupViral), 9 | northbridge_services_troubleshooting, personal( 10 | firmware_rw.trash_rw_crm.device(interactive_gopher_personal, 11 | software, -1), megabit, ergonomicsSoftware(cmyk_usb_panel, 12 | mips_whitelist_duplex, cpa))); 13 | if (5) { 14 | managementNetwork += dma - boolean; 15 | kilohertz_token = 2; 16 | honeypot_affiliate_ergonomics = fiber; 17 | } 18 | mouseNorthbridge = byte(nybble_xmp_modem.horse_subnet( 19 | analogThroughputService * graphicPoint, drop(daw_bit, dnsIntranet), 20 | gateway_ospf), repository.domain_key.mouse(serverData(fileNetwork, 21 | trim_duplex_file), cellTapeDirect, token_tooltip_mashup( 22 | ripcordingMashup))); 23 | module_it = honeypot_driver(client_cold_dvr(593902, ripping_frequency) + 24 | coreLog.joystick(componentUdpLink), windows_expansion_touchscreen); 25 | bashGigabit.external.reality(2, server_hardware_codec.flops.ebookSampling( 26 | ciscNavigationBacklink, table + cleanDriver), indexProtocolIsp); 27 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/content/docs/example/collapsed/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | bookCollapseSection: true 3 | weight: 20 4 | --- 5 | 6 | # Collapsed Level of Menu 7 | 8 | ## Cognita laeva illo fracta 9 | 10 | Lorem markdownum pavent auras, surgit nunc cingentibus libet **Laomedonque que** 11 | est. Pastor [An](http://est.org/ire.aspx) arbor filia foedat, ne [fugit 12 | aliter](http://www.indiciumturbam.org/moramquid.php), per. Helicona illas et 13 | callida neptem est *Oresitrophos* caput, dentibus est venit. Tenet reddite 14 | [famuli](http://www.antro-et.net/) praesentem fortibus, quaeque vis foret si 15 | frondes *gelidos* gravidae circumtulit [inpulit armenta 16 | nativum](http://incurvasustulit.io/illi-virtute.html). 17 | 18 | 1. Te at cruciabere vides rubentis manebo 19 | 2. Maturuit in praetemptat ruborem ignara postquam habitasse 20 | 3. Subitarum supplevit quoque fontesque venabula spretis modo 21 | 4. Montis tot est mali quasque gravis 22 | 5. Quinquennem domus arsit ipse 23 | 6. Pellem turis pugnabant locavit 24 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/content/docs/example/hidden.md: -------------------------------------------------------------------------------- 1 | --- 2 | bookHidden: true 3 | --- 4 | 5 | # This page is hidden in menu 6 | 7 | # Quondam non pater est dignior ille Eurotas 8 | 9 | ## Latent te facies 10 | 11 | Lorem markdownum arma ignoscas vocavit quoque ille texit mandata mentis ultimus, 12 | frementes, qui in vel. Hippotades Peleus [pennas 13 | conscia](http://gratia.net/tot-qua.php) cuiquam Caeneus quas. 14 | 15 | - Pater demittere evincitque reddunt 16 | - Maxime adhuc pressit huc Danaas quid freta 17 | - Soror ego 18 | - Luctus linguam saxa ultroque prior Tatiumque inquit 19 | - Saepe liquitur subita superata dederat Anius sudor 20 | 21 | ## Cum honorum Latona 22 | 23 | O fallor [in sustinui 24 | iussorum](http://www.spectataharundine.org/aquas-relinquit.html) equidem. 25 | Nymphae operi oris alii fronde parens dumque, in auro ait mox ingenti proxima 26 | iamdudum maius? 27 | 28 | reality(burnDocking(apache_nanometer), 29 | pad.property_data_programming.sectorBrowserPpga(dataMask, 37, 30 | recycleRup)); 31 | intellectualVaporwareUser += -5 * 4; 32 | traceroute_key_upnp /= lag_optical(android.smb(thyristorTftp)); 33 | surge_host_golden = mca_compact_device(dual_dpi_opengl, 33, 34 | commerce_add_ppc); 35 | if (lun_ipv) { 36 | verticalExtranet(1, thumbnail_ttl, 3); 37 | bar_graphics_jpeg(chipset - sector_xmp_beta); 38 | } 39 | 40 | ## Fronde cetera dextrae sequens pennis voce muneris 41 | 42 | Acta cretus diem restet utque; move integer, oscula non inspirat, noctisque 43 | scelus! Nantemque in suas vobis quamvis, et labori! 44 | 45 | var runtimeDiskCompiler = home - array_ad_software; 46 | if (internic > disk) { 47 | emoticonLockCron += 37 + bps - 4; 48 | wan_ansi_honeypot.cardGigaflops = artificialStorageCgi; 49 | simplex -= downloadAccess; 50 | } 51 | var volumeHardeningAndroid = pixel + tftp + onProcessorUnmount; 52 | sector(memory(firewire + interlaced, wired)); -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/content/docs/shortcodes/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | bookFlatSection: true 3 | --- 4 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/content/docs/shortcodes/buttons.md: -------------------------------------------------------------------------------- 1 | # Buttons 2 | 3 | Buttons are styled links that can lead to local page or external link. 4 | 5 | ## Example 6 | 7 | ```tpl 8 | {{}}Get Home{{}} 9 | {{}}Contribute{{}} 10 | ``` 11 | 12 | {{< button relref="/" >}}Get Home{{< /button >}} 13 | {{< button href="https://github.com/alex-shpak/hugo-book" >}}Contribute{{< /button >}} 14 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/content/docs/shortcodes/columns.md: -------------------------------------------------------------------------------- 1 | # Columns 2 | 3 | Columns help organize shorter pieces of content horizontally for readability. 4 | 5 | 6 | ```html 7 | {{}} 8 | # Left Content 9 | Lorem markdownum insigne... 10 | 11 | <---> 12 | 13 | # Mid Content 14 | Lorem markdownum insigne... 15 | 16 | <---> 17 | 18 | # Right Content 19 | Lorem markdownum insigne... 20 | {{}} 21 | ``` 22 | 23 | ## Example 24 | 25 | {{< columns >}} 26 | ## Left Content 27 | Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat 28 | stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa 29 | protulit, sed sed aere valvis inhaesuro Pallas animam: qui _quid_, ignes. 30 | Miseratus fonte Ditis conubia. 31 | 32 | <---> 33 | 34 | ## Mid Content 35 | Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat 36 | stringit, frustra Saturnius uteroque inter! 37 | 38 | <---> 39 | 40 | ## Right Content 41 | Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat 42 | stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa 43 | protulit, sed sed aere valvis inhaesuro Pallas animam: qui _quid_, ignes. 44 | Miseratus fonte Ditis conubia. 45 | {{< /columns >}} 46 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/content/docs/shortcodes/details.md: -------------------------------------------------------------------------------- 1 | # Details 2 | 3 | Details shortcode is a helper for `details` html5 element. It is going to replace `expand` shortcode. 4 | 5 | ## Example 6 | ```tpl 7 | {{}} 8 | ## Markdown content 9 | Lorem markdownum insigne... 10 | {{}} 11 | ``` 12 | ```tpl 13 | {{}} 14 | ## Markdown content 15 | Lorem markdownum insigne... 16 | {{}} 17 | ``` 18 | 19 | {{< details "Title" open >}} 20 | ## Markdown content 21 | Lorem markdownum insigne... 22 | {{< /details >}} 23 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/content/docs/shortcodes/expand.md: -------------------------------------------------------------------------------- 1 | # Expand 2 | 3 | Expand shortcode can help to decrease clutter on screen by hiding part of text. Expand content by clicking on it. 4 | 5 | ## Example 6 | ### Default 7 | 8 | ```tpl 9 | {{}} 10 | ## Markdown content 11 | Lorem markdownum insigne... 12 | {{}} 13 | ``` 14 | 15 | {{< expand >}} 16 | ## Markdown content 17 | Lorem markdownum insigne... 18 | {{< /expand >}} 19 | 20 | ### With Custom Label 21 | 22 | ```tpl 23 | {{}} 24 | ## Markdown content 25 | Lorem markdownum insigne... 26 | {{}} 27 | ``` 28 | 29 | {{< expand "Custom Label" "..." >}} 30 | ## Markdown content 31 | Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat 32 | stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa 33 | protulit, sed sed aere valvis inhaesuro Pallas animam: qui _quid_, ignes. 34 | Miseratus fonte Ditis conubia. 35 | {{< /expand >}} 36 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/content/docs/shortcodes/hints.md: -------------------------------------------------------------------------------- 1 | # Hints 2 | 3 | Hint shortcode can be used as hint/alerts/notification block. 4 | There are 3 colors to choose: `info`, `warning` and `danger`. 5 | 6 | ```tpl 7 | {{}} 8 | **Markdown content** 9 | Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat 10 | stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa 11 | {{}} 12 | ``` 13 | 14 | ## Example 15 | 16 | {{< hint info >}} 17 | **Markdown content** 18 | Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat 19 | stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa 20 | {{< /hint >}} 21 | 22 | {{< hint warning >}} 23 | **Markdown content** 24 | Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat 25 | stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa 26 | {{< /hint >}} 27 | 28 | {{< hint danger >}} 29 | **Markdown content** 30 | Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat 31 | stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa 32 | {{< /hint >}} 33 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/content/docs/shortcodes/katex.md: -------------------------------------------------------------------------------- 1 | # KaTeX 2 | 3 | KaTeX shortcode let you render math typesetting in markdown document. See [KaTeX](https://katex.org/) 4 | 5 | ## Example 6 | {{< columns >}} 7 | 8 | ```latex 9 | {{}} 10 | f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi 11 | {{}} 12 | ``` 13 | 14 | <---> 15 | 16 | {{< katex display >}} 17 | f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi 18 | {{< /katex >}} 19 | 20 | {{< /columns >}} 21 | 22 | ## Display Mode Example 23 | 24 | Here is some inline example: {{< katex >}}\pi(x){{< /katex >}}, rendered in the same line. And below is `display` example, having `display: block` 25 | {{< katex display >}} 26 | f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi 27 | {{< /katex >}} 28 | Text continues here. 29 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/content/docs/shortcodes/mermaid.md: -------------------------------------------------------------------------------- 1 | # Mermaid Chart 2 | 3 | [Mermaid](https://mermaidjs.github.io/) is library for generating svg charts and diagrams from text. 4 | 5 | ## Example 6 | 7 | {{< columns >}} 8 | ```tpl 9 | {{}} 10 | sequenceDiagram 11 | Alice->>Bob: Hello Bob, how are you? 12 | alt is sick 13 | Bob->>Alice: Not so good :( 14 | else is well 15 | Bob->>Alice: Feeling fresh like a daisy 16 | end 17 | opt Extra response 18 | Bob->>Alice: Thanks for asking 19 | end 20 | {{}} 21 | ``` 22 | 23 | <---> 24 | 25 | {{< mermaid >}} 26 | sequenceDiagram 27 | Alice->>Bob: Hello Bob, how are you? 28 | alt is sick 29 | Bob->>Alice: Not so good :( 30 | else is well 31 | Bob->>Alice: Feeling fresh like a daisy 32 | end 33 | opt Extra response 34 | Bob->>Alice: Thanks for asking 35 | end 36 | {{< /mermaid >}} 37 | 38 | {{< /columns >}} 39 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/content/docs/shortcodes/tabs.md: -------------------------------------------------------------------------------- 1 | # Tabs 2 | 3 | Tabs let you organize content by context, for example installation instructions for each supported platform. 4 | 5 | ```tpl 6 | {{}} 7 | {{}} # MacOS Content {{}} 8 | {{}} # Linux Content {{}} 9 | {{}} # Windows Content {{}} 10 | {{}} 11 | ``` 12 | 13 | ## Example 14 | 15 | {{< tabs "uniqueid" >}} 16 | {{< tab "MacOS" >}} 17 | # MacOS 18 | 19 | This is tab **MacOS** content. 20 | 21 | Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat 22 | stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa 23 | protulit, sed sed aere valvis inhaesuro Pallas animam: qui _quid_, ignes. 24 | Miseratus fonte Ditis conubia. 25 | {{< /tab >}} 26 | 27 | {{< tab "Linux" >}} 28 | 29 | # Linux 30 | 31 | This is tab **Linux** content. 32 | 33 | Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat 34 | stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa 35 | protulit, sed sed aere valvis inhaesuro Pallas animam: qui _quid_, ignes. 36 | Miseratus fonte Ditis conubia. 37 | {{< /tab >}} 38 | 39 | {{< tab "Windows" >}} 40 | 41 | # Windows 42 | 43 | This is tab **Windows** content. 44 | 45 | Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat 46 | stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa 47 | protulit, sed sed aere valvis inhaesuro Pallas animam: qui _quid_, ignes. 48 | Miseratus fonte Ditis conubia. 49 | {{< /tab >}} 50 | {{< /tabs >}} 51 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/content/menu/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | headless: true 3 | --- 4 | 5 | - [**Example Site**]({{< relref "/docs/example" >}}) 6 | - [Table of Contents]({{< relref "/docs/example/table-of-contents" >}}) 7 | - [With ToC]({{< relref "/docs/example/table-of-contents/with-toc" >}}) 8 | - [Without ToC]({{< relref "/docs/example/table-of-contents/without-toc" >}}) 9 | - [Collapsed]({{< relref "/docs/example/collapsed" >}}) 10 | - [3rd]({{< relref "/docs/example/collapsed/3rd-level" >}}) 11 | - [4th]({{< relref "/docs/example/collapsed/3rd-level/4th-level" >}}) 12 |
13 | 14 | - **Shortcodes** 15 | - [Buttons]({{< relref "/docs/shortcodes/buttons" >}}) 16 | - [Columns]({{< relref "/docs/shortcodes/columns" >}}) 17 | - [Expand]({{< relref "/docs/shortcodes/expand" >}}) 18 | - [Hints]({{< relref "/docs/shortcodes/hints" >}}) 19 | - [Katex]({{< relref "/docs/shortcodes/katex" >}}) 20 | - [Mermaid]({{< relref "/docs/shortcodes/mermaid" >}}) 21 | - [Tabs]({{< relref "/docs/shortcodes/tabs" >}}) 22 |
23 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/content/posts/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | menu: 3 | after: 4 | name: blog 5 | weight: 5 6 | title: Blog 7 | --- 8 | -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/resources/_gen/assets/scss/book.scss_50fc8c04e12a2f59027287995557ceff.json: -------------------------------------------------------------------------------- 1 | {"Target":"book.min.6df681b0bb21155cba49f6078e3559216772d8e03e780d240c73ea21817ed5e5.css","MediaType":"text/css","Data":{"Integrity":"sha256-bfaBsLshFVy6SfYHjjVZIWdy2OA+eA0kDHPqIYF+1eU="}} -------------------------------------------------------------------------------- /book_src/themes/book/exampleSite/resources/_gen/assets/scss/example/book.scss_50fc8c04e12a2f59027287995557ceff.json: -------------------------------------------------------------------------------- 1 | {"Target":"book.min.284c8fc21ced13c579d9027a9d14893c56b243c6045001180391cebb4cc36ab8.css","MediaType":"text/css","Data":{"Integrity":"sha256-KEyPwhztE8V52QJ6nRSJPFayQ8YEUAEYA5HOu0zDarg="}} -------------------------------------------------------------------------------- /book_src/themes/book/i18n/cn.yaml: -------------------------------------------------------------------------------- 1 | # This should be removed in future, 'cn' is moved to `zh' 2 | - id: Search 3 | translation: 搜索 4 | 5 | - id: Edit this page 6 | translation: 编辑本页 7 | 8 | - id: Last modified by 9 | translation: 最后修改者 10 | 11 | - id: Expand 12 | translation: 展开 13 | 14 | - id: bookSearchConfig 15 | translation: | 16 | { 17 | encode: false, 18 | tokenize: function(str) { 19 | return str.replace(/[\x00-\x7F]/g, '').split(''); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /book_src/themes/book/i18n/de.yaml: -------------------------------------------------------------------------------- 1 | - id: Search 2 | translation: Suche 3 | 4 | - id: Edit this page 5 | translation: Seite bearbeiten 6 | 7 | - id: Last modified by 8 | translation: Zuletzt geändert am 9 | 10 | - id: Expand 11 | translation: Erweitern 12 | 13 | - id: bookSearchConfig 14 | translation: '{ cache: true }' 15 | -------------------------------------------------------------------------------- /book_src/themes/book/i18n/en.yaml: -------------------------------------------------------------------------------- 1 | - id: Search 2 | translation: Search 3 | 4 | - id: Edit this page 5 | translation: Edit this page 6 | 7 | - id: Last modified by 8 | translation: Last modified by 9 | 10 | - id: Expand 11 | translation: Expand 12 | 13 | - id: bookSearchConfig 14 | translation: '{ cache: true }' 15 | -------------------------------------------------------------------------------- /book_src/themes/book/i18n/es.yaml: -------------------------------------------------------------------------------- 1 | - id: Search 2 | translation: Buscar 3 | 4 | - id: Edit this page 5 | translation: Editar esta página 6 | 7 | - id: Last modified by 8 | translation: Última modificación por 9 | 10 | - id: Expand 11 | translation: Expand 12 | 13 | - id: bookSearchConfig 14 | translation: '{ cache: true }' 15 | -------------------------------------------------------------------------------- /book_src/themes/book/i18n/fr.yaml: -------------------------------------------------------------------------------- 1 | - id: Search 2 | translation: Rechercher 3 | 4 | - id: Edit this page 5 | translation: Modifier cette page 6 | 7 | - id: Last modified by 8 | translation: Dernière modification par 9 | 10 | - id: Expand 11 | translation: Développer 12 | 13 | - id: bookSearchConfig 14 | translation: '{ cache: true }' 15 | -------------------------------------------------------------------------------- /book_src/themes/book/i18n/jp.yaml: -------------------------------------------------------------------------------- 1 | - id: Search 2 | translation: 検索 3 | 4 | - id: Edit this page 5 | translation: このページを編集する 6 | 7 | - id: Last modified by 8 | translation: 最終更新者 9 | 10 | - id: Expand 11 | translation: 展開 12 | 13 | - id: bookSearchConfig 14 | translation: | 15 | { 16 | encode: false, 17 | tokenize: function(str) { 18 | return str.replace(/[\x00-\x7F]/g, '').split(''); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /book_src/themes/book/i18n/ko.yaml: -------------------------------------------------------------------------------- 1 | - id: Search 2 | translation: Search 3 | 4 | - id: Edit this page 5 | translation: Edit this page 6 | 7 | - id: Last modified by 8 | translation: Last modified by 9 | 10 | - id: Expand 11 | translation: Expand 12 | 13 | - id: bookSearchConfig 14 | translation: | 15 | { 16 | encode: false, 17 | tokenize: function(str) { 18 | return str.replace(/[\x00-\x7F]/g, '').split(''); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /book_src/themes/book/i18n/pt.yaml: -------------------------------------------------------------------------------- 1 | - id: Search 2 | translation: Buscar 3 | 4 | - id: Edit this page 5 | translation: Editar página 6 | 7 | - id: Last modified by 8 | translation: Última modificação por 9 | 10 | - id: Expand 11 | translation: Expandir 12 | 13 | - id: bookSearchConfig 14 | translation: '{ cache: true }' 15 | -------------------------------------------------------------------------------- /book_src/themes/book/i18n/ru.yaml: -------------------------------------------------------------------------------- 1 | - id: Search 2 | translation: Поиск 3 | 4 | - id: Edit this page 5 | translation: Редактировать эту страницу 6 | 7 | - id: Last modified by 8 | translation: Последнее изменение от 9 | 10 | - id: Expand 11 | translation: Развернуть 12 | 13 | - id: bookSearchConfig 14 | translation: '{ split: /[^a-zа-яё0-9\w]/gi }' 15 | -------------------------------------------------------------------------------- /book_src/themes/book/i18n/sv.yaml: -------------------------------------------------------------------------------- 1 | - id: Search 2 | translation: Sök 3 | 4 | - id: Edit this page 5 | translation: Redigera denna sida 6 | 7 | - id: Last modified by 8 | translation: Senast modifierad av 9 | 10 | - id: Expand 11 | translation: Expandera 12 | 13 | - id: bookSearchConfig 14 | translation: '{ cache: true }' 15 | -------------------------------------------------------------------------------- /book_src/themes/book/i18n/uk.yaml: -------------------------------------------------------------------------------- 1 | - id: Search 2 | translation: Пошук 3 | 4 | - id: Edit this page 5 | translation: Редагувати цю сторінку 6 | 7 | - id: Last modified by 8 | translation: Остання зміна від 9 | 10 | - id: Expand 11 | translation: Розгорнути 12 | 13 | - id: bookSearchConfig 14 | translation: '{ split: /[^a-zа-яё0-9\w]/gi }' 15 | -------------------------------------------------------------------------------- /book_src/themes/book/i18n/zh.yaml: -------------------------------------------------------------------------------- 1 | - id: Search 2 | translation: 搜索 3 | 4 | - id: Edit this page 5 | translation: 编辑本页 6 | 7 | - id: Last modified by 8 | translation: 最后修改者 9 | 10 | - id: Expand 11 | translation: 展开 12 | 13 | - id: bookSearchConfig 14 | translation: | 15 | { 16 | encode: false, 17 | tokenize: function(str) { 18 | return str.replace(/[\x00-\x7F]/g, '').split(''); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /book_src/themes/book/images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/images/screenshot.png -------------------------------------------------------------------------------- /book_src/themes/book/images/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/images/tn.png -------------------------------------------------------------------------------- /book_src/themes/book/layouts/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ partial "docs/html-head" . }} 6 | {{ partial "docs/inject/head" . }} 7 | 8 | 18 | 19 | 20 | 21 |
22 |
23 |

404

24 |

Page Not Found

25 |

26 | {{ .Site.Title }} 27 |

28 |
29 |
30 | 31 | {{ partial "docs/inject/body" . }} 32 | {{ template "_internal/google_analytics_async.html" . }} 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/_default/_markup/render-image.html: -------------------------------------------------------------------------------- 1 | {{- if .Page.Site.Params.BookPortableLinks -}} 2 | {{- template "portable-image" . -}} 3 | {{- else -}} 4 | {{ .Text }} 5 | {{- end -}} 6 | 7 | {{- define "portable-image" -}} 8 | {{- $isRemote := or (in .Destination "://") (strings.HasPrefix .Destination "//") }} 9 | {{- if not $isRemote }} 10 | {{- $path := print .Page.File.Dir .Destination }} 11 | {{- if strings.HasPrefix .Destination "/" }} 12 | {{- $path = print "/static" .Destination }} 13 | {{- end }} 14 | {{- if not (fileExists $path) }} 15 | {{- warnf "Image '%s' not found in '%s'" .Destination .Page.File }} 16 | {{- end }} 17 | {{- end }} 18 | {{ .Text }} 19 | {{- end -}} 20 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/_default/_markup/render-link.html: -------------------------------------------------------------------------------- 1 | {{- if .Page.Site.Params.BookPortableLinks -}} 2 | {{- template "portable-link" . -}} 3 | {{- else -}} 4 | {{ .Text | safeHTML }} 5 | {{- end -}} 6 | 7 | {{- define "portable-link" -}} 8 | {{- $destination := .Destination }} 9 | {{- $isRemote := or (in .Destination "://") (strings.HasPrefix .Destination "//") }} 10 | {{- if not $isRemote }} 11 | {{- $url := urls.Parse .Destination }} 12 | {{- $path := strings.TrimSuffix "/_index.md" $url.Path }} 13 | {{- $path = strings.TrimSuffix "/_index" $path }} 14 | {{- $path = strings.TrimSuffix ".md" $path }} 15 | {{- $page := .Page.GetPage $path }} 16 | {{- if $page }} 17 | {{- $destination = $page.RelPermalink }} 18 | {{- if $url.Fragment }} 19 | {{- $destination = print $destination "#" $url.Fragment }} 20 | {{- end }} 21 | {{- else if fileExists (print .Page.File.Dir .Destination) }} 22 | 23 | {{- else -}} 24 | {{- warnf "Page '%s' not found in '%s'" .Destination .Page.File }} 25 | {{- end }} 26 | {{- end }} 27 | {{ .Text | safeHTML }} 28 | {{- end -}} 29 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/_default/baseof.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ partial "docs/html-head" . }} 6 | {{ partial "docs/inject/head" . }} 7 | 8 | 9 | 10 | 11 |
12 | 15 | 16 |
17 |
18 | {{ template "header" . }} 19 |
20 | 21 | {{ partial "docs/inject/content-before" . }} 22 | {{ template "main" . }} 23 | {{ partial "docs/inject/content-after" . }} 24 | 25 |
26 | {{ template "footer" . }} 27 | {{ partial "docs/inject/footer" . }} 28 |
29 | 30 | {{ template "comments" . }} 31 | 32 | 33 |
34 | 35 | {{ if default true (default .Site.Params.BookToC .Params.BookToC) }} 36 | 39 | {{ end }} 40 |
41 | 42 | {{ partial "docs/inject/body" . }} 43 | 44 | 45 | 46 | 47 | {{ define "menu" }} 48 | {{ partial "docs/menu" . }} 49 | {{ end }} 50 | 51 | {{ define "header" }} 52 | {{ partial "docs/header" . }} 53 | 54 | {{ if default true (default .Site.Params.BookToC .Params.BookToC) }} 55 | 56 | 59 | {{ end }} 60 | {{ end }} 61 | 62 | {{ define "footer" }} 63 | {{ partial "docs/footer" . }} 64 | {{ end }} 65 | 66 | {{ define "comments" }} 67 | {{ if and .Content (default true (default .Site.Params.BookComments .Params.BookComments)) }} 68 |
69 | {{- partial "docs/comments" . -}} 70 |
71 | {{ end }} 72 | {{ end }} 73 | 74 | {{ define "main" }} 75 |
76 | {{- .Content -}} 77 |
78 | {{ end }} 79 | 80 | {{ define "toc" }} 81 | {{ partial "docs/toc" . }} 82 | {{ end }} 83 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/_default/list.html: -------------------------------------------------------------------------------- 1 | {{ define "dummy" }}{{ end }} 2 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/_default/single.html: -------------------------------------------------------------------------------- 1 | {{ define "dummy" }}{{ end }} 2 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/brand.html: -------------------------------------------------------------------------------- 1 |

2 | 3 | {{- with .Site.Params.BookLogo -}} 4 | Logo 5 | {{- end -}} 6 | {{ .Site.Title }} 7 | 8 |

9 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/comments.html: -------------------------------------------------------------------------------- 1 | 2 | {{ template "_internal/disqus.html" . }} 3 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/date.html: -------------------------------------------------------------------------------- 1 | 5 | {{- $format := default "January 2, 2006" .Format -}} 6 | {{- return (.Date.Format $format) -}} 7 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/footer.html: -------------------------------------------------------------------------------- 1 |
2 | {{ if .Site.IsMultiLingual }} 3 | {{ partial "docs/languages" . }} 4 | {{ end }} 5 | 6 | {{ if and .GitInfo .Site.Params.BookRepo }} 7 |
8 | {{- $date := partial "docs/date" (dict "Date" .GitInfo.AuthorDate.Local "Format" .Site.Params.BookDateFormat) -}} 9 | 10 | Calendar 11 | {{ $date }} 12 | 13 |
14 | {{ end }} 15 | 16 | {{ if and .File .Site.Params.BookRepo .Site.Params.BookEditPath }} 17 |
18 | 19 | Edit 20 | {{ i18n "Edit this page" }} 21 | 22 |
23 | {{ end }} 24 |
25 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/header.html: -------------------------------------------------------------------------------- 1 |
2 | 5 | 6 | {{ partial "docs/title" . }} 7 | 8 | 11 |
12 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/html-head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {{- template "_internal/opengraph.html" . -}} 7 | 8 | {{ partial "docs/title" . }} | {{ .Site.Title -}} 9 | 10 | {{- $manifest := resources.Get "manifest.json" | resources.ExecuteAsTemplate "manifest.json" . }} 11 | 12 | 13 | 14 | {{- range .Translations }} 15 | 16 | {{ end -}} 17 | 18 | 19 | {{- $styles := resources.Get "book.scss" | resources.ExecuteAsTemplate "book.scss" . | resources.ToCSS | resources.Minify | resources.Fingerprint }} 20 | 21 | 22 | {{- if default true .Site.Params.BookSearch }} 23 | {{- $searchJSFile := printf "%s.search.js" .Language.Lang }} 24 | {{- $searchJS := resources.Get "search.js" | resources.ExecuteAsTemplate $searchJSFile . | resources.Minify | resources.Fingerprint }} 25 | 26 | {{ end -}} 27 | 28 | {{- if .Site.Params.BookServiceWorker }} 29 | {{- $swJS := resources.Get "sw-register.js" | resources.ExecuteAsTemplate "sw.js" . | resources.Minify | resources.Fingerprint }} 30 | 31 | {{ end -}} 32 | 33 | {{- template "_internal/google_analytics_async.html" . -}} 34 | 35 | 36 | {{- with .OutputFormats.Get "rss" -}} 37 | {{ printf `` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }} 38 | {{ end -}} 39 | 40 | {{ "" | safeHTML }} 44 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/inject/body.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/layouts/partials/docs/inject/body.html -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/inject/content-after.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/layouts/partials/docs/inject/content-after.html -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/inject/content-before.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/layouts/partials/docs/inject/content-before.html -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/inject/footer.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/layouts/partials/docs/inject/footer.html -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/inject/head.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/layouts/partials/docs/inject/head.html -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/inject/menu-after.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/layouts/partials/docs/inject/menu-after.html -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/inject/menu-before.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/layouts/partials/docs/inject/menu-before.html -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/languages.html: -------------------------------------------------------------------------------- 1 | 2 | {{ $translations := dict }} 3 | {{ range .Site.Home.AllTranslations }} 4 | {{ $translations = merge $translations (dict .Language.Lang .) }} 5 | {{ end }} 6 | {{ range .Translations }} 7 | {{ $translations = merge $translations (dict .Language.Lang .) }} 8 | {{ end }} 9 | 10 |
11 | 17 | 18 | 28 |
29 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/menu-bundle.html: -------------------------------------------------------------------------------- 1 | {{ with .Site.GetPage .Site.Params.BookMenuBundle }} 2 | {{- $href := printf "href=\"%s\"" $.RelPermalink -}} 3 | {{- replace .Content $href (print $href "class=active") | safeHTML -}} 4 | {{ end }} 5 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/menu-filetree.html: -------------------------------------------------------------------------------- 1 | {{ $bookSection := default "docs" .Site.Params.BookSection }} 2 | {{ if eq $bookSection "*" }} 3 | {{ $bookSection = "/" }}{{/* Backward compatibility */}} 4 | {{ end }} 5 | 6 | {{ with .Site.GetPage $bookSection }} 7 | {{ template "book-section-children" (dict "Section" . "CurrentPage" $) }} 8 | {{ end }} 9 | 10 | {{ define "book-section-children" }}{{/* (dict "Section" .Section "CurrentPage" .CurrentPage) */}} 11 | {{ $self := eq .CurrentPage .Section }} 12 | {{ $ancestor := .Section.IsAncestor .CurrentPage }} 13 | {{ $collapsed := .Section.Params.bookCollapseSection }} 14 | 15 | {{ if or $self $ancestor (not $collapsed) }} 16 | 30 | {{ end }} 31 | {{ end }} 32 | 33 | {{ define "book-page-link" }}{{/* (dict "Page" .Page "CurrentPage" .CurrentPage) */}} 34 | {{ if .Page.Content }} 35 | 38 | {{- partial "docs/title" .Page -}} 39 | 40 | {{ else }} 41 | {{- partial "docs/title" .Page -}} 42 | {{ end }} 43 | {{ end }} 44 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/menu-hugo.html: -------------------------------------------------------------------------------- 1 | 5 | {{ if . }} 6 | {{ template "book-menu-hugo" . }} 7 | {{ end }} 8 | 9 | {{ define "book-menu-hugo" }} 10 | 28 | {{ end }} 29 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/menu.html: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | {{ $script := resources.Get "menu-reset.js" | resources.Minify }} 20 | {{ with $script.Content }} 21 | 22 | {{ end }} 23 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/post-meta.html: -------------------------------------------------------------------------------- 1 | {{ with .Date}} 2 |
{{ partial "docs/date" (dict "Date" . "Format" $.Site.Params.BookDateFormat) }}
3 | {{ end }} 4 | 5 | {{ range $taxonomy, $_ := .Site.Taxonomies }} 6 | {{ with $terms := $.GetTerms $taxonomy }} 7 |
8 | {{ range $n, $term := $terms }}{{ if $n }}, {{ end }} 9 | {{ $term.Title }} 10 | {{- end }} 11 |
12 | {{ end }} 13 | {{ end }} 14 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/search.html: -------------------------------------------------------------------------------- 1 | {{ if default true .Site.Params.BookSearch }} 2 | 7 | {{ end }} 8 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/taxonomy.html: -------------------------------------------------------------------------------- 1 | 20 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/title.html: -------------------------------------------------------------------------------- 1 | 5 | {{ $title := "" }} 6 | 7 | {{ if .Title }} 8 | {{ $title = .Title }} 9 | {{ else if and .IsSection .File }} 10 | {{ $title = path.Base .File.Dir | humanize | title }} 11 | {{ else if and .IsPage .File }} 12 | {{ $title = .File.BaseFileName | humanize | title }} 13 | {{ end }} 14 | 15 | {{ return $title }} 16 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/partials/docs/toc.html: -------------------------------------------------------------------------------- 1 | {{ .TableOfContents }} 2 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/posts/list.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{ range sort .Paginator.Pages }} 3 |
4 |

5 | {{ .Title }} 6 |

7 | {{ partial "docs/post-meta" . }} 8 |

9 | {{- .Summary -}} 10 | {{ if .Truncated }} 11 | ... 12 | {{ end }} 13 |

14 |
15 | {{ end }} 16 | 17 | {{ template "_internal/pagination.html" . }} 18 | {{ end }} 19 | 20 | {{ define "toc" }} 21 | {{ partial "docs/taxonomy" . }} 22 | {{ end }} 23 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/posts/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
3 |

4 | {{ .Title }} 5 |

6 | {{ partial "docs/post-meta" . }} 7 |

8 | {{- .Content -}} 9 |

10 |
11 | {{ end }} 12 | 13 | {{ define "toc" }} 14 | {{ partial "docs/toc" . }} 15 | {{ end }} 16 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/shortcodes/button.html: -------------------------------------------------------------------------------- 1 | {{ $ref := "" }} 2 | {{ $target := "" }} 3 | {{ with .Get "href" }} 4 | {{ $ref = . }} 5 | {{ $target = "_blank" }} 6 | {{ end }} 7 | {{ with .Get "relref" }} 8 | {{ $ref = relref $ . }} 9 | {{ end }} 10 | 11 | {{ $.Inner }} 12 | 13 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/shortcodes/columns.html: -------------------------------------------------------------------------------- 1 |
2 | {{ range split .Inner "<--->" }} 3 |
4 | {{ . | markdownify }} 5 |
6 | {{ end }} 7 |
8 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/shortcodes/details.html: -------------------------------------------------------------------------------- 1 |
2 | {{ cond .IsNamedParams (.Get "title") (.Get 0) }} 3 |
4 | {{ .Inner | markdownify }} 5 |
6 |
7 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/shortcodes/expand.html: -------------------------------------------------------------------------------- 1 | {{ warnf "Expand shortcode is deprecated. Use 'details' instead." }} 2 |
3 | 13 |
14 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/shortcodes/hint.html: -------------------------------------------------------------------------------- 1 |
2 | {{ .Inner | markdownify }} 3 |
4 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/shortcodes/katex.html: -------------------------------------------------------------------------------- 1 | {{- if not (.Page.Scratch.Get "katex") -}} 2 | 3 | 4 | 5 | 6 | {{- .Page.Scratch.Set "katex" true -}} 7 | {{- end -}} 8 | 9 | 10 | {{ cond (in .Params "display") "\\[" "\\(" -}} 11 | {{- trim .Inner "\n" -}} 12 | {{- cond (in .Params "display") "\\]" "\\)" }} 13 | 14 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/shortcodes/mermaid.html: -------------------------------------------------------------------------------- 1 | {{ if not (.Page.Scratch.Get "mermaid") }} 2 | 3 | 4 | 9 | {{ .Page.Scratch.Set "mermaid" true }} 10 | {{ end }} 11 | 12 |

13 | {{- .Inner -}} 14 |

15 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/shortcodes/tab.html: -------------------------------------------------------------------------------- 1 | {{ if .Parent }} 2 | {{ $name := .Get 0 }} 3 | {{ $group := printf "tabs-%s" (.Parent.Get 0) }} 4 | 5 | {{ if not (.Parent.Scratch.Get $group) }} 6 | {{ .Parent.Scratch.Set $group slice }} 7 | {{ end }} 8 | 9 | {{ .Parent.Scratch.Add $group (dict "Name" $name "Content" .Inner) }} 10 | {{ else }} 11 | {{ errorf "%q: 'tab' shortcode must be inside 'tabs' shortcode" .Page.Path }} 12 | {{ end}} 13 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/shortcodes/tabs.html: -------------------------------------------------------------------------------- 1 | {{ if .Inner }}{{ end }} 2 | {{ $id := .Get 0 }} 3 | {{ $group := printf "tabs-%s" $id }} 4 | 5 |
6 | {{- range $index, $tab := .Scratch.Get $group -}} 7 | 8 | 11 |
12 | {{- .Content | markdownify -}} 13 |
14 | {{- end -}} 15 |
16 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/taxonomy/list.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
3 |

{{ .Title | title }}

4 | {{ $taxonomies := index .Site.Taxonomies .Page.Type }} 5 | {{ range $taxonomies }} 6 |
{{ .Page.Title }} {{ .Count }}
7 | {{ end }} 8 |
9 | {{ end }} 10 | 11 | {{ define "toc" }} 12 | {{ partial "docs/taxonomy" . }} 13 | {{ end }} 14 | -------------------------------------------------------------------------------- /book_src/themes/book/layouts/taxonomy/taxonomy.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{ range sort .Paginator.Pages }} 3 |
4 |

5 | {{ .Title }} 6 |

7 | {{ partial "docs/post-meta" . }} 8 |

9 | {{- .Summary -}} 10 | {{ if .Truncated }} 11 | ... 12 | {{ end }} 13 |

14 |
15 | {{ end }} 16 | 17 | {{ template "_internal/pagination.html" . }} 18 | {{ end }} 19 | 20 | {{ define "toc" }} 21 | {{ partial "docs/taxonomy" . }} 22 | {{ end }} 23 | -------------------------------------------------------------------------------- /book_src/themes/book/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/favicon.png -------------------------------------------------------------------------------- /book_src/themes/book/static/favicon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /book_src/themes/book/static/fonts/roboto-mono-v6-latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/fonts/roboto-mono-v6-latin-regular.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/fonts/roboto-mono-v6-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/fonts/roboto-mono-v6-latin-regular.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/fonts/roboto-v19-latin-300italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/fonts/roboto-v19-latin-300italic.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/fonts/roboto-v19-latin-300italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/fonts/roboto-v19-latin-300italic.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/fonts/roboto-v19-latin-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/fonts/roboto-v19-latin-700.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/fonts/roboto-v19-latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/fonts/roboto-v19-latin-700.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/fonts/roboto-v19-latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/fonts/roboto-v19-latin-regular.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/fonts/roboto-v19-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/fonts/roboto-v19-latin-regular.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_AMS-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_AMS-Regular.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_AMS-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_AMS-Regular.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_AMS-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_AMS-Regular.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Caligraphic-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Caligraphic-Bold.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Caligraphic-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Caligraphic-Bold.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Caligraphic-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Caligraphic-Bold.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Caligraphic-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Caligraphic-Regular.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Caligraphic-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Caligraphic-Regular.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Caligraphic-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Caligraphic-Regular.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Fraktur-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Fraktur-Bold.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Fraktur-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Fraktur-Bold.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Fraktur-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Fraktur-Bold.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Fraktur-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Fraktur-Regular.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Fraktur-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Fraktur-Regular.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Fraktur-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Fraktur-Regular.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Main-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Main-Bold.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Main-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Main-Bold.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Main-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Main-Bold.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Main-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Main-BoldItalic.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Main-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Main-BoldItalic.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Main-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Main-BoldItalic.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Main-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Main-Italic.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Main-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Main-Italic.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Main-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Main-Italic.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Main-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Main-Regular.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Main-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Main-Regular.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Main-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Main-Regular.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Math-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Math-BoldItalic.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Math-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Math-BoldItalic.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Math-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Math-BoldItalic.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Math-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Math-Italic.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Math-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Math-Italic.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Math-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Math-Italic.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Bold.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Bold.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Bold.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Italic.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Italic.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Italic.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Regular.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Regular.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_SansSerif-Regular.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Script-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Script-Regular.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Script-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Script-Regular.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Script-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Script-Regular.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Size1-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Size1-Regular.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Size1-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Size1-Regular.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Size1-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Size1-Regular.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Size2-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Size2-Regular.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Size2-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Size2-Regular.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Size2-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Size2-Regular.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Size3-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Size3-Regular.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Size3-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Size3-Regular.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Size3-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Size3-Regular.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Size4-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Size4-Regular.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Size4-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Size4-Regular.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Size4-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Size4-Regular.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Typewriter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Typewriter-Regular.ttf -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Typewriter-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Typewriter-Regular.woff -------------------------------------------------------------------------------- /book_src/themes/book/static/katex/fonts/KaTeX_Typewriter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/book_src/themes/book/static/katex/fonts/KaTeX_Typewriter-Regular.woff2 -------------------------------------------------------------------------------- /book_src/themes/book/static/svg/calendar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /book_src/themes/book/static/svg/edit.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /book_src/themes/book/static/svg/menu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /book_src/themes/book/static/svg/toc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /book_src/themes/book/static/svg/translate.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /book_src/themes/book/theme.toml: -------------------------------------------------------------------------------- 1 | # theme.toml template for a Hugo theme 2 | # See https://github.com/gohugoio/hugoThemes#themetoml for an example 3 | 4 | name = "Book" 5 | license = "MIT" 6 | licenselink = "https://github.com/alex-shpak/hugo-book/blob/master/LICENSE" 7 | description = "Hugo documentation theme as simple as plain book" 8 | homepage = "https://github.com/alex-shpak/hugo-book" 9 | tags = ["responsive", "clean", "documentation", "docs", "flexbox", "search", "mobile", "multilingual", "disqus"] 10 | features = [] 11 | min_version = "0.65" 12 | 13 | [author] 14 | name = "Alex Shpak" 15 | homepage = "https://github.com/alex-shpak/" 16 | -------------------------------------------------------------------------------- /docs/404.html: -------------------------------------------------------------------------------- 1 | 404 Page not found: | Пишем ботов для Telegram на языке Python

404

Page Not Found

Пишем ботов для Telegram на языке Python

-------------------------------------------------------------------------------- /docs/assets/custom.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size: 10px; 3 | } -------------------------------------------------------------------------------- /docs/bot_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/bot_logo.png -------------------------------------------------------------------------------- /docs/docs/aiogram/index.xml: -------------------------------------------------------------------------------- 1 | aiogram on Пишем ботов для Telegram на языке Pythonhttps://mastergroosha.github.io/telegram-tutorial/docs/aiogram/Recent content in aiogram on Пишем ботов для Telegram на языке PythonHugo -- gohugo.ioru-RUУрок 13https://mastergroosha.github.io/telegram-tutorial/docs/lesson_13/Mon, 01 Jan 0001 00:00:00 +0000https://mastergroosha.github.io/telegram-tutorial/docs/lesson_13/Введение Добро пожаловать в 2020! В последний раз мы рассматривали нововведения Bot API аж в далёком 2017 году, когда появилось удаление сообщений и ограничения в чатах. С тех пор вышло много чего интересного и, возможно, о чём-то стоит выпустить отдельные уроки. 2 | А сегодня мы познакомимся с опросами 2.0, точнее, с новой сущностью: викторинами (quiz). Викторина – это именно то, что вы и предположили; тест с одним правильными вариантом ответа и ещё N неправильными.Урок 14https://mastergroosha.github.io/telegram-tutorial/docs/lesson_14/Mon, 01 Jan 0001 00:00:00 +0000https://mastergroosha.github.io/telegram-tutorial/docs/lesson_14/Эта глава отныне доступна во второй версии книги, бесплатно, без регистрации и SMS. -------------------------------------------------------------------------------- /docs/docs/index.xml: -------------------------------------------------------------------------------- 1 | Docs on Пишем ботов для Telegram на языке Pythonhttps://mastergroosha.github.io/telegram-tutorial/docs/Recent content in Docs on Пишем ботов для Telegram на языке PythonHugo -- gohugo.ioru-RU<link>https://mastergroosha.github.io/telegram-tutorial/dev/cheatsheet/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://mastergroosha.github.io/telegram-tutorial/dev/cheatsheet/</guid><description>Cheatsheet Buttons Buttons are styled links that can lead to local page or external link. 2 | {{&lt; button relref=&#34;/&#34; [class=&#34;...&#34;] &gt;}}Get Home{{&lt; /button &gt;}} {{&lt; button href=&#34;https://github.com/alex-shpak/hugo-book&#34; &gt;}}Contribute{{&lt; /button &gt;}} Get Home Contribute Columns Columns help organize shorter pieces of content horizontally for readability. 3 | {{&lt; columns &gt;}} &lt;!-- begin columns block --&gt; # Left Content Lorem markdownum insigne... &lt;---&gt; &lt;!-- magic sparator, between columns --&gt; # Mid Content Lorem markdownum insigne.</description></item></channel></rss> -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/favicon.ico -------------------------------------------------------------------------------- /docs/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/favicon.png -------------------------------------------------------------------------------- /docs/favicon.svg: -------------------------------------------------------------------------------- 1 | <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M3 18h12v-2H3v2zM3 6v2h18V6H3zm0 7h18v-2H3v2z"/></svg> -------------------------------------------------------------------------------- /docs/fonts/roboto-mono-v6-latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/fonts/roboto-mono-v6-latin-regular.woff -------------------------------------------------------------------------------- /docs/fonts/roboto-mono-v6-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/fonts/roboto-mono-v6-latin-regular.woff2 -------------------------------------------------------------------------------- /docs/fonts/roboto-v19-latin-300italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/fonts/roboto-v19-latin-300italic.woff -------------------------------------------------------------------------------- /docs/fonts/roboto-v19-latin-300italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/fonts/roboto-v19-latin-300italic.woff2 -------------------------------------------------------------------------------- /docs/fonts/roboto-v19-latin-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/fonts/roboto-v19-latin-700.woff -------------------------------------------------------------------------------- /docs/fonts/roboto-v19-latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/fonts/roboto-v19-latin-700.woff2 -------------------------------------------------------------------------------- /docs/fonts/roboto-v19-latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/fonts/roboto-v19-latin-regular.woff -------------------------------------------------------------------------------- /docs/fonts/roboto-v19-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/fonts/roboto-v19-latin-regular.woff2 -------------------------------------------------------------------------------- /docs/images/l0_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l0_1.jpg -------------------------------------------------------------------------------- /docs/images/l0_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l0_2.png -------------------------------------------------------------------------------- /docs/images/l0_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l0_3.png -------------------------------------------------------------------------------- /docs/images/l0_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l0_4.png -------------------------------------------------------------------------------- /docs/images/l0_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l0_5.jpg -------------------------------------------------------------------------------- /docs/images/l0_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l0_6.png -------------------------------------------------------------------------------- /docs/images/l10_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l10_1.png -------------------------------------------------------------------------------- /docs/images/l10_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l10_2.png -------------------------------------------------------------------------------- /docs/images/l10_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l10_3.png -------------------------------------------------------------------------------- /docs/images/l11_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l11_1.png -------------------------------------------------------------------------------- /docs/images/l11_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l11_2.png -------------------------------------------------------------------------------- /docs/images/l12_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l12_1.jpg -------------------------------------------------------------------------------- /docs/images/l12_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l12_2.jpg -------------------------------------------------------------------------------- /docs/images/l13_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l13_1.png -------------------------------------------------------------------------------- /docs/images/l13_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l13_2.png -------------------------------------------------------------------------------- /docs/images/l13_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l13_3.png -------------------------------------------------------------------------------- /docs/images/l14_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l14_1.png -------------------------------------------------------------------------------- /docs/images/l14_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l14_2.png -------------------------------------------------------------------------------- /docs/images/l1_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l1_1.jpg -------------------------------------------------------------------------------- /docs/images/l1_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l1_2.jpg -------------------------------------------------------------------------------- /docs/images/l2_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l2_1.jpg -------------------------------------------------------------------------------- /docs/images/l2_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l2_2.jpg -------------------------------------------------------------------------------- /docs/images/l3_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l3_1.jpg -------------------------------------------------------------------------------- /docs/images/l4_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l4_1.jpg -------------------------------------------------------------------------------- /docs/images/l4_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l4_2.jpg -------------------------------------------------------------------------------- /docs/images/l6_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l6_1.jpg -------------------------------------------------------------------------------- /docs/images/l6_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l6_2.jpg -------------------------------------------------------------------------------- /docs/images/l6_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l6_3.jpg -------------------------------------------------------------------------------- /docs/images/l7_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l7_1.jpg -------------------------------------------------------------------------------- /docs/images/l7_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l7_2.jpg -------------------------------------------------------------------------------- /docs/images/l7_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l7_3.jpg -------------------------------------------------------------------------------- /docs/images/l7_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l7_4.jpg -------------------------------------------------------------------------------- /docs/images/l8_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l8_1.png -------------------------------------------------------------------------------- /docs/images/l8_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l8_2.png -------------------------------------------------------------------------------- /docs/images/l8_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l8_3.png -------------------------------------------------------------------------------- /docs/images/l8_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l8_4.png -------------------------------------------------------------------------------- /docs/images/l8_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l8_5.png -------------------------------------------------------------------------------- /docs/images/l9_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l9_1.jpg -------------------------------------------------------------------------------- /docs/images/l9_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l9_2.png -------------------------------------------------------------------------------- /docs/images/l9_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/images/l9_3.png -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_AMS-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_AMS-Regular.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_AMS-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_AMS-Regular.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_AMS-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_AMS-Regular.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Caligraphic-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Caligraphic-Bold.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Caligraphic-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Caligraphic-Bold.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Caligraphic-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Caligraphic-Bold.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Caligraphic-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Caligraphic-Regular.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Caligraphic-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Caligraphic-Regular.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Caligraphic-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Caligraphic-Regular.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Fraktur-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Fraktur-Bold.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Fraktur-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Fraktur-Bold.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Fraktur-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Fraktur-Bold.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Fraktur-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Fraktur-Regular.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Fraktur-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Fraktur-Regular.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Fraktur-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Fraktur-Regular.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Main-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Main-Bold.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Main-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Main-Bold.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Main-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Main-Bold.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Main-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Main-BoldItalic.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Main-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Main-BoldItalic.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Main-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Main-BoldItalic.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Main-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Main-Italic.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Main-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Main-Italic.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Main-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Main-Italic.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Main-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Main-Regular.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Main-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Main-Regular.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Main-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Main-Regular.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Math-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Math-BoldItalic.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Math-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Math-BoldItalic.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Math-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Math-BoldItalic.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Math-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Math-Italic.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Math-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Math-Italic.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Math-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Math-Italic.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_SansSerif-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_SansSerif-Bold.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_SansSerif-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_SansSerif-Bold.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_SansSerif-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_SansSerif-Bold.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_SansSerif-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_SansSerif-Italic.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_SansSerif-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_SansSerif-Italic.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_SansSerif-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_SansSerif-Italic.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_SansSerif-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_SansSerif-Regular.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_SansSerif-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_SansSerif-Regular.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_SansSerif-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_SansSerif-Regular.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Script-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Script-Regular.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Script-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Script-Regular.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Script-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Script-Regular.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Size1-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Size1-Regular.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Size1-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Size1-Regular.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Size1-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Size1-Regular.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Size2-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Size2-Regular.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Size2-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Size2-Regular.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Size2-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Size2-Regular.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Size3-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Size3-Regular.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Size3-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Size3-Regular.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Size3-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Size3-Regular.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Size4-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Size4-Regular.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Size4-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Size4-Regular.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Size4-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Size4-Regular.woff2 -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Typewriter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Typewriter-Regular.ttf -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Typewriter-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Typewriter-Regular.woff -------------------------------------------------------------------------------- /docs/katex/fonts/KaTeX_Typewriter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/docs/katex/fonts/KaTeX_Typewriter-Regular.woff2 -------------------------------------------------------------------------------- /docs/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Пишем ботов для Telegram на языке Python", 3 | "short_name": "Пишем ботов для Telegram на языке Python", 4 | "start_url": "/telegram-tutorial/", 5 | "scope": "/telegram-tutorial/", 6 | "display": "standalone", 7 | "background_color": "#000000", 8 | "theme_color": "#000000", 9 | "icons": [ 10 | { 11 | "src": "/telegram-tutorial/favicon.svg", 12 | "sizes": "512x512" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /docs/posts/page/1/index.html: -------------------------------------------------------------------------------- 1 | <!doctype html><html><head><title>https://mastergroosha.github.io/telegram-tutorial/posts/ -------------------------------------------------------------------------------- /docs/svg/calendar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/svg/edit.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/svg/menu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/svg/toc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/svg/translate.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lesson_01/bot.py: -------------------------------------------------------------------------------- 1 | import telebot 2 | import config 3 | 4 | bot = telebot.TeleBot(config.token) 5 | 6 | @bot.message_handler(content_types=["text"]) 7 | def repeat_all_messages(message): # Название функции не играет никакой роли, важно не повторяться 8 | bot.send_message(message.chat.id, message.text) 9 | 10 | 11 | if __name__ == "__main__": 12 | bot.infinity_polling() 13 | -------------------------------------------------------------------------------- /lesson_01/config.py: -------------------------------------------------------------------------------- 1 | token = 'Your_Token' -------------------------------------------------------------------------------- /lesson_02_03/SQLighter.py: -------------------------------------------------------------------------------- 1 | import sqlite3 2 | 3 | 4 | class SQLighter: 5 | 6 | def __init__(self, database): 7 | self.connection = sqlite3.connect(database) 8 | self.cursor = self.connection.cursor() 9 | 10 | def select_all(self): 11 | """ Получаем все строки """ 12 | with self.connection: 13 | return self.cursor.execute('SELECT * FROM music').fetchall() 14 | 15 | def select_single(self, rownum): 16 | """ Получаем одну строку с номером rownum """ 17 | with self.connection: 18 | return self.cursor.execute('SELECT * FROM music WHERE id = ?', (rownum,)).fetchall()[0] 19 | 20 | def count_rows(self): 21 | """ Считаем количество строк """ 22 | with self.connection: 23 | result = self.cursor.execute('SELECT * FROM music').fetchall() 24 | return len(result) 25 | 26 | def close(self): 27 | """ Закрываем текущее соединение с БД """ 28 | self.connection.close() 29 | -------------------------------------------------------------------------------- /lesson_02_03/bot.py: -------------------------------------------------------------------------------- 1 | import telebot 2 | from lesson_02_03 import config 3 | import os 4 | import time 5 | import random 6 | from lesson_02_03 import utils 7 | from lesson_02_03.SQLighter import SQLighter 8 | from telebot import types 9 | bot = telebot.TeleBot(config.token) 10 | 11 | 12 | @bot.message_handler(commands=['game']) 13 | def game(message): 14 | # Подключаемся к БД 15 | db_worker = SQLighter(config.database_name) 16 | # Получаем случайную строку из БД 17 | row = db_worker.select_single(random.randint(1, utils.get_rows_count())) 18 | # Формируем разметку 19 | markup = utils.generate_markup(row[2], row[3]) 20 | # Отправляем аудиофайл с вариантами ответа 21 | bot.send_voice(message.chat.id, row[1], reply_markup=markup, duration=20) 22 | # Включаем "игровой режим" 23 | utils.set_user_game(message.chat.id, row[2]) 24 | # Отсоединяемся от БД 25 | db_worker.close() 26 | 27 | 28 | @bot.message_handler(func=lambda message: True, content_types=['text']) 29 | def check_answer(message): 30 | # Если функция возвращает None -> Человек не в игре 31 | answer = utils.get_answer_for_user(message.chat.id) 32 | # Как Вы помните, answer может быть либо текст, либо None 33 | # Если None: 34 | if not answer: 35 | bot.send_message(message.chat.id, 'Чтобы начать игру, выберите команду /game') 36 | else: 37 | # Уберем клавиатуру с вариантами ответа. 38 | keyboard_hider = types.ReplyKeyboardRemove() 39 | # Если ответ правильный/неправильный 40 | if message.text == answer: 41 | bot.send_message(message.chat.id, 'Верно!', reply_markup=keyboard_hider) 42 | else: 43 | bot.send_message(message.chat.id, 'Увы, Вы не угадали. Попробуйте ещё раз!', reply_markup=keyboard_hider) 44 | # Удаляем юзера из хранилища (игра закончена) 45 | utils.finish_user_game(message.chat.id) 46 | 47 | 48 | @bot.message_handler(commands=['test']) 49 | def find_file_ids(message): 50 | for file in os.listdir('music/'): 51 | if file.split('.')[-1] == 'ogg': 52 | f = open("music/"+file, 'rb') 53 | res = bot.send_voice(message.chat.id, f, None) 54 | print(res) 55 | time.sleep(3) 56 | 57 | 58 | if __name__ == '__main__': 59 | utils.count_rows() 60 | random.seed() 61 | bot.infinity_polling() 62 | -------------------------------------------------------------------------------- /lesson_02_03/config.py: -------------------------------------------------------------------------------- 1 | token = 'YOUR_TOKEN' # Токен бота 2 | database_name = 'music.db' # Файл с базой данных 3 | shelve_name = 'shelve.db' # Файл с хранилищем 4 | -------------------------------------------------------------------------------- /lesson_02_03/music.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/lesson_02_03/music.db -------------------------------------------------------------------------------- /lesson_02_03/music/01_ImagineDragons_Radioactive.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/lesson_02_03/music/01_ImagineDragons_Radioactive.ogg -------------------------------------------------------------------------------- /lesson_02_03/music/02_ArcticMonkeys_DoIWannaKnow.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/lesson_02_03/music/02_ArcticMonkeys_DoIWannaKnow.ogg -------------------------------------------------------------------------------- /lesson_02_03/music/03_ThePixies_WhereIsMyMind.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/lesson_02_03/music/03_ThePixies_WhereIsMyMind.ogg -------------------------------------------------------------------------------- /lesson_02_03/music/04_BlackEyedPeas_DumDiddly.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/lesson_02_03/music/04_BlackEyedPeas_DumDiddly.ogg -------------------------------------------------------------------------------- /lesson_02_03/music/05_Arabesque_InTheHeatOfADiscoNight.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MasterGroosha/telegram-tutorial/ccae45db4b2ef6fc8c3522234dcef80c21ad8525/lesson_02_03/music/05_Arabesque_InTheHeatOfADiscoNight.ogg -------------------------------------------------------------------------------- /lesson_04/bot.py: -------------------------------------------------------------------------------- 1 | import telebot 2 | import cherrypy 3 | 4 | from lesson_04 import config 5 | 6 | WEBHOOK_HOST = 'ip/host where the bot is running' 7 | WEBHOOK_PORT = 443 # 443, 80, 88 или 8443 (порт должен быть открыт!) 8 | WEBHOOK_LISTEN = '0.0.0.0' # На некоторых серверах придется указывать такой же IP, что и выше 9 | 10 | WEBHOOK_SSL_CERT = './webhook_cert.pem' # Путь к сертификату 11 | WEBHOOK_SSL_PRIV = './webhook_pkey.pem' # Путь к приватному ключу 12 | 13 | WEBHOOK_URL_BASE = "https://%s:%s" % (WEBHOOK_HOST, WEBHOOK_PORT) 14 | WEBHOOK_URL_PATH = "/%s/" % config.token 15 | 16 | bot = telebot.TeleBot(config.token) 17 | 18 | 19 | # Наш вебхук-сервер 20 | class WebhookServer(object): 21 | @cherrypy.expose 22 | def index(self): 23 | if 'content-length' in cherrypy.request.headers and \ 24 | 'content-type' in cherrypy.request.headers and \ 25 | cherrypy.request.headers['content-type'] == 'application/json': 26 | length = int(cherrypy.request.headers['content-length']) 27 | json_string = cherrypy.request.body.read(length).decode("utf-8") 28 | update = telebot.types.Update.de_json(json_string) 29 | # Эта функция обеспечивает проверку входящего сообщения 30 | bot.process_new_updates([update]) 31 | return '' 32 | else: 33 | raise cherrypy.HTTPError(403) 34 | 35 | 36 | # Хэндлер на все текстовые сообщения 37 | @bot.message_handler(func=lambda message: True, content_types=['text']) 38 | def echo_message(message): 39 | bot.reply_to(message, message.text) 40 | 41 | # Снимаем вебхук перед повторной установкой (избавляет от некоторых проблем) 42 | bot.remove_webhook() 43 | 44 | # Ставим заново вебхук 45 | bot.set_webhook(url=WEBHOOK_URL_BASE + WEBHOOK_URL_PATH, 46 | certificate=open(WEBHOOK_SSL_CERT, 'r')) 47 | 48 | # Указываем настройки сервера CherryPy 49 | cherrypy.config.update({ 50 | 'server.socket_host': WEBHOOK_LISTEN, 51 | 'server.socket_port': WEBHOOK_PORT, 52 | 'server.ssl_module': 'builtin', 53 | 'server.ssl_certificate': WEBHOOK_SSL_CERT, 54 | 'server.ssl_private_key': WEBHOOK_SSL_PRIV 55 | }) 56 | 57 | # Собственно, запуск! 58 | cherrypy.quickstart(WebhookServer(), WEBHOOK_URL_PATH, {'/': {}}) 59 | -------------------------------------------------------------------------------- /lesson_04/config.py: -------------------------------------------------------------------------------- 1 | token = 'Your_Token' -------------------------------------------------------------------------------- /lesson_06/README.md: -------------------------------------------------------------------------------- 1 | ⚠️ Внимание: Botan уже много лет отключен, код выше не работает. -------------------------------------------------------------------------------- /lesson_06/bot.py: -------------------------------------------------------------------------------- 1 | import telebot 2 | from lesson_06 import config 3 | from lesson_06 import botan 4 | import random 5 | bot = telebot.TeleBot(config.token) 6 | random.seed() 7 | 8 | 9 | @bot.message_handler(commands=['random']) 10 | def cmd_random(message): 11 | bot.send_message(message.chat.id, random.randint(1, 10)) 12 | # Если не нужно собирать ничего, кроме количества использований, замените третий аргумент message на None 13 | botan.track(config.botan_key, message.chat.id, message, 'Случайное число') 14 | return 15 | 16 | 17 | @bot.message_handler(commands=['yesorno']) 18 | def cmd_yesorno(message): 19 | bot.send_message(message.chat.id, random.choice(strings)) 20 | # Если не нужно собирать ничего, кроме количества использований, замените третий аргумент message на None 21 | botan.track(config.botan_key, message.chat.id, message, 'Да или нет') 22 | return 23 | 24 | 25 | if __name__ == '__main__': 26 | global strings 27 | strings = ['Да', 'Нет'] 28 | bot.infinity_polling() 29 | -------------------------------------------------------------------------------- /lesson_06/botan.py: -------------------------------------------------------------------------------- 1 | # Modified for pyTelegramBotAPI (https://github.com/eternnoir/pyTelegramBotAPI/) 2 | 3 | import requests 4 | import json 5 | 6 | TRACK_URL = 'https://api.botan.io/track' 7 | 8 | # Эту функцию можно модифицировать, чтобы собирать... 9 | # ...именно то, что нужно (или вообще ничего) 10 | def make_json(message): 11 | data = {} 12 | data['message_id'] = message.message_id 13 | data['from'] = {} 14 | data['from']['id'] = message.from_user.id 15 | if message.from_user.username is not None: 16 | data['from']['username'] = message.from_user.username 17 | data['chat'] = {} 18 | # Chat.Id используется в обоих типах чатов 19 | data['chat']['id'] = message.chat.id 20 | return json.dumps(data) 21 | 22 | 23 | def track(token, uid, message, name='Message'): 24 | try: 25 | r = requests.post( 26 | TRACK_URL, 27 | params={"token": token, "uid": uid, "name": name}, 28 | data=make_json(message), 29 | headers={'Content-type': 'application/json'}, 30 | ) 31 | return r.json() 32 | except requests.exceptions.Timeout: 33 | # set up for a retry, or continue in a retry loop 34 | return False 35 | except (requests.exceptions.RequestException, ValueError) as e: 36 | # catastrophic error 37 | print(e) 38 | return False 39 | -------------------------------------------------------------------------------- /lesson_06/config.py: -------------------------------------------------------------------------------- 1 | token = 'Токен бота' 2 | botan_key = 'Ключ аналитики от Botan' 3 | -------------------------------------------------------------------------------- /lesson_08/bot.py: -------------------------------------------------------------------------------- 1 | import telebot 2 | from telebot import types 3 | 4 | bot = telebot.TeleBot("Вставьте сюда токен своего бота") 5 | 6 | 7 | @bot.message_handler(content_types=["text"]) 8 | def any_msg(message): 9 | # Создаем клавиатуру и каждую из кнопок (по 2 в ряд) 10 | keyboard = types.InlineKeyboardMarkup(row_width=2) 11 | url_button = types.InlineKeyboardButton(text="URL", url="https://ya.ru") 12 | callback_button = types.InlineKeyboardButton(text="Callback", callback_data="test") 13 | switch_button = types.InlineKeyboardButton(text="Switch", switch_inline_query="Telegram") 14 | keyboard.add(url_button, callback_button, switch_button) 15 | bot.send_message(message.chat.id, "Я – сообщение из обычного режима", reply_markup=keyboard) 16 | 17 | 18 | @bot.callback_query_handler(func=lambda call: True) 19 | def callback_inline(call): 20 | # Если сообщение из чата с ботом 21 | if call.message: 22 | if call.data == "test": 23 | bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Пыщь") 24 | # Уведомление в верхней части экрана 25 | bot.answer_callback_query(callback_query_id=call.id, show_alert=False, text="Пыщь!") 26 | # Если сообщение из инлайн-режима 27 | elif call.inline_message_id: 28 | if call.data == "test": 29 | bot.edit_message_text(inline_message_id=call.inline_message_id, text="Бдыщь") 30 | 31 | 32 | # Простейший инлайн-хэндлер для ненулевых запросов 33 | @bot.inline_handler(lambda query: len(query.query) > 0) 34 | def query_text(query): 35 | kb = types.InlineKeyboardMarkup() 36 | kb.add(types.InlineKeyboardButton(text="Нажми меня", callback_data="test")) 37 | results = [] 38 | # Обратите внимание: вместо текста - объект input_message_content c текстом! 39 | single_msg = types.InlineQueryResultArticle( 40 | id="1", title="Press me", 41 | input_message_content=types.InputTextMessageContent(message_text="Я – сообщение из инлайн-режима"), 42 | reply_markup=kb 43 | ) 44 | results.append(single_msg) 45 | bot.answer_inline_query(query.id, results) 46 | 47 | 48 | if __name__ == '__main__': 49 | bot.infinity_polling() 50 | -------------------------------------------------------------------------------- /lesson_09/bot.py: -------------------------------------------------------------------------------- 1 | import telebot 2 | from telebot import types 3 | 4 | bot = telebot.TeleBot("Токен вашего бота") 5 | 6 | 7 | @bot.message_handler(commands=["geophone"]) 8 | def geophone(message): 9 | keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True) 10 | button_phone = types.KeyboardButton(text="Отправить номер телефона", request_contact=True) 11 | button_geo = types.KeyboardButton(text="Отправить местоположение", request_location=True) 12 | keyboard.add(button_phone, button_geo) 13 | bot.send_message(message.chat.id, 14 | text="Отправь мне свой номер телефона или поделись местоположением, жалкий человечишка!", 15 | reply_markup=keyboard) 16 | 17 | 18 | @bot.message_handler(func=lambda message: True) 19 | def any_message(message): 20 | bot.reply_to(message, "Сам {!s}".format(message.text)) 21 | 22 | 23 | @bot.edited_message_handler(func=lambda message: True) 24 | def edit_message(message): 25 | bot.edit_message_text(chat_id=message.chat.id, 26 | text="Сам {!s}".format(message.text), 27 | message_id=message.message_id + 1) 28 | 29 | 30 | @bot.inline_handler(func=lambda query: True) 31 | def inline_mode(query): 32 | capibara1 = types.InlineQueryResultCachedPhoto( 33 | id="1", 34 | photo_file_id="AgADAgAD6rMxGyBnGwABgBmcoHgy6IENAAQSYK_1gyoAAU-5aQACAg", 35 | caption="Это капибара №1" 36 | ) 37 | capibara2 = types.InlineQueryResultCachedPhoto( 38 | id="2", 39 | photo_file_id="AgADAgAD67MxGyBnGwABCvqPIYxMNHENAAS51HjO88y_Z0ffAQABAg", 40 | caption="Это капибара №2" 41 | ) 42 | bot.answer_inline_query(query.id, [capibara1, capibara2]) 43 | 44 | 45 | if __name__ == "__main__": 46 | bot.infinity_polling() 47 | -------------------------------------------------------------------------------- /lesson_10/bot.py: -------------------------------------------------------------------------------- 1 | import telebot 2 | from time import time 3 | 4 | 5 | bot = telebot.TeleBot("Токен вашего бота") 6 | 7 | GROUP_ID = -10012345 # ID вашей группы 8 | 9 | strings = { 10 | "ru": { 11 | "ro_msg": "Вам запрещено отправлять сюда сообщения в течение 10 минут." 12 | }, 13 | "en": { 14 | "ro_msg": "You're not allowed to send messages here for 10 minutes." 15 | } 16 | } 17 | 18 | 19 | def get_language(lang_code): 20 | # Иногда language_code может быть None 21 | if not lang_code: 22 | return "en" 23 | if "-" in lang_code: 24 | lang_code = lang_code.split("-")[0] 25 | if lang_code == "ru": 26 | return "ru" 27 | else: 28 | return "en" 29 | 30 | 31 | # Удаляем сообщения с ссылками 32 | @bot.message_handler(func=lambda message: message.entities is not None and message.chat.id == GROUP_ID) 33 | def delete_links(message): 34 | for entity in message.entities: 35 | if entity.type in ["url", "text_link"]: 36 | bot.delete_message(message.chat.id, message.message_id) 37 | else: 38 | return 39 | 40 | 41 | restricted_messages = ["я веган", "i am vegan"] 42 | 43 | 44 | # Выдаём Read-only за определённые фразы 45 | @bot.message_handler(func=lambda message: message.text and message.text.lower() in restricted_messages and message.chat.id == GROUP_ID) 46 | def set_ro(message): 47 | print(message.from_user.language_code) 48 | bot.restrict_chat_member(message.chat.id, message.from_user.id, until_date=time()+600) 49 | bot.send_message(message.chat.id, strings.get(get_language(message.from_user.language_code)).get("ro_msg"), 50 | reply_to_message_id=message.message_id) 51 | 52 | 53 | if __name__ == "__main__": 54 | bot.infinity_polling() 55 | -------------------------------------------------------------------------------- /lesson_11/config.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | token = "12345567:ABCxyz" 4 | db_file = "database.vdb" 5 | 6 | 7 | class States(Enum): 8 | """ 9 | Мы используем БД Vedis, в которой хранимые значения всегда строки, 10 | поэтому и тут будем использовать тоже строки (str) 11 | """ 12 | S_START = "0" # Начало нового диалога 13 | S_ENTER_NAME = "1" 14 | S_ENTER_AGE = "2" 15 | S_SEND_PIC = "3" 16 | -------------------------------------------------------------------------------- /lesson_11/dbworker.py: -------------------------------------------------------------------------------- 1 | from vedis import Vedis 2 | import config 3 | 4 | 5 | # Пытаемся узнать из базы «состояние» пользователя 6 | def get_current_state(user_id): 7 | with Vedis(config.db_file) as db: 8 | try: 9 | return db[user_id].decode() # Если используете Vedis версии ниже, чем 0.7.1, то .decode() НЕ НУЖЕН 10 | except KeyError: # Если такого ключа почему-то не оказалось 11 | return config.States.S_START.value # значение по умолчанию - начало диалога 12 | 13 | 14 | # Сохраняем текущее «состояние» пользователя в нашу базу 15 | def set_state(user_id, value): 16 | with Vedis(config.db_file) as db: 17 | try: 18 | db[user_id] = value 19 | return True 20 | except: 21 | # тут желательно как-то обработать ситуацию 22 | return False 23 | 24 | 25 | -------------------------------------------------------------------------------- /lesson_12/variant_1/bot1.py: -------------------------------------------------------------------------------- 1 | import cherrypy 2 | import telebot 3 | 4 | BOT_TOKEN = "токен нашего бота" 5 | 6 | bot = telebot.TeleBot(BOT_TOKEN) 7 | 8 | @bot.message_handler(commands=["start"]) 9 | def command_start(message): 10 | bot.send_message(message.chat.id, "Привет! Я бот номер 1") 11 | 12 | class WebhookServer(object): 13 | # index равнозначно /, т.к. отсутствию части после ip-адреса (грубо говоря) 14 | @cherrypy.expose 15 | def index(self): 16 | length = int(cherrypy.request.headers['content-length']) 17 | json_string = cherrypy.request.body.read(length).decode("utf-8") 18 | update = telebot.types.Update.de_json(json_string) 19 | bot.process_new_updates([update]) 20 | return '' 21 | 22 | if __name__ == '__main__': 23 | cherrypy.config.update({ 24 | 'server.socket_host': '127.0.0.1', 25 | 'server.socket_port': 7771, 26 | 'engine.autoreload.on': False 27 | }) 28 | cherrypy.quickstart(WebhookServer(), '/', {'/': {}}) -------------------------------------------------------------------------------- /lesson_12/variant_1/bot2.py: -------------------------------------------------------------------------------- 1 | import cherrypy 2 | import telebot 3 | 4 | BOT_TOKEN = "токен нашего бота" 5 | 6 | bot = telebot.TeleBot(BOT_TOKEN) 7 | 8 | @bot.message_handler(commands=["start"]) 9 | def command_start(message): 10 | bot.send_message(message.chat.id, "Привет! Я бот номер 2") 11 | 12 | class WebhookServer(object): 13 | # index равнозначно /, т.к. отсутствию части после ip-адреса (грубо говоря) 14 | @cherrypy.expose 15 | def index(self): 16 | length = int(cherrypy.request.headers['content-length']) 17 | json_string = cherrypy.request.body.read(length).decode("utf-8") 18 | update = telebot.types.Update.de_json(json_string) 19 | bot.process_new_updates([update]) 20 | return '' 21 | 22 | if __name__ == '__main__': 23 | cherrypy.config.update({ 24 | 'server.socket_host': '127.0.0.1', 25 | 'server.socket_port': 7772, 26 | 'engine.autoreload.on': False 27 | }) 28 | cherrypy.quickstart(WebhookServer(), '/', {'/': {}}) -------------------------------------------------------------------------------- /lesson_12/variant_2/add_this_to_nginx.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 443 ssl; 3 | server_name (адрес вашего сервера); 4 | 5 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 6 | ssl_certificate /etc/letsencrypt/live/(адрес вашего сервера)/fullchain.pem; 7 | ssl_certificate_key /etc/letsencrypt/live/(адрес вашего сервера)/privkey.pem; 8 | 9 | 10 | # Первый бот 11 | location /AAAA/ { 12 | proxy_pass http://127.0.0.1:7771/; 13 | proxy_redirect off; 14 | proxy_set_header Host $host; 15 | proxy_set_header X-Real-IP $remote_addr; 16 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 17 | proxy_set_header X-Forwarded-Host $server_name; 18 | } 19 | 20 | # Второй бот 21 | location /ZZZZ/ { 22 | proxy_pass http://127.0.0.1:7772/; 23 | proxy_redirect off; 24 | proxy_set_header Host $host; 25 | proxy_set_header X-Real-IP $remote_addr; 26 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 27 | proxy_set_header X-Forwarded-Host $server_name; 28 | } 29 | } -------------------------------------------------------------------------------- /lesson_12/variant_2/bot1.py: -------------------------------------------------------------------------------- 1 | import cherrypy 2 | import telebot 3 | 4 | BOT_TOKEN = "токен нашего бота" 5 | 6 | bot = telebot.TeleBot(BOT_TOKEN) 7 | 8 | @bot.message_handler(commands=["start"]) 9 | def command_start(message): 10 | bot.send_message(message.chat.id, "Привет! Я бот номер 1") 11 | 12 | class WebhookServer(object): 13 | # index равнозначно /, т.к. отсутствию части после ip-адреса (грубо говоря) 14 | @cherrypy.expose 15 | def index(self): 16 | length = int(cherrypy.request.headers['content-length']) 17 | json_string = cherrypy.request.body.read(length).decode("utf-8") 18 | update = telebot.types.Update.de_json(json_string) 19 | bot.process_new_updates([update]) 20 | return '' 21 | 22 | if __name__ == '__main__': 23 | bot.delete_webhook() 24 | bot.set_webhook(url="https://122.122.122.122/AAAA") 25 | cherrypy.config.update({ 26 | 'server.socket_host': '127.0.0.1', 27 | 'server.socket_port': 7771, 28 | 'engine.autoreload.on': False 29 | }) 30 | cherrypy.quickstart(WebhookServer(), '/', {'/': {}}) -------------------------------------------------------------------------------- /lesson_12/variant_2/bot2.py: -------------------------------------------------------------------------------- 1 | import cherrypy 2 | import telebot 3 | 4 | BOT_TOKEN = "токен нашего бота" 5 | 6 | bot = telebot.TeleBot(BOT_TOKEN) 7 | 8 | @bot.message_handler(commands=["start"]) 9 | def command_start(message): 10 | bot.send_message(message.chat.id, "Привет! Я бот номер 2") 11 | 12 | class WebhookServer(object): 13 | # index равнозначно /, т.к. отсутствию части после ip-адреса (грубо говоря) 14 | @cherrypy.expose 15 | def index(self): 16 | length = int(cherrypy.request.headers['content-length']) 17 | json_string = cherrypy.request.body.read(length).decode("utf-8") 18 | update = telebot.types.Update.de_json(json_string) 19 | bot.process_new_updates([update]) 20 | return '' 21 | 22 | if __name__ == '__main__': 23 | bot.delete_webhook() 24 | bot.set_webhook(url="https://122.122.122.122/ZZZZ") 25 | cherrypy.config.update({ 26 | 'server.socket_host': '127.0.0.1', 27 | 'server.socket_port': 7772, 28 | 'engine.autoreload.on': False 29 | }) 30 | cherrypy.quickstart(WebhookServer(), '/', {'/': {}}) -------------------------------------------------------------------------------- /lesson_13/quizzer.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | 4 | class Quiz: 5 | type: str = "quiz" 6 | 7 | def __init__(self, quiz_id, question, options, correct_option_id, owner_id): 8 | # Используем подсказки типов, чтобы было проще ориентироваться. 9 | self.quiz_id: str = quiz_id # ID викторины. Изменится после отправки от имени бота 10 | self.question: str = question # Текст вопроса 11 | self.options: List[str] = [*options] # "Распакованное" содержимое массива m_options в массив options 12 | self.correct_option_id: int = correct_option_id # ID правильного ответа 13 | self.owner: int = owner_id # Владелец опроса 14 | self.winners: List[int] = [] # Список победителей 15 | self.chat_id: int = 0 # Чат, в котором опубликована викторина 16 | self.message_id: int = 0 # Сообщение с викториной (для закрытия) 17 | -------------------------------------------------------------------------------- /lesson_14/bot.py: -------------------------------------------------------------------------------- 1 | from aiogram import executor 2 | 3 | # Если запускаете код отдельно от этого репозитория, то закомментируйте эти две строки... 4 | from lesson_14.misc import dp 5 | import lesson_14.handlers 6 | # ... и раскомментируйте эти 7 | # from misc import dp 8 | # import handlers 9 | 10 | 11 | if __name__ == "__main__": 12 | executor.start_polling(dp, skip_updates=True) 13 | -------------------------------------------------------------------------------- /lesson_14/handlers/__init__.py: -------------------------------------------------------------------------------- 1 | # Здесь мы подгружаем хэндлеры из файлов в текущем каталоге 2 | from . import general_commands 3 | from . import food 4 | from . import drinks 5 | from . import default_handler 6 | -------------------------------------------------------------------------------- /lesson_14/handlers/default_handler.py: -------------------------------------------------------------------------------- 1 | from aiogram import types 2 | 3 | # Если запускаете код отдельно от этого репозитория, то закомментируйте следующую строку: 4 | from lesson_14.misc import dp 5 | # ... и замените её на: 6 | # from misc import dp 7 | 8 | 9 | @dp.message_handler(content_types=types.ContentTypes.ANY, state="*") 10 | async def all_other_messages(message: types.Message): 11 | if message.content_type == "text": 12 | await message.reply("Ничего не понимаю!") 13 | else: 14 | await message.reply("Этот бот принимает только текстовые сообщения!") 15 | -------------------------------------------------------------------------------- /lesson_14/handlers/drinks.py: -------------------------------------------------------------------------------- 1 | from aiogram import types 2 | from aiogram.dispatcher import FSMContext 3 | from aiogram.dispatcher.filters.state import State, StatesGroup 4 | 5 | # Если запускаете код отдельно от этого репозитория, то закомментируйте следующую строку: 6 | from lesson_14.misc import dp 7 | # ... и замените её на: 8 | # from misc import dp 9 | 10 | available_drinks_names = ["чай", "кофе", "какао"] 11 | available_drinks_sizes = ["250 мл", "0.5л", "1л"] 12 | 13 | 14 | class OrderDrinks(StatesGroup): 15 | waiting_for_drink_name = State() 16 | waiting_for_drink_size = State() 17 | 18 | 19 | # Это самый первый хэндлер 20 | @dp.message_handler(commands="drinks", state="*") 21 | async def food_step_1(message: types.Message): 22 | keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True) 23 | for name in available_drinks_names: 24 | keyboard.add(name) 25 | await message.answer("Выберите напиток:", reply_markup=keyboard) 26 | await OrderDrinks.waiting_for_drink_name.set() 27 | 28 | 29 | @dp.message_handler(state=OrderDrinks.waiting_for_drink_name, content_types=types.ContentTypes.TEXT) 30 | async def food_step_2(message: types.Message, state: FSMContext): 31 | if message.text.lower() not in available_drinks_names: 32 | await message.reply("Пожалуйста, выберите напиток, используя клавиатуру ниже.") 33 | return 34 | await state.update_data(chosen_food=message.text.lower()) 35 | 36 | keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True) 37 | for size in available_drinks_sizes: 38 | keyboard.add(size) 39 | await OrderDrinks.next() # для простых шагов можно не указывать название состояния, обходясь next() 40 | await message.answer("Теперь выберите размер порции:", reply_markup=keyboard) 41 | 42 | 43 | @dp.message_handler(state=OrderDrinks.waiting_for_drink_size, content_types=types.ContentTypes.TEXT) 44 | async def food_step_3(message: types.Message, state: FSMContext): 45 | if message.text.lower() not in available_drinks_sizes: 46 | await message.reply("Пожалуйста, выберите размер порции, используя клавиатуру ниже.") 47 | return 48 | user_data = await state.get_data() 49 | await message.answer(f"Вы заказали {user_data['chosen_food']} объёмом {message.text.lower()}.\n" 50 | f"Попробуйте теперь заказать еду: /food", reply_markup=types.ReplyKeyboardRemove()) 51 | await state.finish() 52 | -------------------------------------------------------------------------------- /lesson_14/handlers/general_commands.py: -------------------------------------------------------------------------------- 1 | from aiogram import types 2 | from aiogram.dispatcher import FSMContext 3 | from aiogram.dispatcher.filters import Text 4 | 5 | # Если запускаете код отдельно от этого репозитория, то закомментируйте следующую строку: 6 | from lesson_14.misc import dp, bot 7 | # ... и замените её на: 8 | # from misc import dp, bot 9 | 10 | 11 | @dp.message_handler(commands="cancel", state="*") 12 | @dp.message_handler(Text(equals="отмена", ignore_case=True), state="*") 13 | async def cmd_cancel(message: types.Message, state: FSMContext): # обратите внимание на второй аргумент 14 | # Сбрасываем текущее состояние пользователя и сохранённые о нём данные 15 | await state.finish() 16 | await message.answer("Действие отменено", reply_markup=types.ReplyKeyboardRemove()) 17 | 18 | 19 | @dp.message_handler(commands=['start'], state="*") 20 | async def cmd_start(message: types.Message, state: FSMContext): 21 | await message.reply("Выберите, что хотите заказать: " 22 | "напитки (/drinks) или блюда (/food).", reply_markup=types.ReplyKeyboardRemove()) 23 | 24 | 25 | @dp.message_handler(commands="set_commands", state="*") 26 | async def cmd_set_commands(message: types.Message): 27 | if message.from_user.id == 1234567: # Подставьте сюда свой Telegram ID 28 | commands = [types.BotCommand(command="/drinks", description="Заказать напитки"), 29 | types.BotCommand(command="/food", description="Заказать блюда")] 30 | await bot.set_my_commands(commands) 31 | await message.answer("Команды настроены.") 32 | -------------------------------------------------------------------------------- /lesson_14/handlers/test.py: -------------------------------------------------------------------------------- 1 | from aiogram import types 2 | from lesson_14.misc import dp 3 | 4 | 5 | @dp.message_handler(content_types=types.ContentTypes.ANY) 6 | async def all_other_messages(message: types.Message): 7 | await message.reply("Любое другое сообщение") 8 | -------------------------------------------------------------------------------- /lesson_14/misc.py: -------------------------------------------------------------------------------- 1 | import logging 2 | from aiogram import Bot, Dispatcher 3 | from aiogram.contrib.fsm_storage.memory import MemoryStorage 4 | 5 | 6 | bot = Bot(token="") 7 | memory_storage = MemoryStorage() 8 | dp = Dispatcher(bot, storage=memory_storage) 9 | logging.basicConfig(level=logging.INFO) 10 | --------------------------------------------------------------------------------