Как запустить готового бота в Телеграмме на python

Чат-бот в Telegram на python и aiogram. Создание первого Telegram бота на Python. Част. Выбираем библиотеку и пишем первого бота.

Разбираемся, как написать чат-бота с помощью библиотеки aiogram. Весь код — внутри статьи.

Компании используют чат-ботов в Telegram для разных задач: рассылают новости о новых акциях, принимают платежи или даже организуют службу технической поддержки. Обычные пользователи тоже используют их для своих бытовых нужд — ведут учёт личных финансов или оформляют посты в социальных сетях.

В этой статье мы научимся с нуля создавать чат-ботов с помощью Python: выберем лучшую библиотеку и напишем на ней эхо-бота, который отвечает на сообщения пользователя точно такими же сообщениями. Это первая часть урока по чат-ботам в Telegram — во второй части мы добавим новые фичи.

Библиотеки для создания бота

Для создания Telegram-ботов на Python существует несколько десятков библиотек. Они различаются популярностью, размером комьюнити и функциональностью. Рассмотрим самые популярные.

КАК СДЕЛАТЬ ТЕЛЕГРАМ БОТА СОБЕСЕДНИКА НА PYTHON?

Современная библиотека, набирающая популярность. Работает с асинхронным подходом к выполнению кода. Это позволяет не останавливать работу бота в ожидании ответа пользователя. У aiogram подробная документация и большое русскоязычное комьюнити. В этой и последующих статьях цикла мы будем работать как раз с этой библиотекой.

Одна из первых библиотек для создания ботов. Отличается от aiogram синхронным подходом к работе, то есть при ожидании ответа от пользователя выполнение кода останавливается.

Библиотека для создания простых ботов, позволяющая работать с асинхронным и синхронным подходом на выбор. Подходит для небольших проектов. Подробнее можно узнать в документации .

Переходим к созданию Telegram-бота. Потренируемся на простом примере — создадим эхо-бота, который отвечает на сообщения пользователя его же словами.

Для этого нам необходимо:

Устанавливаем Python и создаём виртуальное окружение

На macOS или Linux. Python установлен в эти операционные системы изначально. Чтобы проверить его наличие, откройте терминал и введите команду:

Если у вас не установлен Python:
Переходите на официальный сайт, скачиваете актуальную версию и устанавливаете её.

Не забудьте поставить галочку add PATH во время установки

После установки и проверки Python требуется установить виртуальное окружение с помощью virtualenv.

Это специальный инструмент, который позволяет изолировать друг от друга проекты в разработке, независимо устанавливая для них библиотеки и пакеты. Удобно, когда вы работаете над разными приложениями одновременно.

virtualenv устанавливается через терминал:

sudo pip3 install virtualenv

После этого необходимо создать директорию для проекта, внутри которой будет работать виртуальное окружение:

Команда mkdir создаст папку cd переведёт нас в неё. Теперь в этой директории будут храниться файлы проекта, связанные с нашим ботом.

КАК ОТКРЫТЬ СВОЙ МАГАЗИН В TELEGRAM | TELEGRAM БОТ НА PYTHON

Еще по теме:  Новые сообщения в Телеграмме не показывает

Развернём виртуальное окружение внутри папки

virtualenv venv -p python3

Теперь его активируем. Если этого не сделать, то оно не будет работать.

Шаг 2
Создаём бота

Открываем его, жмём кнопку «Запустить» и вводим команду /newbot:

Теперь напишем название и юзернейм для нашего бота. Назовём его echo_skillbox_bot (теперь это имя занято, так что вам надо будет придумать своё). В ответ придёт наш токен, который мы будем использовать для подключения к API Telegram.

Этот токен мы сохраняем — он потребуется нам в будущем.

Python-telegram-bot примеры. Самый простой бот

Сперва глянем внашего базового пакета, чтобы понять, с чего начинается простенький бот. Следующий код

# -*- coding: utf-8 -*- from telegram.ext import Updater # пакет называется python-telegram-bot, но Python- from telegram.ext import CommandHandler # модуль почему-то просто telegram ¯_(ツ)_/¯ def start(bot, update): # подробнее об объекте update: https://core.telegram.org/bots/api#update bot.sendMessage(chat_id=update.message.chat_id, text=»Здравствуйте.») updater = Updater(token=’TOKEN’) # тут токен, который выдал вам Ботский Отец! start_handler = CommandHandler(‘start’, start) # этот обработчик реагирует # только на команду /start updater.dispatcher.add_handler(start_handler) # регистрируем в госреестре обработчиков updater.start_polling() # поехали!

создаёт бота, который сухо отвечает «Здравствуйте.» при нажатии на кнопку Start (или ручном вводе команды /start ) и многозначительно молчит при любых последующих действиях с вашей стороны.Соответственно, если мы захотим повесить обработчики любых текстовых сообщений или любых команд, нам нужно будет написать

