0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Перед началом разработки</a><ul><li><a>Библиотеки для Python</a></li>
1
<ul><li><a>Перед началом разработки</a><ul><li><a>Библиотеки для Python</a></li>
2
</ul></li>
2
</ul></li>
3
<li><a>Краткая инструкция по программированию</a></li>
3
<li><a>Краткая инструкция по программированию</a></li>
4
<li><a>Разработка ботов</a><ul><li><a>Эхо-бот на Aiogram</a></li>
4
<li><a>Разработка ботов</a><ul><li><a>Эхо-бот на Aiogram</a></li>
5
<li><a>Классический эхо-бот</a></li>
5
<li><a>Классический эхо-бот</a></li>
6
<li><a>Статьи из Wikipedia</a></li>
6
<li><a>Статьи из Wikipedia</a></li>
7
<li><a>Две кнопки</a></li>
7
<li><a>Две кнопки</a></li>
8
</ul></li>
8
</ul></li>
9
</ul><p>Бот - это небольшая программа внутри Telegram, которая управляется за счет отправки текстовых команд в чате. Принцип функционирования осуществляется через модель "вопрос-ответ". Соответствующие технологии ранее встречались в ICQ. Тогда боты присылали анекдоты, гороскопы и различные статьи из "Википедии", а также переводили тексты. </p>
9
</ul><p>Бот - это небольшая программа внутри Telegram, которая управляется за счет отправки текстовых команд в чате. Принцип функционирования осуществляется через модель "вопрос-ответ". Соответствующие технологии ранее встречались в ICQ. Тогда боты присылали анекдоты, гороскопы и различные статьи из "Википедии", а также переводили тексты. </p>
10
<p>Сейчас бот в Telegram - это удобный инструмент для разнообразных целей. Такое программное обеспечение используется интернет-магазинами, компаниями и "обычными" пользователями. Далее предстоит выяснить, как писать ботов на Python. Это не архисложная задача, особенно если разобраться с ней поэтапно.</p>
10
<p>Сейчас бот в Telegram - это удобный инструмент для разнообразных целей. Такое программное обеспечение используется интернет-магазинами, компаниями и "обычными" пользователями. Далее предстоит выяснить, как писать ботов на Python. Это не архисложная задача, особенно если разобраться с ней поэтапно.</p>
11
<p>Предложенная далее информация предназначается для широкого круга лиц. С помощью нее создавать ботов для Телеграмм смогут разработчики разного уровня.</p>
11
<p>Предложенная далее информация предназначается для широкого круга лиц. С помощью нее создавать ботов для Телеграмм смогут разработчики разного уровня.</p>
12
<h2>Перед началом разработки</h2>
12
<h2>Перед началом разработки</h2>
13
<p>Телеграм позволяет писать ботов в свободной форме, начиная с 2015-го года. Боты - это небольшие скрипты, которые взаимодействуют с API для получения сообщений с пользовательской стороны. В ответ на них система передает информацию на каналы и разнообразные чаты.</p>
13
<p>Телеграм позволяет писать ботов в свободной форме, начиная с 2015-го года. Боты - это небольшие скрипты, которые взаимодействуют с API для получения сообщений с пользовательской стороны. В ответ на них система передает информацию на каналы и разнообразные чаты.</p>
14
<p>Для того, чтобы создать bot Python, требуется:</p>
14
<p>Для того, чтобы создать bot Python, требуется:</p>
15
<ul><li>дать "скрипту" название;</li>
15
<ul><li>дать "скрипту" название;</li>
16
<li>задать адрес расположения бота;</li>
16
<li>задать адрес расположения бота;</li>
17
<li>получить токен - строку, которая используется для однозначной идентификации бота на Телеграм-серверах.</li>
17
<li>получить токен - строку, которая используется для однозначной идентификации бота на Телеграм-серверах.</li>
18
</ul><p>Далее происходит программирование скрипта и его запуск. Сделать бота можно как полностью самостоятельно, так и посредством специализированных библиотек. Далее будут представлены самые популярные из них.</p>
18
</ul><p>Далее происходит программирование скрипта и его запуск. Сделать бота можно как полностью самостоятельно, так и посредством специализированных библиотек. Далее будут представлены самые популярные из них.</p>
19
<h3>Библиотеки для Python</h3>
19
<h3>Библиотеки для Python</h3>
20
<p>Более быстрому созданию любого программного обеспечения способствуют фреймворки и библиотеки. Python предусматривает множество подобных элементов. Библиотеки соответствующего языка позволяют разрабатывать приложения и утилиты любой сложности с минимальными усилиями и знаниями в сфере программирования.</p>
20
<p>Более быстрому созданию любого программного обеспечения способствуют фреймворки и библиотеки. Python предусматривает множество подобных элементов. Библиотеки соответствующего языка позволяют разрабатывать приложения и утилиты любой сложности с минимальными усилиями и знаниями в сфере программирования.</p>
21
<p>Для того, чтобы сделать простой бот для Телеграм, рекомендуется воспользоваться следующими библиотеками:</p>
21
<p>Для того, чтобы сделать простой бот для Телеграм, рекомендуется воспользоваться следующими библиотеками:</p>
22
<ol><li>Aiogram. Современная библиотека Питона для разработки ботов. Большинство рассматриваемых скриптов в Телеграмм написаны с ее помощью. В Aiogram реализована асинхронная работа кода. Она дает возможность не останавливать скрипт в процессе ожидания ответа со стороны пользователя. Упомянутая библиотека поддерживает подробную документацию и русскоязычное сообщество.</li>
22
<ol><li>Aiogram. Современная библиотека Питона для разработки ботов. Большинство рассматриваемых скриптов в Телеграмм написаны с ее помощью. В Aiogram реализована асинхронная работа кода. Она дает возможность не останавливать скрипт в процессе ожидания ответа со стороны пользователя. Упомянутая библиотека поддерживает подробную документацию и русскоязычное сообщество.</li>
23
<li>TeleBot. Библиотека, используемая для создания простейших мини-программ для Телеграмма. Дает возможность выбора принципа их функционирования: синхронно или асинхронно. Отлично подойдет для формирования проектов небольшого масштаба.</li>
23
<li>TeleBot. Библиотека, используемая для создания простейших мини-программ для Телеграмма. Дает возможность выбора принципа их функционирования: синхронно или асинхронно. Отлично подойдет для формирования проектов небольшого масштаба.</li>
24
<li>Python-telegram-bot. Одна из первых библиотек для создания bots в ТГ. От Aiogram отличается синхронным подходом к функционированию. Это значит, что в процессе работы скрипта и во время ожидания ответа от пользователя выполнение имеющегося кода останавливается.</li>
24
<li>Python-telegram-bot. Одна из первых библиотек для создания bots в ТГ. От Aiogram отличается синхронным подходом к функционированию. Это значит, что в процессе работы скрипта и во время ожидания ответа от пользователя выполнение имеющегося кода останавливается.</li>
25
</ol><p>Далее будут приведены примеры создания ботов на Aiogram и PythonTelegramBot. Предстоит изучить самые распространенные варианты скриптов.</p>
25
</ol><p>Далее будут приведены примеры создания ботов на Aiogram и PythonTelegramBot. Предстоит изучить самые распространенные варианты скриптов.</p>
26
<h2>Краткая инструкция по программированию</h2>
26
<h2>Краткая инструкция по программированию</h2>
27
<p>Написание бота на Питоне - не самая сложная задача, если грамотно подойти к соответствующему вопросу. Даже разработчик с минимальными знаниями упомянутого языка сможет создать первый проект для Телеграм.</p>
27
<p>Написание бота на Питоне - не самая сложная задача, если грамотно подойти к соответствующему вопросу. Даже разработчик с минимальными знаниями упомянутого языка сможет создать первый проект для Телеграм.</p>
28
<p>Пошагово программирование можно представить так:</p>
28
<p>Пошагово программирование можно представить так:</p>
29
<ol><li>Зарегистрировать бота в Телеграм.</li>
29
<ol><li>Зарегистрировать бота в Телеграм.</li>
30
<li>Установить Python-библиотеку для разработки ботов. Пример - Aiogram.</li>
30
<li>Установить Python-библиотеку для разработки ботов. Пример - Aiogram.</li>
31
<li>Добавить библиотеку в программу и научить грамотно реагировать на сообщения в чате. Этот этап и есть непосредственное программирование.</li>
31
<li>Добавить библиотеку в программу и научить грамотно реагировать на сообщения в чате. Этот этап и есть непосредственное программирование.</li>
32
<li>Добавить дополнительные элементы (пример - кнопки) по мере необходимости. Привязать к ним функциональность.</li>
32
<li>Добавить дополнительные элементы (пример - кнопки) по мере необходимости. Привязать к ним функциональность.</li>
33
<li>Запустить бота для проверки.</li>
33
<li>Запустить бота для проверки.</li>
34
</ol><p>Далее предстоит создать эхо-бота и другие распространенные типы скриптов для Telegram. Для некоторых приложений будет использоваться Aiogram.</p>
34
</ol><p>Далее предстоит создать эхо-бота и другие распространенные типы скриптов для Telegram. Для некоторых приложений будет использоваться Aiogram.</p>
35
<h2>Разработка ботов</h2>
35
<h2>Разработка ботов</h2>
36
<p>Начать создание ботов для Телеграм-канала или чата необходимо с установки Python и его инструментов. В MacOS и Linux соответствующее программное обеспечение обычно уже имеется в системах. Для проверки используется консольная команда: python -version.</p>
36
<p>Начать создание ботов для Телеграм-канала или чата необходимо с установки Python и его инструментов. В MacOS и Linux соответствующее программное обеспечение обычно уже имеется в системах. Для проверки используется консольная команда: python -version.</p>
37
<p>В Windows Python необходимо устанавливать. Рекомендуется загрузить инициализатор через официальный сайт разработчиков. Рекомендуется выбирать Python3 - более современную версию. </p>
37
<p>В Windows Python необходимо устанавливать. Рекомендуется загрузить инициализатор через официальный сайт разработчиков. Рекомендуется выбирать Python3 - более современную версию. </p>
38
<p>Как только Python установлен, необходимо сформировать и активировать виртуальное окружение. Для этого используется virtualenv. Виртуальным окружением называется инструмент, позволяющий изолировать друг от друга проекты, находящиеся в стадии разработки. В каждый из них необходимо устанавливать пакеты и инструменты обособленно. Виртуальное окружение особо удобно тогда, когда программист одновременно планирует работать с несколькими разными проектами.</p>
38
<p>Как только Python установлен, необходимо сформировать и активировать виртуальное окружение. Для этого используется virtualenv. Виртуальным окружением называется инструмент, позволяющий изолировать друг от друга проекты, находящиеся в стадии разработки. В каждый из них необходимо устанавливать пакеты и инструменты обособленно. Виртуальное окружение особо удобно тогда, когда программист одновременно планирует работать с несколькими разными проектами.</p>
39
<p>Установить virtualenv поможет терминал и команда:</p>
39
<p>Установить virtualenv поможет терминал и команда:</p>
40
<p>sudo pip3 install virtualenv.</p>
40
<p>sudo pip3 install virtualenv.</p>
41
<p>Далее предстоит сформировать директорию для проекта. В ней будет запускаться и работать виртуальное окружение:</p>
41
<p>Далее предстоит сформировать директорию для проекта. В ней будет запускаться и работать виртуальное окружение:</p>
42
<p>Здесь:</p>
42
<p>Здесь:</p>
43
<ul><li>mkdir - команда, которая создает папку telegram_bot;</li>
43
<ul><li>mkdir - команда, которая создает папку telegram_bot;</li>
44
<li>cd - переводит пользователя в заданную директорию.</li>
44
<li>cd - переводит пользователя в заданную директорию.</li>
45
</ul><p>В соответствующей директории будут храниться файлы проекта, которые связаны с ботом. Для развертки виртуального окружения используется команда:</p>
45
</ul><p>В соответствующей директории будут храниться файлы проекта, которые связаны с ботом. Для развертки виртуального окружения используется команда:</p>
46
<p>Теперь остается активировать упомянутый элемент. Иначе окружение вовсе не будет функционировать:</p>
46
<p>Теперь остается активировать упомянутый элемент. Иначе окружение вовсе не будет функционировать:</p>
47
<p>Как только подобные операции завершены, можно перейти к непосредственному программированию бота. Далее будут приведены различные примеры Телеграм-ботов. Они используются на практике чаще всего.</p>
47
<p>Как только подобные операции завершены, можно перейти к непосредственному программированию бота. Далее будут приведены различные примеры Телеграм-ботов. Они используются на практике чаще всего.</p>
48
<h3>Эхо-бот на Aiogram</h3>
48
<h3>Эхо-бот на Aiogram</h3>
49
<p>Эхо-бот нужен для того, чтобы дублировать сообщения. Пользователь пишет этому скрипту, мини-приложение, копирует предложенный текст и передает его в качестве ответа (реакции).</p>
49
<p>Эхо-бот нужен для того, чтобы дублировать сообщения. Пользователь пишет этому скрипту, мини-приложение, копирует предложенный текст и передает его в качестве ответа (реакции).</p>
50
<p>Первый вариант - это программирование бота Python через Aoigram. Для этого сначала потребуется создать bot. Данный этап будет единым для всех рассматриваемых далее примеров.</p>
50
<p>Первый вариант - это программирование бота Python через Aoigram. Для этого сначала потребуется создать bot. Данный этап будет единым для всех рассматриваемых далее примеров.</p>
51
<p>Чтобы создать бота, потребуется:</p>
51
<p>Чтобы создать бота, потребуется:</p>
52
<ol><li>Открыть Телеграмм и отыскать там BotFather.</li>
52
<ol><li>Открыть Телеграмм и отыскать там BotFather.</li>
53
<li>Кликнуть на "Запустить" и ввести команду newbot.</li>
53
<li>Кликнуть на "Запустить" и ввести команду newbot.</li>
54
<li>Дать имя боту. Путь им станет echo_otus_bot.</li>
54
<li>Дать имя боту. Путь им станет echo_otus_bot.</li>
55
<li>В ответ пользователь получит токен. Он должен быть сохранен. Это идентификатор мини-приложения для Телеграма.</li>
55
<li>В ответ пользователь получит токен. Он должен быть сохранен. Это идентификатор мини-приложения для Телеграма.</li>
56
</ol><p>Теперь разработчик должен подключить Aiogram через pip install aiorgram в Питоне. Далее - запрограммировать бот на Python. Лучше всего писать код в IDE, а не в терминале. Ниже используется редактор Visual Studio Code.</p>
56
</ol><p>Теперь разработчик должен подключить Aiogram через pip install aiorgram в Питоне. Далее - запрограммировать бот на Python. Лучше всего писать код в IDE, а не в терминале. Ниже используется редактор Visual Studio Code.</p>
57
<p>После открытия IDE требуется создать документ main.py. Для рассматриваемого чат-бота достаточно соответствующего компонента. Из Aiogram необходимо импортировать некоторые классы и модули:</p>
57
<p>После открытия IDE требуется создать документ main.py. Для рассматриваемого чат-бота достаточно соответствующего компонента. Из Aiogram необходимо импортировать некоторые классы и модули:</p>
58
<p>Здесь:</p>
58
<p>Здесь:</p>
59
<ol><li>Bot - помогает определить, какие команды от пользователя должны приниматься, а также как на них реагировать.</li>
59
<ol><li>Bot - помогает определить, какие команды от пользователя должны приниматься, а также как на них реагировать.</li>
60
<li>Dispatcher - проверяет обновления.</li>
60
<li>Dispatcher - проверяет обновления.</li>
61
<li>Executor - осуществляет запуск бота, а также выполняет функции, которые должны обрабатываться в процессе работы скрипта.</li>
61
<li>Executor - осуществляет запуск бота, а также выполняет функции, которые должны обрабатываться в процессе работы скрипта.</li>
62
</ol><p>При помощи types можно будет использовать базовые классы для того, чтобы вводить аннотации. Они необходимы для упрощения восприятия сообщений и представляют собой своеобразные подсказки. Пример далее будет использовать types Message. С его помощью удается обрабатывать текст, который приходит от пользователя.</p>
62
</ol><p>При помощи types можно будет использовать базовые классы для того, чтобы вводить аннотации. Они необходимы для упрощения восприятия сообщений и представляют собой своеобразные подсказки. Пример далее будет использовать types Message. С его помощью удается обрабатывать текст, который приходит от пользователя.</p>
63
<p>Теперь необходимо импортировать токен для взаимодействия с API Telegram:</p>
63
<p>Теперь необходимо импортировать токен для взаимодействия с API Telegram:</p>
64
<p>Далее предстоит организовать инициализацию объектов Dispatcher и bot. Второму элементу передается токен. Если не инициализировать указанные компоненты, исходный код работать не будет:</p>
64
<p>Далее предстоит организовать инициализацию объектов Dispatcher и bot. Второму элементу передается токен. Если не инициализировать указанные компоненты, исходный код работать не будет:</p>
65
<p>Можно настроить приветственное окно для нового пользователя. Оно появляется при вводе команды start в чат-боте на Python Telegram. Необходимо написать message handler и задать ему функцию ответа:</p>
65
<p>Можно настроить приветственное окно для нового пользователя. Оно появляется при вводе команды start в чат-боте на Python Telegram. Необходимо написать message handler и задать ему функцию ответа:</p>
66
<p>Теперь, после того как пользователь нажмет на кнопку "Начать" или введет команду start, на экране появится приветственное сообщение (hello message).</p>
66
<p>Теперь, после того как пользователь нажмет на кнопку "Начать" или введет команду start, на экране появится приветственное сообщение (hello message).</p>
67
<p>Здесь:</p>
67
<p>Здесь:</p>
68
<ol><li>Message handler - декоратор. Он будет реагировать на входящие сообщения. Носит в себе функцию ответа.</li>
68
<ol><li>Message handler - декоратор. Он будет реагировать на входящие сообщения. Носит в себе функцию ответа.</li>
69
<li>Commands =[start] - команда, связанная с декоратором. Будет запускать функцию, которую в нее вложили.</li>
69
<li>Commands =[start] - команда, связанная с декоратором. Будет запускать функцию, которую в нее вложили.</li>
70
<li>Async def send welcome - создает функцию асинхронного типа. Она принимает сообщения от пользователя message, которые определяются через тип Message. Сама функция может быть названа как угодно. Send_welcome выбрано для того, чтобы было удобнее ориентироваться в коде.</li>
70
<li>Async def send welcome - создает функцию асинхронного типа. Она принимает сообщения от пользователя message, которые определяются через тип Message. Сама функция может быть названа как угодно. Send_welcome выбрано для того, чтобы было удобнее ориентироваться в коде.</li>
71
<li>Await message.reply - отвечает за определение ответа пользователя. Await используется из-за асинхронности работы Aiogram.</li>
71
<li>Await message.reply - отвечает за определение ответа пользователя. Await используется из-за асинхронности работы Aiogram.</li>
72
</ol><p>Теперь нужно создать событие. Оно будет отвечать за обработку введенного пользователем сообщения:</p>
72
</ol><p>Теперь нужно создать событие. Оно будет отвечать за обработку введенного пользователем сообщения:</p>
73
<p>Из-за того, что мини-приложение должно реагировать на любое текстовое message со стороны пользователя, скобки в dp message handler остаются пустыми. Параметр message не отличается от использованного ранее. </p>
73
<p>Из-за того, что мини-приложение должно реагировать на любое текстовое message со стороны пользователя, скобки в dp message handler остаются пустыми. Параметр message не отличается от использованного ранее. </p>
74
<p>Метод message используется для того, чтобы указать - система вернет клиенту исходный текст, который ранее был принят message.</p>
74
<p>Метод message используется для того, чтобы указать - система вернет клиенту исходный текст, который ранее был принят message.</p>
75
<p>Последний этап - настройка получения сообщений от Телеграмм-сервера. Для этого может использоваться поллинг. Он функционирует легко - метод start_polling опрашивает сервер и проверяет обновления. Если они обнаружены, соответствующие новшества будут высланы в Телеграм. Для активации поллинга задаются две строки:</p>
75
<p>Последний этап - настройка получения сообщений от Телеграмм-сервера. Для этого может использоваться поллинг. Он функционирует легко - метод start_polling опрашивает сервер и проверяет обновления. Если они обнаружены, соответствующие новшества будут высланы в Телеграм. Для активации поллинга задаются две строки:</p>
76
<p>Теперь можно сохранить код, перейти в терминале в папку telegram_bot (командой python3 main.py), а затем отыскать bot через мессенджер. После этого - запустить его, нажав на кнопку "Начать". В ответ на это или сообщение (message) start придет приветственное сообщение.</p>
76
<p>Теперь можно сохранить код, перейти в терминале в папку telegram_bot (командой python3 main.py), а затем отыскать bot через мессенджер. После этого - запустить его, нажав на кнопку "Начать". В ответ на это или сообщение (message) start придет приветственное сообщение.</p>
77
<p>Если написать что-либо в мессенджере и отправить - скрипт продублирует соответствующее message.</p>
77
<p>Если написать что-либо в мессенджере и отправить - скрипт продублирует соответствующее message.</p>
78
<h3>Классический эхо-бот</h3>
78
<h3>Классический эхо-бот</h3>
79
<p>А вот - еще один вариант того, как можно написать бота для Telegram на Python. Для этого используется библиотека telebot:</p>
79
<p>А вот - еще один вариант того, как можно написать бота для Telegram на Python. Для этого используется библиотека telebot:</p>
80
<p>Работает скрипт точно также, как и предыдущий - копирует message от пользователя и дублирует его.</p>
80
<p>Работает скрипт точно также, как и предыдущий - копирует message от пользователя и дублирует его.</p>
81
<h3>Статьи из Wikipedia</h3>
81
<h3>Статьи из Wikipedia</h3>
82
<p>Небольшой справочник в Телеграмме. По введенному слову система будет давать статью, обнаруженную на Википедии:</p>
82
<p>Небольшой справочник в Телеграмме. По введенному слову система будет давать статью, обнаруженную на Википедии:</p>
83
<p>Здесь на помощь приходит модуль Wikipedia. Он подключается в самом начале разработки кода.</p>
83
<p>Здесь на помощь приходит модуль Wikipedia. Он подключается в самом начале разработки кода.</p>
84
<h3>Две кнопки</h3>
84
<h3>Две кнопки</h3>
85
<p>Еще один распространенный вариант. Он предусматривает наличие виртуальных кнопок в скрипте. Отдельные message и команды для выполнения тех или иных операций вводить не придется.</p>
85
<p>Еще один распространенный вариант. Он предусматривает наличие виртуальных кнопок в скрипте. Отдельные message и команды для выполнения тех или иных операций вводить не придется.</p>
86
<p>Здесь представлены два документа: facts.txt и thinks.txt. Они включают в себя интересные факты и поговорки. Каждая строка в предложенных документах - это отдельное сообщение (message).</p>
86
<p>Здесь представлены два документа: facts.txt и thinks.txt. Они включают в себя интересные факты и поговорки. Каждая строка в предложенных документах - это отдельное сообщение (message).</p>
87
<p>Скрипт будет выдавать текст из предложенных документов в зависимости от того, на какую кнопку нажмет клиент.</p>
87
<p>Скрипт будет выдавать текст из предложенных документов в зависимости от того, на какую кнопку нажмет клиент.</p>
88
<p>Интересует<a>Python</a>? Добро пожаловать на курс в Otus!</p>
88
<p>Интересует<a>Python</a>? Добро пожаловать на курс в Otus!</p>
89
89