├── .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 |
17 | {{ range (where .Section.Pages "Params.bookhidden" "ne" true) }}
18 | {{ if .IsSection }}
19 | -
20 | {{ template "book-page-link" (dict "Page" . "CurrentPage" $.CurrentPage) }}
21 | {{ template "book-section-children" (dict "Section" . "CurrentPage" $.CurrentPage) }}
22 |
23 | {{ else if and .IsPage .Content }}
24 | -
25 | {{ template "book-page-link" (dict "Page" . "CurrentPage" $.CurrentPage) }}
26 |
27 | {{ end }}
28 | {{ end }}
29 |
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 | {{* button relref="/" [class="..."] */>}}Get Home{{* /button */>}}
9 | {{* button href="https://github.com/alex-shpak/hugo-book" */>}}Contribute{{* /button */>}}
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 | {{* columns */>}}
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 | {{* /columns */>}}
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 | {{* details "Title" [open] */>}}
8 | ## Markdown content
9 | Lorem markdownum insigne...
10 | {{* /details */>}}
11 | ```
12 | ```tpl
13 | {{* details title="Title" open=true */>}}
14 | ## Markdown content
15 | Lorem markdownum insigne...
16 | {{* /details */>}}
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 | {{* expand */>}}
10 | ## Markdown content
11 | Lorem markdownum insigne...
12 | {{* /expand */>}}
13 | ```
14 |
15 | {{< expand >}}
16 | ## Markdown content
17 | Lorem markdownum insigne...
18 | {{< /expand >}}
19 |
20 | ### With Custom Label
21 |
22 | ```tpl
23 | {{* expand "Custom Label" "..." */>}}
24 | ## Markdown content
25 | Lorem markdownum insigne...
26 | {{* /expand */>}}
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 | {{* hint [info|warning|danger] */>}}
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 | {{* /hint */>}}
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 | {{* katex [display] [class="text-center"] */>}}
10 | f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi
11 | {{* /katex */>}}
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 | {{* mermaid [class="text-center"]*/>}}
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 | {{* /mermaid */>}}
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 | {{* tabs "uniqueid" */>}}
7 | {{* tab "MacOS" */>}} # MacOS Content {{* /tab */>}}
8 | {{* tab "Linux" */>}} # Linux Content {{* /tab */>}}
9 | {{* tab "Windows" */>}} # Windows Content {{* /tab */>}}
10 | {{* /tabs */>}}
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 |
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 |
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 |
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 |
20 |
21 | {{ partial "docs/inject/content-before" . }}
22 | {{ template "main" . }}
23 | {{ partial "docs/inject/content-after" . }}
24 |
25 |
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 |
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 |
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 |
11 | {{ $date }}
12 |
13 |
14 | {{ end }}
15 |
16 | {{ if and .File .Site.Params.BookRepo .Site.Params.BookEditPath }}
17 |
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 |
12 | -
13 |
14 | {{ $.Site.Language.LanguageName }}
15 |
16 |
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 |
17 | {{ range (where .Section.Pages "Params.bookhidden" "ne" true) }}
18 | {{ if .IsSection }}
19 | -
20 | {{ template "book-page-link" (dict "Page" . "CurrentPage" $.CurrentPage) }}
21 | {{ template "book-section-children" (dict "Section" . "CurrentPage" $.CurrentPage) }}
22 |
23 | {{ else if and .IsPage .Content }}
24 | -
25 | {{ template "book-page-link" (dict "Page" . "CurrentPage" $.CurrentPage) }}
26 |
27 | {{ end }}
28 | {{ end }}
29 |
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 |
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 |
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 |
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 |
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
--------------------------------------------------------------------------------
/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- https://mastergroosha.github.io/telegram-tutorial/dev/cheatsheet/Mon, 01 Jan 0001 00:00:00 +0000https://mastergroosha.github.io/telegram-tutorial/dev/cheatsheet/Cheatsheet Buttons Buttons are styled links that can lead to local page or external link.
2 | {{< button relref="/" [class="..."] >}}Get Home{{< /button >}} {{< button href="https://github.com/alex-shpak/hugo-book" >}}Contribute{{< /button >}} Get Home Contribute Columns Columns help organize shorter pieces of content horizontally for readability.
3 | {{< columns >}} <!-- begin columns block --> # Left Content Lorem markdownum insigne... <---> <!-- magic sparator, between columns --> # Mid Content Lorem markdownum insigne.
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/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 | 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 |
--------------------------------------------------------------------------------