from telegram.ext import Filters, MessageHandler def handle_text(bot, update): # … def handle_command(bot, update): # … # MessageHandler — более универсальный обработчик, который берёт на вход фильтр text_handler = MessageHandler(Filters.text, self.handle_text) command_handler = MessageHandler(Filters.command, self.handle_command) # регистрируем свеженькие обработчики в диспетчере updater.dispatcher.add_handler(text_handler) # без регистрации будет работать, updater.dispatcher.add_handler(command_handler) # но не больше трёх месяцев (шутка)

(За дальнейшими подробностями с чистой совестью отсылаю к.)Нагруженные этим теоретическим минимумом, мы можем наконец подумать, как нам писать своего нетривиального бота. Для начала давайте вернёмся к постановке задачи. Под диалоговым ботом я подразумеваю бота, который главным образом ведёт обычный текстовый диалог с пользователем — с вопросами, ответами, нелинейным сюжетом, разочаровывающими концовками и всем в таком духе (играли в «»?) Напротив, не попадают в сферу наших текущих интересов боты, разным образом расширяющие функционал Telegram (вроде); соответственно, мы опустим добавление всяких плюшек вроде,,и всего такого прочего.Проблема сложных диалоговых ботов в том, что нетривиальный диалог требует хранения состояния. Работа асинхронных диалогов требует постоянных прерываний на ожидание сообщения от пользователя; состояние нужно сохранять, потом восстанавливать, прыгать к коду, ответственному за обработку очередного сообщения, и так далее; в общем, организация кода становится проблемой довольно угнетающей. Прервать, продолжить… ничего не напоминает? Что ж, посмотрим, как обозначенную проблему можно изящнейше обойти с помощью магии yield .

Чат-боты в Telegram на python. част. Callback-кнопки и редактирование сообщений

Прежде, чем мы перейдем к другим кнопкам, давайте познакомимся с функциями редактирования сообщений, коих тоже три: editMessageText (редактирование текста), editMessageCaption (редактирование подписи к медиа) и editMessageReplyMarkup (редактирование инлайн-клавиатуры). В рамках этого урока рассмотрим только первую функцию, остальные работают аналогично и предлагаются для самостоятельного изучения.
Чтобы отредактировать сообщение, нам надо знать, про какое именно идёт речь. В случае, если оно было отправлено самим ботом, идентификаторами служит связка chat_id + message_id . Но если сообщение было отправлено в инлайн-режиме, то ориентироваться надо по параметру inline_message_id .

Еще по теме:  Как записать самоуничтожающееся видео в Телеграмм

И вот теперь вернемся к нашим баранам кнопкам. На очереди – Callback . Это, на мой взгляд, самая крутая фича нового обновления. Колбэк-кнопки позволяют выполнять произвольные действия по их нажатию. Всё зависит от того, какие параметры каждая кнопка в себе несёт. Соответственно, все нажатия будут приводить к отправке боту объекта CallbackQuery , содержащему поле data , в котором написана некоторая строка, заложенная в кнопку, а также либо объект Message , если сообщение отправлено ботом в обычном режиме, либо поле inline_message_id , если сообщение отправлено в инлайн-режиме.

Приведу пример, после которого все вопросы должны отпасть: пусть, например, если сообщение отправлено ботом в обычном режиме, то нажатие на кнопку заменит текст сообщения на “Пыщь”, если в инлайн – то “Бдыщь”. При этом в обоих случаях значение callback_data будет равно test . Что для этого нужно сделать: во-первых, написать простейший хэндлер для всех входящих сообщений, во-вторых, написать простейший хэндлер для инлайн-сообщений, в-третьих, написать простейший хэндлер для колбэка, который определит, из какого режима пришло сообщение.

Aiogram python. Установка ¶

Для начала давайте создадим каталог для бота, организуем там virtual environment (далее venv) и установим библиотеку aiogram .
Проверим, что установлен Python версии 3.9 (если вы знаете, что установлен 3.9 и выше, можете пропустить этот раздел):

$ python3.9 Python 3.9.9 (main, Jan 11 2022, 16:35:07) on linux Type «help», «copyright», «credits» or «license» for more information. >>> exit() $

Теперь создадим файл requirements.txt , в котором укажем используемую нами версию aiogram. Также нам понадобится библиотека python-dotenv для файлов конфигурации.

О версиях aiogram

В этой главе используется aiogram 3.x , перед началом работы рекомендую заглянуть в канал релизов библиотеки и проверить наличие более новой версии. Подойдёт любая более новая, начинающаяся с цифры 3, поскольку aiogram 2.x более рассматриваться не будет и считается устаревшим.

$ python3.9 -m venv venv $ echo «aiogram==3.0.0b7» > requirements.txt $ echo «python-dotenv==0.21.1» >> requirements.txt $ source venv/bin/activate (venv) $ pip install -r requirements.txt # …здесь куча строк про установку… Successfully installed …тут длинный список… $

