0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#Руководства</a></p>
1
<p><a>#Руководства</a></p>
2
<ul><li>6 июн 2023</li>
2
<ul><li>6 июн 2023</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Большой гайд по работе с Aiogram на примере эхо‑бота - чат‑бота, который повторяет за пользователем его фразы. Весь код - внутри статьи.</p>
4
</ul><p>Большой гайд по работе с Aiogram на примере эхо‑бота - чат‑бота, который повторяет за пользователем его фразы. Весь код - внутри статьи.</p>
5
<p>Иллюстрация: Polina Vari для Skillbox Media</p>
5
<p>Иллюстрация: Polina Vari для Skillbox Media</p>
6
<p>Изучает Python, его библиотеки и занимается анализом данных. Любит путешествовать в горах.</p>
6
<p>Изучает Python, его библиотеки и занимается анализом данных. Любит путешествовать в горах.</p>
7
<p>Компании используют чат-ботов в Telegram для разных задач: рассылают новости о текущих акциях, принимают платежи или даже организуют службы технической поддержки. Обычные пользователи тоже применяют их для своих бытовых нужд - ведут учёт личных финансов или оформляют посты в социальных сетях.</p>
7
<p>Компании используют чат-ботов в Telegram для разных задач: рассылают новости о текущих акциях, принимают платежи или даже организуют службы технической поддержки. Обычные пользователи тоже применяют их для своих бытовых нужд - ведут учёт личных финансов или оформляют посты в социальных сетях.</p>
8
<p>Благодаря этой статье вы научитесь с нуля создавать чат-ботов с помощью Python и библиотеки Aiogram. Мы напишем эхо-бота, который отвечает на сообщения пользователя точно такими же сообщениями. Это первая часть урока по Aiogram - во второй части мы добавим боту кнопки и новые фичи.</p>
8
<p>Благодаря этой статье вы научитесь с нуля создавать чат-ботов с помощью Python и библиотеки Aiogram. Мы напишем эхо-бота, который отвечает на сообщения пользователя точно такими же сообщениями. Это первая часть урока по Aiogram - во второй части мы добавим боту кнопки и новые фичи.</p>
9
<p><strong>Содержание</strong></p>
9
<p><strong>Содержание</strong></p>
10
<ul><li><a>Библиотеки для создания бота</a></li>
10
<ul><li><a>Библиотеки для создания бота</a></li>
11
<li><a>Краткое описание Aiogram</a></li>
11
<li><a>Краткое описание Aiogram</a></li>
12
<li><a>Создаём эхо-бота</a></li>
12
<li><a>Создаём эхо-бота</a></li>
13
<li><a>Шаг 1. Устанавливаем Python</a></li>
13
<li><a>Шаг 1. Устанавливаем Python</a></li>
14
<li><a>Шаг 2. Создаём виртуальное окружение</a></li>
14
<li><a>Шаг 2. Создаём виртуальное окружение</a></li>
15
<li><a>Шаг 3. Создаём бота</a></li>
15
<li><a>Шаг 3. Создаём бота</a></li>
16
<li><a>Шаг 4. Подключаем Aiogram</a></li>
16
<li><a>Шаг 4. Подключаем Aiogram</a></li>
17
<li><a>Шаг 5. Пишем код для эхо-бота</a></li>
17
<li><a>Шаг 5. Пишем код для эхо-бота</a></li>
18
<li><a>Шаг 6. Запускаем бота и проверяем работу</a></li>
18
<li><a>Шаг 6. Запускаем бота и проверяем работу</a></li>
19
<li><a>Что дальше?</a></li>
19
<li><a>Что дальше?</a></li>
20
</ul><p>Для создания телеграм-ботов на Python существует несколько десятков библиотек. Они различаются популярностью, размером комьюнити и функциональностью. Рассмотрим самые популярные.</p>
20
</ul><p>Для создания телеграм-ботов на Python существует несколько десятков библиотек. Они различаются популярностью, размером комьюнити и функциональностью. Рассмотрим самые популярные.</p>
21
<p><strong>Aiogram.</strong>Современная библиотека, набирающая популярность: многие чат-боты написаны на ней. В этой и последующих статьях цикла мы будем работать именно с Aiogram. Библиотека реализует асинхронное выполнение кода, что позволяет не останавливать работу бота в ожидании ответа пользователя. Кроме того, у Aiogram есть<a>подробная документация</a>и большое русскоязычное комьюнити.</p>
21
<p><strong>Aiogram.</strong>Современная библиотека, набирающая популярность: многие чат-боты написаны на ней. В этой и последующих статьях цикла мы будем работать именно с Aiogram. Библиотека реализует асинхронное выполнение кода, что позволяет не останавливать работу бота в ожидании ответа пользователя. Кроме того, у Aiogram есть<a>подробная документация</a>и большое русскоязычное комьюнити.</p>
22
<p><strong>Python-telegram-bot.</strong>Одна из первых библиотек для создания ботов. Отличается от Aiogram синхронным подходом к работе, то есть при ожидании ответа от пользователя выполнение кода останавливается.</p>
22
<p><strong>Python-telegram-bot.</strong>Одна из первых библиотек для создания ботов. Отличается от Aiogram синхронным подходом к работе, то есть при ожидании ответа от пользователя выполнение кода останавливается.</p>
23
<p><strong>TeleBot.</strong>Библиотека для создания простых ботов, позволяющая работать с асинхронным и синхронным подходом на выбор. Подходит для небольших проектов. Подробнее можно узнать<a>в документации</a>.</p>
23
<p><strong>TeleBot.</strong>Библиотека для создания простых ботов, позволяющая работать с асинхронным и синхронным подходом на выбор. Подходит для небольших проектов. Подробнее можно узнать<a>в документации</a>.</p>
24
<p>Перед тем как приступить к написанию нашего бота, остановимся подробнее на одной технической особенности Aiogram.</p>
24
<p>Перед тем как приступить к написанию нашего бота, остановимся подробнее на одной технической особенности Aiogram.</p>
25
<p>Как уже было сказано ранее, одно из главных достоинств библиотеки - полная асинхронность. Она использует синтаксис<strong>async/await</strong>, который позволяет программе выполнять несколько задач одновременно и эффективно управлять потоком выполнения.</p>
25
<p>Как уже было сказано ранее, одно из главных достоинств библиотеки - полная асинхронность. Она использует синтаксис<strong>async/await</strong>, который позволяет программе выполнять несколько задач одновременно и эффективно управлять потоком выполнения.</p>
26
<p>Вот простой пример функции, использующей механизм async/await:</p>
26
<p>Вот простой пример функции, использующей механизм async/await:</p>
27
# Хендлер для команды /start @dp.message(Command("start")) async def start(message: types.Message): await message.answer("Привет, пользователь!")<p>Функция, которая обрабатывает сообщение пользователя в Telegram, называется хендлером, то есть обработчиком. У каждой команды или группы команд свой обработчик.</p>
27
# Хендлер для команды /start @dp.message(Command("start")) async def start(message: types.Message): await message.answer("Привет, пользователь!")<p>Функция, которая обрабатывает сообщение пользователя в Telegram, называется хендлером, то есть обработчиком. У каждой команды или группы команд свой обработчик.</p>
28
<p>В хендлере мы прописываем, что бот должен сделать в ответ на сообщение. А для того, чтобы для каждой команды вызывался нужный обработчик, функция оборачивается в <a>декоратор</a>, которому передаётся имя команды без символа /.</p>
28
<p>В хендлере мы прописываем, что бот должен сделать в ответ на сообщение. А для того, чтобы для каждой команды вызывался нужный обработчик, функция оборачивается в <a>декоратор</a>, которому передаётся имя команды без символа /.</p>
29
<p>Служебное слово async указывает интерпретатору, что функция будет работать в асинхронном режиме. Это означает, что интерпретатору не нужно ждать, пока выполняется код функции, - он может выполнять следующие инструкции, пока start что-нибудь не вернёт. Это "что-нибудь" следует за служебным словом await ("ожидать"), а не return, как в обычном коде.</p>
29
<p>Служебное слово async указывает интерпретатору, что функция будет работать в асинхронном режиме. Это означает, что интерпретатору не нужно ждать, пока выполняется код функции, - он может выполнять следующие инструкции, пока start что-нибудь не вернёт. Это "что-нибудь" следует за служебным словом await ("ожидать"), а не return, как в обычном коде.</p>
30
<p>Другой плюс Aiogram - в большом наборе инструментов и хуков, которые можно использовать для добавления дополнительных функций и настроек бота. Библиотека обеспечивает полный доступ ко всем возможностям Telegram API, включая отправку и получение сообщений, управление клавиатурой, обработку медиафайлов (фотографий, видео, документов) и многое другое.</p>
30
<p>Другой плюс Aiogram - в большом наборе инструментов и хуков, которые можно использовать для добавления дополнительных функций и настроек бота. Библиотека обеспечивает полный доступ ко всем возможностям Telegram API, включая отправку и получение сообщений, управление клавиатурой, обработку медиафайлов (фотографий, видео, документов) и многое другое.</p>
31
<p>Вот несколько полезных источников, которые помогут разобраться в библиотеке и следить за её обновлениями:</p>
31
<p>Вот несколько полезных источников, которые помогут разобраться в библиотеке и следить за её обновлениями:</p>
32
<ul><li><a>официальная документация</a>,</li>
32
<ul><li><a>официальная документация</a>,</li>
33
<li><a>репозиторий библиотеки на GitHub</a>,</li>
33
<li><a>репозиторий библиотеки на GitHub</a>,</li>
34
<li><a>русскоязычный телеграм-чат, посвящённый Aiogram</a>,</li>
34
<li><a>русскоязычный телеграм-чат, посвящённый Aiogram</a>,</li>
35
<li><a>англоязычный чат, посвящённый Aiogram</a>,</li>
35
<li><a>англоязычный чат, посвящённый Aiogram</a>,</li>
36
<li><a>канал с новостями библиотеки</a>,</li>
36
<li><a>канал с новостями библиотеки</a>,</li>
37
<li><a>тестовый бот на основе Aiogram</a>.</li>
37
<li><a>тестовый бот на основе Aiogram</a>.</li>
38
</ul><p>Переходим к созданию телеграм-бота. Потренируемся на простом примере - создадим эхо-бота, который отвечает на сообщения пользователя его же словами.</p>
38
</ul><p>Переходим к созданию телеграм-бота. Потренируемся на простом примере - создадим эхо-бота, который отвечает на сообщения пользователя его же словами.</p>
39
<p>Для этого нам необходимо:</p>
39
<p>Для этого нам необходимо:</p>
40
<ul><li>установить Python и настроить виртуальное окружение;</li>
40
<ul><li>установить Python и настроить виртуальное окружение;</li>
41
<li>зарегистрировать бота в специальном телеграм-канале @BotFather;</li>
41
<li>зарегистрировать бота в специальном телеграм-канале @BotFather;</li>
42
<li>установить библиотеку Aiogram;</li>
42
<li>установить библиотеку Aiogram;</li>
43
<li>написать код эхо-бота, связав его по API с Telegram.</li>
43
<li>написать код эхо-бота, связав его по API с Telegram.</li>
44
</ul><p><strong>На macOS или Linux.</strong>Python установлен в эти операционные системы изначально. Чтобы проверить его наличие, откройте терминал и введите команду:</p>
44
</ul><p><strong>На macOS или Linux.</strong>Python установлен в эти операционные системы изначально. Чтобы проверить его наличие, откройте терминал и введите команду:</p>
45
python --version<p>Если Python установлен, то терминал покажет его версию:</p>
45
python --version<p>Если Python установлен, то терминал покажет его версию:</p>
46
<em>Скриншот: Aiogram / Skillbox Media</em><p><strong>На Windows</strong>требуется установка Python. Сделать это проще всего<a>по нашей инструкции</a>.</p>
46
<em>Скриншот: Aiogram / Skillbox Media</em><p><strong>На Windows</strong>требуется установка Python. Сделать это проще всего<a>по нашей инструкции</a>.</p>
47
<p>После установки и проверки Python требуется установить виртуальное окружение с помощью virtualenv. Это специальный инструмент, который позволяет изолировать друг от друга проекты в разработке, независимо устанавливая для них библиотеки и пакеты. Удобно, когда вы работаете над разными приложениями одновременно.</p>
47
<p>После установки и проверки Python требуется установить виртуальное окружение с помощью virtualenv. Это специальный инструмент, который позволяет изолировать друг от друга проекты в разработке, независимо устанавливая для них библиотеки и пакеты. Удобно, когда вы работаете над разными приложениями одновременно.</p>
48
<p>virtualenv устанавливается через терминал:</p>
48
<p>virtualenv устанавливается через терминал:</p>
49
sudo pip3 install virtualenv<p>После этого необходимо создать директорию для проекта, внутри которой будет работать виртуальное окружение:</p>
49
sudo pip3 install virtualenv<p>После этого необходимо создать директорию для проекта, внутри которой будет работать виртуальное окружение:</p>
50
mkdir telegram_bot cd telegram_bot<p>Команда mkdir создаст папку telegram_bot, а команда cd переведёт нас в неё. Теперь в этой директории будут храниться файлы проекта, связанные с нашим ботом.</p>
50
mkdir telegram_bot cd telegram_bot<p>Команда mkdir создаст папку telegram_bot, а команда cd переведёт нас в неё. Теперь в этой директории будут храниться файлы проекта, связанные с нашим ботом.</p>
51
<p>Развернём виртуальное окружение внутри папки telegram_bot:</p>
51
<p>Развернём виртуальное окружение внутри папки telegram_bot:</p>
52
virtualenv venv -p python3<p>Теперь его активируем. Если этого не сделать, то оно не будет работать.</p>
52
virtualenv venv -p python3<p>Теперь его активируем. Если этого не сделать, то оно не будет работать.</p>
53
source venv/bin/activate<p>Виртуальное окружение запущено, и мы готовы перейти к следующему шагу.</p>
53
source venv/bin/activate<p>Виртуальное окружение запущено, и мы готовы перейти к следующему шагу.</p>
54
<p>Для создания бота необходимо воспользоваться Telegram и ботом @BotFather. Откройте мессенджер и введите название бота в поисковой строке:</p>
54
<p>Для создания бота необходимо воспользоваться Telegram и ботом @BotFather. Откройте мессенджер и введите название бота в поисковой строке:</p>
55
<em>Скриншот: Aiogram / Skillbox Media</em><p>Открываем его, жмём кнопку "Запустить" и вводим команду /newbot:</p>
55
<em>Скриншот: Aiogram / Skillbox Media</em><p>Открываем его, жмём кнопку "Запустить" и вводим команду /newbot:</p>
56
<em>Скриншот: Aiogram / Skillbox Media</em><p>Теперь напишем название и юзернейм для нашего бота. Назовём его echo_skillbox_bot (теперь это имя занято, так что вам надо будет придумать своё). В ответ придёт наш токен, который мы будем использовать для подключения к API Telegram.</p>
56
<em>Скриншот: Aiogram / Skillbox Media</em><p>Теперь напишем название и юзернейм для нашего бота. Назовём его echo_skillbox_bot (теперь это имя занято, так что вам надо будет придумать своё). В ответ придёт наш токен, который мы будем использовать для подключения к API Telegram.</p>
57
<em>Скриншот: Aiogram / Skillbox Media</em><p>Этот токен мы сохраняем - он потребуется нам в будущем.</p>
57
<em>Скриншот: Aiogram / Skillbox Media</em><p>Этот токен мы сохраняем - он потребуется нам в будущем.</p>
58
<p>Для установки Aiogram воспользуемся менеджером пакетов PIP. Вводим в терминал:</p>
58
<p>Для установки Aiogram воспользуемся менеджером пакетов PIP. Вводим в терминал:</p>
59
pip install aiogram<p><strong>Важно!</strong>Библиотека устанавливается в созданное ранее виртуальное окружение, связанное с папкой telegram_bot. Если вы решите создать нового бота в другой директории на компьютере, то установку будет необходимо провести заново, иначе Aiogram не будет работать.</p>
59
pip install aiogram<p><strong>Важно!</strong>Библиотека устанавливается в созданное ранее виртуальное окружение, связанное с папкой telegram_bot. Если вы решите создать нового бота в другой директории на компьютере, то установку будет необходимо провести заново, иначе Aiogram не будет работать.</p>
60
<p>Писать код на Python лучше всего в IDE, а не в окне терминала. В проекте ниже мы будем использовать бесплатный редактор Visual Studio Code, но вы можете воспользоваться любым удобным для вас инструментом.</p>
60
<p>Писать код на Python лучше всего в IDE, а не в окне терминала. В проекте ниже мы будем использовать бесплатный редактор Visual Studio Code, но вы можете воспользоваться любым удобным для вас инструментом.</p>
61
<p>Откроем IDE и создадим файл main.py. Для этого проекта нам потребуется только он. Импортируем из Aiogram нужные классы и модуль:</p>
61
<p>Откроем IDE и создадим файл main.py. Для этого проекта нам потребуется только он. Импортируем из Aiogram нужные классы и модуль:</p>
62
from aiogram import Bot, Dispatcher, executor, types<p>Разберёмся, что каждый из них делает. Начнём с классов:</p>
62
from aiogram import Bot, Dispatcher, executor, types<p>Разберёмся, что каждый из них делает. Начнём с классов:</p>
63
<ul><li>Bot определяет, на какие команды от пользователя и каким способом отвечать.</li>
63
<ul><li>Bot определяет, на какие команды от пользователя и каким способом отвечать.</li>
64
<li>Dispatcher позволяет отслеживать обновления.</li>
64
<li>Dispatcher позволяет отслеживать обновления.</li>
65
<li>Executor запускает бота и выполняет функции, которые следует выполнить.</li>
65
<li>Executor запускает бота и выполняет функции, которые следует выполнить.</li>
66
</ul><p>Модуль types позволит нам использовать базовые классы для аннотирования, то есть восприятия сообщений. Например, мы будем использовать types.Message, позволяющий работать с приёмом текстовых сообщений пользователя. Подробно об этом можно<a>прочесть в документации</a>.</p>
66
</ul><p>Модуль types позволит нам использовать базовые классы для аннотирования, то есть восприятия сообщений. Например, мы будем использовать types.Message, позволяющий работать с приёмом текстовых сообщений пользователя. Подробно об этом можно<a>прочесть в документации</a>.</p>
67
<p>Импортируем наш токен, который поможет коммуницировать с API Telegram:</p>
67
<p>Импортируем наш токен, который поможет коммуницировать с API Telegram:</p>
68
API_TOKEN = '5602787567:AAGYv7NrSjwyW7qPs_yvu70C060zrcfZDbQ' #В одинарных кавычках размещаем токен, полученный от @BotFather.<p>Теперь необходимо инициализировать объекты bot и Dispatcher, передав первому наш токен. Если их не инициализировать, то код не будет работать.</p>
68
API_TOKEN = '5602787567:AAGYv7NrSjwyW7qPs_yvu70C060zrcfZDbQ' #В одинарных кавычках размещаем токен, полученный от @BotFather.<p>Теперь необходимо инициализировать объекты bot и Dispatcher, передав первому наш токен. Если их не инициализировать, то код не будет работать.</p>
69
bot = Bot(token=API_TOKEN) dp = Dispatcher(bot)<p>Настроим приветственное окно для нового пользователя, которое будет появляться при нажатии команды /start. Для этого создаём message_handler и прописываем функцию ответа:</p>
69
bot = Bot(token=API_TOKEN) dp = Dispatcher(bot)<p>Настроим приветственное окно для нового пользователя, которое будет появляться при нажатии команды /start. Для этого создаём message_handler и прописываем функцию ответа:</p>
70
@dp.message_handler(commands=['start']) #Явно указываем в декораторе, на какую команду реагируем. async def send_welcome(message: types.Message): await message.reply("Привет!\nЯ Эхо-бот от Skillbox!\nОтправь мне любое сообщение, а я тебе обязательно отвечу.") #Так как код работает асинхронно, то обязательно пишем await.<p>Теперь при нажатии на кнопку Начать или при вводе команды /start пользователь будет получать от бота приветственное сообщение.</p>
70
@dp.message_handler(commands=['start']) #Явно указываем в декораторе, на какую команду реагируем. async def send_welcome(message: types.Message): await message.reply("Привет!\nЯ Эхо-бот от Skillbox!\nОтправь мне любое сообщение, а я тебе обязательно отвечу.") #Так как код работает асинхронно, то обязательно пишем await.<p>Теперь при нажатии на кнопку Начать или при вводе команды /start пользователь будет получать от бота приветственное сообщение.</p>
71
<p>Разберёмся в коде:</p>
71
<p>Разберёмся в коде:</p>
72
<ul><li>message_handler - это декоратор, который реагирует на входящие сообщения и содержит в себе функцию ответа. Декоратор - это "обёртка" вокруг функций, позволяющая влиять на их работу без изменения кода самих функций. В нашем случае мы управляем функцией, считая команды пользователя.</li>
72
<ul><li>message_handler - это декоратор, который реагирует на входящие сообщения и содержит в себе функцию ответа. Декоратор - это "обёртка" вокруг функций, позволяющая влиять на их работу без изменения кода самих функций. В нашем случае мы управляем функцией, считая команды пользователя.</li>
73
<li>commands=['start'] - это команда, которая связана с декоратором и запускает вложенную в него функцию.</li>
73
<li>commands=['start'] - это команда, которая связана с декоратором и запускает вложенную в него функцию.</li>
74
<li>async def send_welcome - создаёт асинхронную функцию, которая принимает в себя сообщение пользователя message, определяемое через тип Message. Саму функцию можно назвать любым образом. Мы выбрали send_welcome, чтобы название было понятным и осмысленным.</li>
74
<li>async def send_welcome - создаёт асинхронную функцию, которая принимает в себя сообщение пользователя message, определяемое через тип Message. Саму функцию можно назвать любым образом. Мы выбрали send_welcome, чтобы название было понятным и осмысленным.</li>
75
<li>await message.reply - определяет ответ пользователя, используя await из-за асинхронности работы библиотеки.</li>
75
<li>await message.reply - определяет ответ пользователя, используя await из-за асинхронности работы библиотеки.</li>
76
</ul><p>Теперь создадим событие, которое будет обрабатывать введённое пользователем сообщение:</p>
76
</ul><p>Теперь создадим событие, которое будет обрабатывать введённое пользователем сообщение:</p>
77
@dp.message_handler() #Создаём новое событие, которое запускается в ответ на любой текст, введённый пользователем. async def echo(message: types.Message): #Создаём функцию с простой задачей - отправить обратно тот же текст, что ввёл пользователь. await message.answer(message.text)<p>Так как бот должен реагировать на любое текстовое сообщение от пользователя, то скобки в <em>@dp.message_handler</em>мы оставляем пустыми. Параметр message не отличается от использованного в предыдущих шагах.</p>
77
@dp.message_handler() #Создаём новое событие, которое запускается в ответ на любой текст, введённый пользователем. async def echo(message: types.Message): #Создаём функцию с простой задачей - отправить обратно тот же текст, что ввёл пользователь. await message.answer(message.text)<p>Так как бот должен реагировать на любое текстовое сообщение от пользователя, то скобки в <em>@dp.message_handler</em>мы оставляем пустыми. Параметр message не отличается от использованного в предыдущих шагах.</p>
78
<p>Для ответа мы также используем метод message, указывая, что возвращаем исходный текст, принятый в message.</p>
78
<p>Для ответа мы также используем метод message, указывая, что возвращаем исходный текст, принятый в message.</p>
79
<p>Остаётся последний этап - настроить получение сообщений от сервера в Telegram. Если этого не сделать, то мы не получим ответы бота. Реализовать получение новых сообщений можно с помощью поллинга. Он работает очень просто - метод start_polling опрашивает сервер, проверяя на нём обновления. Если они есть, то они приходят в Telegram. Для включения поллинга необходимо добавить две строчки:</p>
79
<p>Остаётся последний этап - настроить получение сообщений от сервера в Telegram. Если этого не сделать, то мы не получим ответы бота. Реализовать получение новых сообщений можно с помощью поллинга. Он работает очень просто - метод start_polling опрашивает сервер, проверяя на нём обновления. Если они есть, то они приходят в Telegram. Для включения поллинга необходимо добавить две строчки:</p>
80
if __name__ == '__main__': executor.start_polling(dp, skip_updates=True)<p>Всё, теперь код нашего бота полностью готов:</p>
80
if __name__ == '__main__': executor.start_polling(dp, skip_updates=True)<p>Всё, теперь код нашего бота полностью готов:</p>
81
from aiogram import Bot, Dispatcher, executor, types API_TOKEN = '5602787567:AAGYv7NrSjwyW7qPs_yvu70C060zrcfZDbQ' bot = Bot(token=API_TOKEN) dp = Dispatcher(bot) @dp.message_handler(commands=['start']) async def send_welcome(message: types.Message): await message.reply("Привет!\nЯ Эхо-бот от Skillbox!\nОтправь мне любое сообщение, а я тебе обязательно отвечу.") @dp.message_handler() async def echo(message: types.Message): await message.answer(message.text) if __name__ == '__main__': executor.start_polling(dp, skip_updates=True)<p>Сохраняем его в нашей папке telegram_bot под именем main.py.</p>
81
from aiogram import Bot, Dispatcher, executor, types API_TOKEN = '5602787567:AAGYv7NrSjwyW7qPs_yvu70C060zrcfZDbQ' bot = Bot(token=API_TOKEN) dp = Dispatcher(bot) @dp.message_handler(commands=['start']) async def send_welcome(message: types.Message): await message.reply("Привет!\nЯ Эхо-бот от Skillbox!\nОтправь мне любое сообщение, а я тебе обязательно отвечу.") @dp.message_handler() async def echo(message: types.Message): await message.answer(message.text) if __name__ == '__main__': executor.start_polling(dp, skip_updates=True)<p>Сохраняем его в нашей папке telegram_bot под именем main.py.</p>
82
<p>Для запуска бота нам необходим терминал. Открываем его и переходим в нашу папку telegram_bot. После этого вводим команду:</p>
82
<p>Для запуска бота нам необходим терминал. Открываем его и переходим в нашу папку telegram_bot. После этого вводим команду:</p>
83
python3 main.py<p>В ответ терминал пришлёт сообщение, что обновления успешно пропущены:</p>
83
python3 main.py<p>В ответ терминал пришлёт сообщение, что обновления успешно пропущены:</p>
84
<em>Скриншот: Aiogram / Skillbox Media</em><p>Находим нашего бота в Telegram по имени @echo_skillbox_bot и запускаем его, нажав на кнопку Начать. В ответ на это или на команду /start нам придёт приветственное сообщение:</p>
84
<em>Скриншот: Aiogram / Skillbox Media</em><p>Находим нашего бота в Telegram по имени @echo_skillbox_bot и запускаем его, нажав на кнопку Начать. В ответ на это или на команду /start нам придёт приветственное сообщение:</p>
85
<em>Скриншот: Aiogram / Skillbox Media</em><p>Попробуем написать что-то:</p>
85
<em>Скриншот: Aiogram / Skillbox Media</em><p>Попробуем написать что-то:</p>
86
<em>Скриншот: Aiogram / Skillbox Media</em><p>Как мы видим - всё работает. Бот возвращает нам наши сообщения.</p>
86
<em>Скриншот: Aiogram / Skillbox Media</em><p>Как мы видим - всё работает. Бот возвращает нам наши сообщения.</p>
87
<p>Расширять функциональность бота, указывая для разных команд пользователя разные ответы. Например, добавить раздел помощи, который будет появляться по команде /help. Или настроить запуск кода на виртуальном сервере, чтобы бот работал независимо от вашего компьютера.</p>
87
<p>Расширять функциональность бота, указывая для разных команд пользователя разные ответы. Например, добавить раздел помощи, который будет появляться по команде /help. Или настроить запуск кода на виртуальном сервере, чтобы бот работал независимо от вашего компьютера.</p>
88
<p>Во <a>второй части статьи</a>мы добавим к нашему боту кнопки и новые возможности. Так что обязательно заходите и читайте :)</p>
88
<p>Во <a>второй части статьи</a>мы добавим к нашему боту кнопки и новые возможности. Так что обязательно заходите и читайте :)</p>
89
<a>Курс: "Создание Telegram-бота и продвижение в мессенджерах" Узнать больше</a>
89
<a>Курс: "Создание Telegram-бота и продвижение в мессенджерах" Узнать больше</a>