Найти тему
AlbertO

Создаём чат-бота в Telegram на Python

Оглавление

Для создания бота будем использовать библиотеку aiogram.

Компании используют ботов для решения разных задач: рассылают новости, принимают платежи. Повседневные пользователи тоже используют чат-ботов для своих нужд.

Шаг 1

Установка Python

Устанавливаем Python. В интернете достаточно много инструкций по установке Python.

Шаг 2

Подключение aiogram

Для установки aiogram мы будем пользоваться pip.

pip - система управления пакетами, которая используется для установки и управления программными пакетами, написанными на Python.

  1. Нажмите клавиши Win+R и в появившемся окне введите cmd после чего нажмите Enter.
  2. Введите в терминал: pip install aiogram.
  3. Дождитесь загрузки.
  4. Библиотека aiogram установлена на ваш компьютер. 👍

Шаг 3

Пишем код

Писать код мы будем в IDE. Я пользуюсь VS code. Вы можете выбрать любой понравившийся.

Создаём файл bot.py.

Импортируем из библиотеки aiogram нужные нам 3 класса и 1 модуль

from aiogram import Bot, Dispatcher, executor, types

Переходим по ссылке https://t.me/botfather и получаем токен.

TOKEN = 'ВАШ ТОКЕН'

Теперь необходимо инициализировать объекты bot и Dispatcher, передав первому наш токен. Если их не инициализировать, то код не будет работать.

bot = Bot(token=TOKEN)
dp = Dispatcher(bot)

Теперь создадим событие, которое будет обрабатывать введённое пользователем сообщение:

@dp.message_handler()
async def echo(message: types.Message):
await message.answer(message.text)

Т.к. бот должен реагировать на любое текстовое сообщение, то скобки в @dp.message_handler оставляем пустыми. Для ответа мы используем метод message, указывая, что возвращаем исходный текст, принятый в message.

Последний шаг

Последний шаг - настроить получение сообщений от сервера в Telegram.

if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)

Получившийся код

from aiogram import Bot, Dispatcher, executor, types

TOKEN = 'ВАШ ТОКЕН'
bot = Bot(token=TOKEN)
dp = Dispatcher(bot)


@dp.message_handler()

async def echo(message: types.Message):

await message.answer(message.text)

if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)