Обратите внимание на префикс «venv» в терминале. Он указывает, что мы находимся в виртуальном окружении с именем «venv». Проверим, что внутри venv вызов команды python указывает на всё тот же Python 3.9:

(venv) $ python Python 3.9.9 (main, Jan 11 2022, 16:35:07) on linux Type «help», «copyright», «credits» or «license» for more information. >>> exit() (venv) $ deactivate $

Последней командой deactivate мы вышли из venv, чтобы он нам не мешал.

Если для написания ботов вы используете PyCharm, рекомендую также установить сторонний плагин Pydantic для поддержки автодополнения кода в телеграмных объектах.

Самообучающийся чат-бот python. Что делают Chatbots?

Современные чат-боты не полагаются исключительно на текст, и часто показывают полезные карточки, изображения, ссылки и формы, предоставляя опыт, подобный приложению.

В зависимости от того, как запрограммированы боты, мы можем разделить их на два варианта: они основаны на правилах (немые боты) и самообучаются (умные боты).

  1. Чат-боты на основе правил Это множество ботов отвечают на вопросы, основываясь на некоторых простых правилах, по которым они обучаются.
  2. Самообучающиеся чат-боты : На это разнообразие ботов полагаются Искусственный интеллект (AI) https://lajfhak.ru-land.com/stati/chat-bot-v-telegram-na-python-i-aiogram-sozdanie-pervogo-telegram-bota-na-python-chast» target=»_blank»]lajfhak.ru-land.com[/mask_link]

    Как запустить бота с меню команд в Telegram

    3 простых шага, как запустить чат-бота с командами в Telegram.

    19.6.2023 13:30

    Шаг первый: создайте сценарий бота

    Предположим, что вы уже знаете, какой алгоритм будет у вашего бота. Обычно мы в команде SmartbotPro рекомендуем нашим пользователям сначала нарисовать логику в виде блок-схемы прямо «на бумажке» (конечно, лучше делать это в онлайн-редакторах типа Miro). После этого вам нужно переложить нарисованную логику на блоки Smartbot. Для этого зарегистрируйтесь в сервисе и создайте свой первый сценарий. Ну а если вы еще не придумали логику до конца, то воспользуйтесь нашими готовыми шаблонами для разного бизнеса.

    Немного о конструкторе алгоритма: в нем есть события и действия.

    События – внешние воздействия, которые могут запускать сценарий вашего бота. Например, событием может быть новое сообщение от пользователя, комментарий или даже вызов Webhook

    Действия – шаги, которые бот выполняет в ответ на события. Например, отправить сообщение, сохранить пользователя в список рассылки, отправить контакты в AmoCRM.

    Соединяя действия в цепочку с помощью стрелочек, вы создаете логику бота. Каждая такая цепочка должна начинаться с события.

    Шаг второй: подключите чат-бота

    Создайте бота в Botfather, следуя инструкциям:

    1. Выберите имя для бота
    2. Выберите ссылку. Она должна заканчиваться на «bot».
    3. После этого вы сможете настроить другие атрибуты бота (например, приветственную картинку), выбрав в Botfather своего нового бота.

    После регистрации вы получите токен бота, скопируйте его.

    Нажмите кнопку «каналы», выберите Telegram и вставьте скопированный токен.

    Все, после этого вы уже можете протестировать своего нового бота.

    Шаг третий: добавляем команды

    По сути команды, это глобальные события с сообщениями пользователей. Например /order или /about и тд. Когда пользователь вводит такие команды или выбирает их из меню, бот должен среагировать, независимо от того, в каком месте сценария он сейчас находится.

    В первом шаге мы уже рассматривали события в Smartbot. Теперь нам нужно создать такие же события, только под каждую команду и сделать их глобальными.

    Для примера создадим команду /menu, которая будет вести в начало нашего сценария. Просто добавьте блок «сообщение от пользователя» из раздела событий в левом меню и выберите в условии «равно» тексту «/menu».

    Чуть ниже в «дополнительных настройках» будет галочка «глобальное событие», включите ее. Протяните стрелочку от нового события к блоку с отправкой сообщения:

    Сохраните и опубликуйте бота. Теперь он будет реагировать на команду /menu в любом месте диалога с пользователем. Но как добавить эту команду в левое меню кнопочкой?

    Хорошая новость: очень просто!

    Нажмите на кнопку «каналы» в левом меню сценариев и выберите вашего подключенного телеграм-бота. Откроется окошко с редактированием команд. Просто введите текст своей команды (/menu) в поле ввода. Сервис автоматически сохранит эту команду и добавит в бота.

    Проверьте, теперь в вашем боте появилась команда в меню быстрого доступа!

    Источник: smartbotpro.ru

Рейтинг
( Пока оценок нет )
Загрузка ...