Напишем простой Telegram-бот на Python с использованием aiogram, Docker и AWS, предварительно ознакомившись с нужными инструментами.
Напишем простой диалоговый Telegram-бот на Python, который в дальнейшем можно дополнить различными функциями, и задеплоим его.
Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.
Настройка
- свой токен;
- адрес Telegram API (https://api.telegram.org/bot);
- ссылку на документацию.
Обязательно сохраните токен, так как это ключ для взаимодействия с ботом.
Примечание Хранение токена должно быть локальным: ни в коем случае не выгружайте его в общий доступ, например в GitHub-репозиторий .
Далее начните беседу. Введите в поисковой строке имя бота и нажмите /start . Отправьте любое сообщение: оно станет первым обновлением, которое получит Телеграм бот.
Установка Python
Для написания Telegram-бота на Python, нужно установить сам язык. Если вы пользуетесь Windows, скачать Python можно с официального сайта. Версия важна. Нам подойдет Python не ниже версии 3.7. Если же у вас Linux или macOS, то, скорее всего, у вас стоит Python 3.6. Как обновиться, можете почитать здесь.
Нужен бот? #БЕСПЛАТНЫЕ #РОБУКСЫ #Roblox #игры #рек
Тем, кто только начал изучение этого языка, будет также полезна дорожная карта Python-разработчика.
Установка pip
Это менеджер пакетов. В версиях выше Python 2.7.9 и Python 3.4, а также на macOS/Linux он уже есть. Проверить это можно командой pip —version в терминале. Если же по каким-то причинам он отсутствует, установить его можно при помощи команды:
$ sudo apt-get install python-pip
Установка aiogram
Установить данный фреймворк для Telegram Bot API с помощью pip:
pip install aiogram
Hello, bot!
Давайте напишем простенькую программу приветствия. Для начала следует импортировать библиотеки и создать экземпляры Телеграм бота и диспетчера:
from aiogram import Bot, types from aiogram.dispatcher import Dispatcher from aiogram.utils import executor TOKEN = «ваш токен от бота здесь» bot = Bot(token=TOKEN) dp = Dispatcher(bot)
Теперь напишем обработчик текстовых сообщений, который будет обрабатывать входящие команды /start и /help :
Добавим ещё один обработчик для получения текстовых сообщений. Если бот получит «Привет», он также поздоровается. Все остальные сообщения будут определены, как нераспознанные:
Запускаем Telegram бота, написанного на Python, следующим образом:
if __name__ == ‘__main__’: executor.start_polling(dp)
Примечание Так мы задаём боту непрерывное отслеживание новых сообщений. Если бот упадёт, а сообщения продолжат поступать, они будут накапливаться в течение 24 часов на серверах Telegram, и в случае восстановления бота прилетят ему все сразу.
Ну вот и всё, простенький бот в Телеграмме на языке Python готов.
Docker
Сейчас мало кто не слышал про Docker, но если вдруг не слышали — вот хорошая статья. Для нашего проекта потребуется самый простой Dockerfile:
FROM python:3.8 # set work directory WORKDIR /usr/src/app/ # copy project COPY . /usr/src/app/ # install dependencies RUN pip install —user aiogram # run app CMD [«python», «bot.py»]
Каталог проекта должны при этом содержать следующие файлы:
Для локальных тестов достаточно установить Docker (linux, mac, windows), после чего в папке проекта собрать и запустить контейнер с помощью команд:
docker build -t my_app docker run -d my_app
my_app — это просто название нашего контейнера, вместо которого можно использовать другое имя.
-d — специальный флаг, который запускает контейнер в фоне и позволяет дальше работать в терминале. Это называется detached mode.
Деплой на AWS
Прежде всего нам понадобится аккаунт на Docker Hub. Это аналог GitHub, только не с исходниками кода, а с уже созданными контейнерами. Работа с Docker Hub выглядит достаточно просто:
- Локально или с помощью пайплайнов собрали контейнер.
- Загрузили его на докер хаб.
- В любом удобном месте скачали его. Это может быть локальная машина, VPS сервер или облачный провайдер по типу AWS.
- Запустили.
Пройдёмся по этим шагам. Везде, где указано , надо вставлять свой юзернейм, использованный при регистрации на докерхабе. Если это ваша первая публикация на докерхаб, для начала потребуется залогиниться с помощью docker login.
docker build -t /my_app
Загружаем его на докерхаб:
docker push /my_app
Для проверки успешности загрузки можете запустить контейнер из Docker Hub с помощью команды:
docker run -d /my_app
Далее загрузим наш контейнер в AWS Elastic Beanstalk. Для этого потребуется аккаунт на AWS. Если его нет, необходимо зарегистрироваться. Вас попросят ввести данные карты для верификации, но переживать не стоит, ведь мы воспользуемся бесплатным годовым триалом. Чтобы поиграться, этого более чем достаточно, а вот если вы захотите вывести проект в продакшен, следует перейти на VPS — это даст больше контроля и гибкости.
- Переходим в Elastic Beanstalk, на вкладку Applications, и создаём новое приложение:
- Называем приложение, теги оставляем пустыми:
- Создаём для приложения environment:
- Выбираем Worker environment:
- В качестве платформы выбираем Docker:
- В пункте Application code нужно загрузить JSON-файл с конфигурацией Docker-образа. Сам файл:
Dockerrun.aws.json < «AWSEBDockerrunVersion»: «1», «Image»: < «Name»: «/my_app», «Update»: «true» >, «Ports»: [ < «ContainerPort»: 5000, «HostPort»: 8000 >] >
- Создаём окружение:
- AWS начинает создавать окружение, просто ждём завершения процесса:
- Если всё прошло успешно, вы увидите индикатор успешного запуска приложения:
Проверяем работу нашего Telegram bot:
Заключение
Поздравляем! Теперь вы знаете, как писать роботов для Telegram на Python.
Бота можно дополнять другими функциями, например, добавить отправку файлов, опрос или клавиатуру.
Кстати, в телеграмме есть аж целых два типа клавиатур:
- Классическая RelpyKeyboardMarkup, у которой кнопки располагаются под полем ввода сообщения:
- Более современная InlineKeyboardMarkup, которая привязывается к конкретному сообщению:
Но и это полностью рабочий Телеграм-бот на Python: дополните словарём, и получите полноценную беседу. Также можете опробовать функциональность нашего Telegram-бота.
В «настоящих проектах» не обойтись без базы данных. Тут на помощь приходит docker-compose, который позволяет объединить несколько контейнеров в один сервис. Таким образом, например, можно создать приложение и положить его в контейнер, а базу данных, как отдельный сервис, поместить в другой контейнер, и с помощью docker-compose наладить между ними связь.
Также для более серьёзной разработки лучше использовать выделенный виртуальный сервер (VPS): он даёт гораздо больше гибкости и свободы, чем тот же AWS. А самое главное, он более приближён к «боевой» разработке. Схема работы тут будет даже проще, чем с AWS: вам просто нужно установить Docker, спуллить образ с Docker Hub и запустить его.
Следите за новыми постами по любимым темам
Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.
Источник: tproger.ru
Telegram Bot на Python 3
В данной статье мы напишем telegram bot на python, который сможет отвечать на наши сообщения, взаимодействовать с нами, предлагая варианты ответов в виде кнопок и обрабатывать выбранный нами результат, выполняя команды на сервере. Взаимодействовать с Telegram Bot Api мы будем с помощью библиотеки pyTelegramBotAPI (telebot) написанной на Python.
- Создание бота
- Установка Python и библиотеки pyTelegramBotAPI
- Пишем Telegram Bot на Python
- Использование прокси в telebot
- Ответы бота на сообщения пользователя
- Клавиатура в Telegram Bot API
- InLine клавиатура
- Конечный листинг
Создание бота
Для регистрации нового бота необходимо обратиться к боту BotFather. Для этого в строке поиска наберите BotFather и в показанных результатах найдите интересующего нас бота:
Обратите внимание на его имя, изображение и знак в виде галочки, говорящий о том, что это действительно отец всех ботов.
Выберите его и в диалоговом окне напишите команду /start и бот в ответном сообщение пришлет список всех доступных команд:
Нас интересует создание нового бота, поэтому выбираем команду /newbot. Команду можно как напечатать самостоятельно, так и выбрать мышью в сообщении и она автоматически отправится:
Первым шагом нам предлагают дать имя новому боту, оно может быть произвольным. Мы назовем его PocketAdmin:
Теперь требуется указать идентификатор бота (username), он должен заканчиваться на _bot и быть уникальным в системе. Мы укажем PocketAdminTech_bot:
На этом создание бота завершено. В последнем сообщении нам пришла ссылка на нашего нового бота t.me/PocketAdminTech_bot и токен (закрашен), необходимый для взаимодействия с API.
Обязательно сохраните токен и храните его в тайне!
Установка Python и библиотеки pyTelegramBotAPI
Скачать Python можно с официального сайта (как установить пакет на Centos 8 можно ознакомиться в данной заметке) и мы не будем заострять внимание на данном вопросе.
Чтобы установить пакет pyTelegramBotAPI воспользуемся pip:
pip install pytelegrambotapi
На этом подготовительная работа завершена, приступаем непосредственно к написанию нашего бота.
Пишем Telegram Bot на Python
Так как наш бот создается в ознакомительных целях и не будет содержать много кода, то писать я его буду сразу на сервере с установленной Centos 8 используя обычный редактор nano. Создадим файл bot.py, открыв его nano:
nano bot.py
Для начала импортируем библиотеку pyTelegramBotAPI:
import telebot
Затем зададим переменную token равную нашему токену, который мы получили от BotFather для взаимодействия с Telegram Bot Api:
token = ‘ваш token api’
bot = telebot.TeleBot(token)
Далее задается декоратор. Пока наш бот будет обрабатывать только команду start:
и в ответ писать нам “Привет!”:
def start_message(message): bot.send_message(message.chat.id, ‘Привет!’)
Чтобы бот постоянно ожидал запрос от пользователя в конце пропишем:
bot.polling()
В итоге мы получим код:
python bot.py
Затем откроем нашего бота (можно найти по имени) и напишем ему команду /start:
Поздравлю с первыми словами нашего бота PocketAdmin!
Использование прокси в telebot
При запуске скрипта может появиться ошибка следующего вида:
requests.exceptions.ConnectionError: (‘Connection aborted.’, ConnectionResetError(104, ‘Connection reset by peer’))
Чтобы исправить её, можно попробовать подключиться через прокси:
Если при использовании прокси возникают ошибки, подобные: Not supported proxy scheme socks5 или Missing dependencies for SOCKS support, то необходимо установить модули:
pip install requests[socks] PySocks
Ответы бота на сообщения пользователя
Аналогично хэндлерам для команд, в telegram bot api есть возможность обрабатывать сообщения от пользователя. Для этого используется тип text. Например, мы можем запрограммировать бота отвечать на определенные фразы или слова пользователя:
Думаю тут все понятно. На слово “Привет” бот будет отвечать “Ещё раз привет!”, а на “Пока” – “Пока!”. Весь код нашего telegram bot на python теперь будет выглядеть следующим образом:
Перезапустим скрипт и пообщаемся с ботом:
Таким образом мы можем описывать различные диалоги с ботом.
Клавиатура в Telegram Bot на Python
Апи телеграма позволяет использовать свою клавиатуру, а точнее быстрые кнопки, позволяющие пользователю отправлять текст по их нажатию.
Добавим в обработчик команды /start клавиатуру с кнопками “Привет “и “Пока”:
И запустим измененный скрипт. Как только мы отправим боту команду /start у нас внизу появится наша клавиатура:
Теперь для отправки сообщений достаточно лишь нажать на соответствующую кнопку. Это очень удобно в мобильной версии телеграма.
InLine клавиатура
На мой взгляд, наиболее интересной является InLine клавиатура. Она позволяет вместе с сообщением отправлять пользователю интерактивные кнопки, например с вариантами ответов, а после их нажатия обрабатывать результат.
Давайте добавим простой вопрос от бота на команду /test:
Переменная markup объявляет новую переменную с inline keyboard, а markup.add – создает отдельную кнопку. Основные параметры при создании кнопки – text и callback_data: первый отвечает за текст на кнопке, второй – данные, которые будут переданы боту при выборе пользователем определенного варианта ответа.
Запустим скрипт и напишем /test:
Отлично, бот прислал нам варианты ответов. Но при нажатии на кнопку ничего не произойдет, т.к. мы не описали обработку результатов. Исправим это:
bot.answer_callback_quer – это всплывающее окно, которое будет показано пользователю после нажатия кнопки. А в call.data будет передано значение, которое мы указывали при создании клавиатуры в параметре callback_data. Ответим боту, выбрав один из ответов:
Отлично, все работает. Но будет лучше, если после ответа, клавиатура будет исчезать из чата. Это можно сделать добавив в конец функции query_handler следующую строку:
bot.edit_message_reply_markup(call.message.chat.id, call.message.message_id)
Это функция редактирования клавиатуры, вызванная без указания объекта клавиатуры. Теперь после ответа пользователя клавиатура будет убрана ботом:
Конечный листинг телеграм бот на питоне
Как создать бота в телеграмме и настроить работу команд
Что такое Telegram знает каждый пользователь соцсетей. Это один из самых популярных мессенджеров в России, с помощью которого можно не только переписываться с друзьями, но и продвигать различные бизнес-проекты.
Чат-бот — это программа, которая имитирует реальный диалог с клиентом в различных мессенджерах. На сегодняшний день — это один из успешных инструментов рекламного продвижения. В статье мы разберёмся, как создать чат-бот в телеграмме самостоятельно бесплатно, не прибегая к услугам программистов.
Содержание статьи скрыть
Что такое чат-бот и для чего он нужен
На сегодняшний день, на рынке товаров и услуг большая конкуренция. Очень важно не только привлечь клиента, но и удержать его. По статистике, клиенты делают покупки там, где оперативно отвечают на их вопросы, и покупка совершается сразу.
Ещё несколько лет назад на все вопросы отвечал менеджер и время ожидания было долгим, поэтому клиент мог просто уйти. Теперь для ответов на самые популярные вопросы создаются виртуальные помощники, которые предоставляют клиенту всю необходимую информацию в течение пару минут.
Чат-бот — это виртуальный помощник, который запрограммирован выполнять определённые задачи. Такой помощник есть практически у каждой крупной компании, обучающей платформы или новостного канала.
Основные функции чат-бота:
- ответы на самые часто задаваемые вопросы;
- создание меню с командами для дальнейшей работы;
- создание рассылок для подписчиков;
- ведение статистики подписчиков;
- развлекательный контент;
- показ новостной ленты.
Чат-бот посылает запрограммированную информацию в зависимости от тематики канала. Это может быть график работы магазина, стоимость услуг, курс валют и так далее. В названии такого аккаунта всегда есть слово bot.
Основными преимуществами создания такого помощника является:
- круглосуточная работа — чат-бот предоставит информацию для клиента 24/7;
- клиент может моментально получить ответ на интересующий вопрос;
- для работы с роботом не требуется установка дополнительных программ.
Сегодня все, кто занимается продвижением своего бизнеса, устанавливают чат-боты, чтобы клиент мог получить информацию сразу по запросу. Ниже будет представлена актуальная информация, как создать бота в телеграмме для канала.
Ежедневные советы от диджитал-наставника Checkroi прямо в твоем телеграме!
Подписывайся на канал
Подписаться
Создание чат-бота в телеграме
Для начала необходимо зайти в свой аккаунт в телеграмме или скачать приложение через App Store или Play Маркет. Для установки приложения на компьютер необходимо скачать установочный файл с официального сайта.
Следующий шаг как создать бота в телеграмме самостоятельно бесплатно — создание своего помощника с помощью специальных сервисов-конструкторов. Самые популярные:
- Puzzlebot;
- Manybot;
- Botobot;
- Bottap;
- BotFather.
У каждого сервиса есть платные и бесплатные версии работы, также будет отличаться функциональные возможности будущего помощника. Разберем как создавать ботов в телеграме на телефоне.
Создаём чат-бот через сервис BotFather
Открываем приложение телеграма и в поисковой строке набираем имя «BotFather». Это официальный системный бот приложения, который помогает с регистрацией других ботов в мессенджере. Обратите внимание, что у данного сервиса есть официальное подтверждение — синяя галочка.
Шаг 1. Бот запрограммирован давать ответы, поэтому он никогда не начинает диалог. Чтобы получить информацию об установке вашего помощника, необходимо дать системному боту команду. Напишите в диалоговое окно /newbot. Далее бот будет задавать вопросы или давать инструкции.
Шаг 2. Необходимо придумать имя боту — оно будет отображаться в поисковой строке в списке контактов. Как правило, существующему названию компании или профиля в соцсети дописывают приставку bot. Если имя занято, то будут приходить системные сообщения — необходимо придумать другое. Для названия помощника можно использовать от 5 до 32 символов.
Шаг 3. После успешной регистрации бота появится следующее системное сообщение, в котором есть личный токен для последующих интеграций с различными сервисами.
Чат-бот готов. Для дальнейшей работы необходимо будет скопировать токен и вставлять на рабочие платформы для перехода в чат-бот. Также токен необходимо скопировать и вставить в диалоговое окно и после того придёт системное сообщение, что бот принят и готов к дальнейшей работе.
Настраиваем чат-бот
Для более полной информации необходимо настроить описание чат-бота — вставить аватар, написать информацию о компании.
Для этого нужно в диалоговом окне нажать команду /mybots. Появится меню настроек и редактирования.
И далее по очереди делаем описание каждого необходимого пункта. В любой момент можно редактировать описание и менять информацию.
Создаём команды для чат-бота
Далее необходимо прописать необходимые команды, которые будет выполнять бот. Необходим начать с ним диалог — для этого нажимаем команду «нажать» внизу чата.
Ниже отобразится список команд, которые можно использовать в работе с ботом:
- /newpost — отправка сообщений подписчикам;
- /schedule — посмотреть отложенные посты;
- /subscrlbers — посмотреть количество подписчиков;
- /commands — создание собственных команд и настройка бота;
- /botlang — установка языка бота
- /setdescription — возможность отредактировать описание бота;
- /channels — настройка автоматической выкладки постов в Телеграм;
- /admins — управление администраторами бота;
- /tutorials — ответы на вопросы, связанные с созданием и настройкой бота;