Как создать бота в телеграмме на python
Перейти к содержимому

Как создать бота в телеграмме на python

  • автор:

Как создать бота в Telegram: большая инструкция

Как создать бота в Telegram: большая инструкция

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

Освойте профессию
«Python-разработчик»

Что такое Telegram-бот?

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

Python-разработчик
Освойте Python, самый популярный язык программирования
3 075 ₽/мес 6 150 ₽/мес

dffsdd (3)

Какими бывают боты в Telegram

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

Боты для автоматизации задач

как создать бота в телеграмме

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

Боты для продвижения и продаж

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

как создать своего бота в телеграмме как сделать бота в телеграммеЧатбот поможет в форме непринужденной беседы подвести клиента к покупке вашего продукта. Источник

Боты для общения и развлечения

создание бота телеграмм

Telegram-боты нужны не только для того, чтобы продавать. Они также могут помочь выбрать кино на вечер, предложить забавный тест или сгенерировать мем. Например, студенты Skillfactory разработали для Московского зоопарка Telegram-бот, который имитирует общение с манулом Тимофеем и предлагает поучаствовать в викторине.

Конструкторы для настройки ботов

Для создания простых ботов можно использовать сервисы-конструкторы. С их помощью получится реализовать наиболее частые сценарии использования: ответы на вопросы, выдачу информации по запросу и обработку данных пользователя. Такие сервисы не требуют знания программирования, их можно освоить за несколько часов. Популярные конструкторы для создания ботов Telegram: Manybot — сервис для создания ботов с помощью сообщений в чате. Подойдет для самых простых сценариев использования. У Manybot есть встроенная реклама и нет возможности отключить ее с помощью подписки; botmother — редактор ботов, который умеет работать не только с Telegram, но и с другими популярными мессенджерами. Есть возможность обрабатывать медиа, файлы и обращаться к сторонним сервисам. PuzzleBot — мощный конструктор, позволяющий создать бота практически любой сложности и без единой строчки кода. При этом важно понимать основы программирования: переменные, циклы и условия. Есть премиальная версия по подписке.

Станьте разработчиком на Python и решайте самые разные задачи: от написания кода до автоматизации процессов

Какие технологии нужны, чтобы создать чат-бота в Telegram с нуля?

Если от бота нужны нестандартные сценарии использования или в проекте важно полностью контролировать поведение и обработку данных, то без программирования не обойтись. У Telegram открытое API с хорошей документацией, поэтому ботов можно разрабатывать практически на любом языке программирования, но удобнее использовать для этого уже готовые библиотеки. Разработчики Telegram активно развивают мессенджер, поэтому от библиотеки важно, чтобы она обновлялась так же часто и поддерживала все новшества сервиса. Ботов чаще всего пишут на Python из-за простоты и удобства этого языка. Для Python существуют следующие библиотеки для ботов Telegram: aiogram — комплексная библиотека с отличной документацией, поддержкой и активным сообществом. Есть русскоязычное сообщество разработчиков, которое поможет с трудностями и ответит на вопросы. Библиотека aiogram поддерживает асинхронность, работу с машиной состояний и рассчитана на разработку сложных ботов с большим количеством ежедневных пользователей. Сейчас у aiogram две активные версии, и лучше сразу выбирать версию 3.0, которая пока находится в бете, но работает стабильно. Библиотека подразумевает глубокие знания Python и опыт в программировании, поэтому может быть сложной для начинающих; telebot (pyTelegramBotAPI) — библиотека для простых ботов с небольшим количеством пользователей, поддерживающая работу с основными методами Telegram API. С telebot сложнее организовать асинхронность и управлять большой нагрузкой, но новичкам в разы легче и приятнее с ней работать.

Читайте также Полезные библиотеки для Python: чем пользуются разработчики

В статье мы будем использовать библиотеку telebot и писать код на Python, поэтому нам понадобится редактор кода. Сейчас разработчики в основном используют один из двух редакторов: Visual Studio Code — бесплатный редактор кода от компании Microsoft с задатками полноценной среды разработки. VS Code можно использовать практически с любыми языками программирования и технологиями. Для этого компания предусмотрела маркетплейс плагинов, расширяющих возможности редактора. VS Code полностью бесплатный и доступен для Windows, macOS и Linux. PyCharm — полноценная среда разработки на Python от компании JetBrains. Более тяжеловесная, чем VS Code, и включает в себя дополнительные инструменты для профессиональной работы над большими проектами. Есть как бесплатная версия, так и продвинутая по подписке. Для разработки даже самых сложных ботов хватит возможностей бесплатной версии PyCharm.

Как создать своего бота в Telegram

Разработка Telegram-бота начинается с его создания в мессенджере. Для этого команда сервиса предусмотрела специального бота BotFather, через которого осуществляется управление другими ботами пользователя. Важно отметить, что BotFather доступен только под этим именем и оснащен синей галочкой верификации. Найти его можно через строку поиска или по ссылке. BotFather для создания ботов в ТелеграммПосле перехода в BotFather нажимаем на кнопку «Начать». В чат придет сообщение со списком всех команд, доступных в боте. Так как мы создаем нового бота, то нам нужна команда `/newbot`. Ее можно выбрать из списка или ввести с клавиатуры и отправить в чат. Начало создания бота в BotFatherПосле этого BotFather попросит ввести название бота, которое пользователи будут видеть в его профиле и списке своих чатов. Оно может быть любым, но должно передавать суть бота и его возможности. Мы разрабатываем бота для комплиментов, так его и назовем — «Комплименты». разработка бота для комплиментов в BotFatherТеперь нашему боту надо задать имя пользователя, по которому его можно будет найти в Telegram. В этом случае уже есть несколько правил оформления:

  • имя бота должно заканчиваться словом `bot`: к примеру, `SuperBot` или `super_bot`. Это обязательное требование Telegram, чтобы пользователи могли отличать обычные профили от ботов. Исключение делается только для внутреннего BotFather, имя которого начинается с ключевого слова, а не заканчивается им;
  • имя бота должно быть уникальным, а учитывая, что многие создают ботов ради эксперимента и не удаляют их, то найти подходящий свободный вариант может быть проблематично.

Исходя из всего этого, подбираем звучное имя, состоящее из ключевых слов, которые бы точно описывали его суть. Для экспериментов можно использовать просто набор символов. В нашем случае имя `compliment_bot` уже было занято, поэтому использовали `super_compliment_bot`. Получилось слишком длинно, но отражает суть.

После регистрации BotFather передаст нам токен для доступа к нашему боту и подскажет ссылки на официальную документацию по разработке ботов для Telegram. Важно запомнить, что токен надо держать в секрете. С его помощью можно полностью управлять ботом и сообщениями, которые он отправляет. Посторонние лица, не имеющие отношения к разработке вашего бота, не должны его знать.

токен для вашего бота в BotFather

Оформление бота

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

оформление своего бота в телеграмм

Для этого опять откроем BotFather, введем команду `/mybots` и выберем из списка только что созданного бота. Перед нами откроется меню управления ботом.

меню управления ботом в BotFather

Коротко о каждом пункте меню:

API Token — можно узнать токен, если потеряли его. Также можно отозвать имеющийся токен и сгенерировать новый, если кто-то все же узнал его и перехватил на себя управление ботом;

Edit Bot — меню редактирования бота, в котором можно изменить имя, добавить описание, иконку, приветственное изображение и команды;

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

Payments — бот может принимать платежи, к примеру, можно предлагать его функции по подписке или продавать через него товары. В этом пункте меню можно подключить платежную систему для обработки платежей и банковский счет. Есть поддержка российских платежных систем;

Transfer Ownership — бот принадлежит пользователю, который его создал, но права на владение и управление можно передать с помощью этого пункта меню;

Delete Bot — если бот больше не нужен, то его можно удалить, освободив список свободных уникальных имен.

У нашего бота пока есть только название. Теперь зададим ему описание, которое будет видно в окне его профиля. Для этого в меню бота выбираем Edit Bot → Edit About и присылаем в чат короткое описание. После зададим расширенное описание, выводящееся в чате новым пользователям. Переходим в Edit Bot → Edit Description и присылаем текст.

Для узнаваемости боту надо установить иконку, которую будет видно в списке чатов пользователя. Для иконок есть ограничения:

  • формат файла должен быть jpg или png;
  • квадратное изображение не меньше 300×300px и не больше 1280×1280px. Лучше всего использовать изображения размером 500×500px;
  • изображение надо отправить BotFather в виде фото, а не файла.

Также боту можно задать изображение с описанием его возможностей. Его будут видеть новые пользователи при переходе в чат. Можно использовать картинки размером 640×360px или гифки 320×120px/640×360px. На таком изображении можно тезисно указать возможности бота и оставить QR-код с ссылкой на сайт компании или разработчика для пользователей, которые используют настольную версию Telegram.

Иконку бота можно задать, перейдя в Edit Bot → Edit Botpic, а изображение-описание — Edit Bot → Edit Description Picture. После настройки наш Telegram-бот выглядит так:

создаем иконку бота в настройках

Начинаем программировать

Теперь у нас есть готовый оформленный бот, который ничего не умеет. Если открыть и запустить бота командой `/start` или кнопкой, то ничего не произойдет. Поэтому надо его оживить и научить обрабатывать сообщения от пользователя. Наш бот будет присылать в чат случайный комплимент из собственной коллекции.

Сперва надо установить среду разработки. В этой статье будем использовать PyCharm от JetBrains. Скачать установочный файл можно с официального сайта разработчика. Скачать и установить Python можно с официального портала. Проверить установленную версию Python можно с помощью следующей команды:

проверка установленной версии Python

При создании бота мы будем в основном работать с библиотекой telebot. Поэтому ее надо установить. Заходим в PyCharm и создаем новый проект с названием `bot`. PyCharm создаст необходимое окружение, в котором мы установим библиотеку. Для этого надо открыть вкладку Terminal в редакторе кода и ввести команду `pip install pyTelegramBotAPI` для Windows или `pip3 install pyTelegramBotAPI` для macOS.

В папке проекта должен был автоматически появиться файл `main.py`. Если этого не произошло, то создаем его сами. Теперь научим нашего бота здороваться. Для этого в файле `main.py` импортируем `telebot`, создадим переменную `token` с нашим токеном и передадим его экземпляру бота.

import telebot # Импортируем telebot token = ('Ваш токен') bot = telebot.TeleBot(token)

Теперь создадим хендлер для обработки команды `/start`. Хендлер (Heandler) или обработчик — функция, которая вызывается в ответ на наступление определенного события. В случае с Telegram хендлер запускает функцию при получении сообщения.

В самом хендлере создадим функцию `start_message` с текстом сообщения, которым бот будет отвечать на полученную команду. Нам нужно бесконечное выполнение кода, чтобы бот работал всегда и был доступен в любое время суток. Поэтому завершим все строкой `bot.polling(none_stop=*True*, interval=0)`, которая будет запускать бесконечное выполнение.

import telebot # импортируем telebot # передаём значение переменной с кодом экземпляру бота token = ('Ваш токен') bot = telebot.TeleBot(token) # хендлер и функция для обработки команды /start @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, "Привет ✌️") # бесконечное выполнение кода bot.polling(none_stop=True, interval=0) Встроить код

Сейчас можно попробовать запустить код в PyCharm и открыть бота в Telegram. Если отправить ему команду `/start`, то он ответит сообщением, которое мы передали ему в коде. Бот работает, значит, можно наращивать его возможности.

запускаем код бота в PyCharm

Сейчас токен бота находится в одном файле с его кодом. Такой подход можно применять в разработке, но если надо будет поделиться кодом с кем-то или опубликовать его на GitHub, то токен надо будет удалять и тратить на это время. А еще можно просто забыть удалить токен, и тогда безопасность бота будет под вопросом.

Поэтому создадим в папке проекта файл `secrets.py` и в файле инициализируем словарь с ключом `BOT_API_TOKEN` и самим токеном в виде значения ключа.

secrets = Встроить код

Теперь вернемся к файлу `main.py`, импортируем словарь из файла `secrets.py` и сделаем так, чтобы токен подтягивался из файла, а не находился в коде.

import telebot # импортируем telebot from secrets import secrets # импортируем словарь с токеном из файла secrets.py # передаём значение переменной с кодом экземпляру бота token = secrets.get('BOT_API_TOKEN') bot = telebot.TeleBot(token) # хендлер и функция для обработки команды /start @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, "Привет ✌️") # бесконечное выполнение кода bot.polling(none_stop=True, interval=0)

Снова запускаем код и проверяем. Бот продолжает отвечать на команду `/start`, но в его коде уже нет токена. Поэтому можно спокойно делиться файлом `main.py` и не бояться за безопасность.

Разработчики могут встраивать кнопки для удобного общения с Telegram-ботами. Воспользуемся этой возможностью и создадим несколько кнопок для автоматической отправки команд. Нам потребуется определение типов сообщений, поэтому для этого импортируем `types` из `telebot`. Часть с импортами в коде будет выглядеть так:

import telebot # импортируем telebot from secrets import secrets # импортируем словарь с токеном из файла secrets.py from telebot import types # для определения типов

Теперь перепишем хендлер для обработки команды `/start`. Он будет не только отправлять приветственное сообщение, но и инициализировать кнопки бота. В нашем боте две кнопки: «Старт» будет выводить краткую инструкцию по использованию бота, а «Комплимент» — присылать приятное сообщение из коллекции. Сами кнопки украсим эмодзи.

Вместе с этим заменим текст приветственного сообщения. Будем обращаться к пользователю по имени. Мы не можем знать имен всех пользователей, но их знает Telegram, поэтому спросим у него с помощью конструкции « . Весь код хендлера выглядит так:

# хендлер и функция для обработки команды /start @bot.message_handler(commands=['start']) def start_message(message): markup = types.ReplyKeyboardMarkup(resize_keyboard=True) start_button = types.KeyboardButton("�� Старт") action_button = types.KeyboardButton("�� Комплимент") markup.add(start_button, action_button) bot.send_message(message.chat.id, text="Привет, ��\nВоспользуйся кнопками".format(message.from_user), reply_markup=markup)

текст приветственного сообщения в боте

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

Для начала создадим коллекцию комплиментов в отдельном файле `compliments.py`:

compliments = ('Выглядишь лучшее всех!', 'Сегодня будет замечательный день!', 'Ты обязательно всё сможешь!', 'Я не встречал людей добрее тебя!', 'С тобой приятно проводить время!',)

После этого импортируем файл и модуль для работы со случайными числами:

import random # для выбора случайного комплимента from compliments import compliments # коллекция комплиментов

Теперь можно приступать к созданию хендлера для обработки кнопок. В условии будем отслеживать, какой текст пришел от пользователя. Если встречаем «�� Старт», то выводим краткое описание возможностей, если «�� Комплимент» — присылаем случайное сообщение из коллекции. На все остальные сообщения будем отвечать просьбой воспользоваться кнопками. Весь код хендлера выглядит так:

# хендлер для обработки нажатий кнопок @bot.message_handler(content_types=['text']) def buttons(message): if (message.text == "�� Старт"): bot.send_message(message.chat.id, text="Я могу поддержать тебя и поднять настроение. Просто попроси об этом") elif (message.text == "�� Комплимент"): bot.send_message(message.chat.id, text=f"") else: bot.send_message(message.chat.id, text="Я могу отвечать только на нажатие кнопок")

ваш бот в телеграмм готов

Бот готов, исправно работает, отвечает на сообщения и присылает в чат случайные комплименты из собственной коллекции, а его полный код выглядит так:

import telebot # импортируем telebot from secrets import secrets # словарь с токеном из файла secrets.py from telebot import types # для определения типов import random # для выбора случайного комплимента from compliments import compliments # коллекция комплиментов # передаём значение переменной с кодом экземпляру бота token = secrets.get('BOT_API_TOKEN') bot = telebot.TeleBot(token) # хендлер и функция для обработки команды /start @bot.message_handler(commands=['start']) def start_message(message): # создаём кнопки бота markup = types.ReplyKeyboardMarkup(resize_keyboard=True) start_button = types.KeyboardButton("�� Старт") action_button = types.KeyboardButton("�� Комплимент") markup.add(start_button, action_button) # приветсвенное сообщение для команды /start bot.send_message(message.chat.id, text="Привет, ��\nВоспользуйся кнопками".format(message.from_user), reply_markup=markup) # хендлер для обработки нажатий кнопок @bot.message_handler(content_types=['text']) def buttons(message): if (message.text == "�� Старт"): bot.send_message(message.chat.id, text="Я могу поддержать тебя и поднять настроение. Просто попроси об этом") elif (message.text == "�� Комплимент"): bot.send_message(message.chat.id, text=f"") else: bot.send_message(message.chat.id, text="Я могу отвечать только на нажатие кнопок") # бесконечное выполнение кода bot.polling(none_stop=True, interval=0)

А полное дерево файлов в проекте выглядит так:

. └── bot/ ├── main.py ├── secrets.py └── compliments.py

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

Как добавить функционал и настроить ответы для бота в Телеграме?

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

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

Чтобы бот заработал, нужно разместить написанный код на арендованном сервере и создать бот в мессенджере. Код будет отвечать за связь сервера с чатом в Telegram.

Как продвигать и увеличить популярность своего бота в Телеграме?

Расскажите о своем боте на сайте, в социальных сетях и в email-рассылке. Для тестового периода лучше привести в бот теплую аудиторию, которая вас уже знает и читает. Они могут попробовать бот, написать вам об ошибках. После этого можно заняться платной рекламой: купить ее у Telegram или обратиться к блогерам.

На каком языке лучше написать бота?

На любом, который вы знаете. Ботов можно писать на Python, C, Java. Чаще всего для этой задачи выбирают Python, потому что он прост в использовании.

Python-разработчик

Освойте Python с нуля. Подготовим к трудоустройству: дадим много практики, реальные проекты для портфолио, поможем с резюме. Лучшие студенты пройдут стажировки в проектах компаний-партнеров.

Создание бота в Telegram на Python

Course cover

Курс расскажет, как устроены боты в Telegram и научит вас основам их разработки на Python.

  1. В первом модуле вы узнаете что такое Telegram-боты и как они работают. Как их создавать. Как происходит взаимодействие пользователей и ботов.
  2. Во втором узнаете как работать с библиотекой для разработки ботов — python-telegram-bot. Напишите 4 простых бота и научитесь обрабатывать команды от пользователей, работе с текстовыми сообщениями, клавиатурами и фото.
  3. В третьем модуле получите советы по привлечению первых пользователей в ваши боты.

Для кого этот курс

Для тех, кто хочет разобраться, как работают боты в Telegram и в основах их разработки на Python.

Начальные требования

Знание основ программирования на Python.

Как создать бота в телеграмме на python

Для начала давайте определимся с тем что такое бот. Бот представляет из себя интерфейс telegram с помощью которого может вызываться любая программа. То есть это прослойка между чатом в вашем телефоне и кодом на компьютере или сервере, помогающая отправить и получить данные в чате.

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

Схематично это взаимодействие выглядит примерно так:

Папа ботов

Для того, чтобы создать своего бота, необходимо обратиться с этой просьбой к отцу всех ботов:) На полном серьезе.

Ищем бота с ником @botfather и начинаем с ним диалог:

Пишем ему сообщение /help и получаем перечень всех команд для botfather.

Здесь мы не будем подробно останавливаться на описании каждой команды. Сейчас нас интересует только создание нового бота. Это команда /newbot. Отправим её botfather и посмотрим что будет.

При получении этого сообщения botfather начинает процесс создания и просит вас задать имя для вашего нового бота, а затем и username. Разница в том, что имя может быть любым, тогда как username обязательно должно оканчиваться на «bot» (для того чтобы человек сразу понимал, что общается с ботом, а не с другим человеком). Для упрощения мы зададим одинаковые имя и username нашему боту.

После того, как название выбрано, botfather присылает нам токен бота.

Токен – это уникальный идентификатор нашего бота. Точка связи между ботом и кодом на сервере/компьютере. Именно по нему наш код будет обращаться к боту и попадать туда куда нужно, а бот в свою очередь идентифицировать то, что обращаются именно к нему.

На этом наше общение с botfather окончено.

Пишем функционал бота

Переходим ко второй части создания бота – написанию кода. В этой статье мы будем рассматривать в качестве основы python, который для начла нужно установить, если он у вас еще не установлен. Сделать это можно на официальном сайте python просто следуя инструкциям установщика.

После того как питон установлен, нам нужно установить библиотеку telepot, обеспечивающую взаимодействие python с telegram. Сделать это можно за 5 секунд. Открываем командную строку и пишем там $ pip install telepot.

В случае успешной установки мы увидим, Successfully installed. Вот как это выглядит у меня после всего «птичьего текста» процесса установки.

Описание всего функционала библиотеки доступно здесь. Написано легко и понятно. Но на английском.

Теперь у нас есть python и библиотека telepot, позволяющая взаимодействовать с telegram. Время написать простой код.

import telepot from pprint import pprint bot = telepot.Bot('***** Сюда надо вставить токен, полученный у botfather *****') response = bot.getUpdates() pprint(response)

Здесь мы подключили библиотеки telepot и pprint, добавили токен, полученный нами ранее у botfather, послали запрос боту на то чтобы он отправил нам последние сообщения (bot.getUpdates()) и вывели результат на экран. Полученное сообщение выглядит так:

, 'date': 1465283242, 'from': , 'message_id': 10772, 'text': 'Hello'>, 'update_id': 100000000>

Важный нюанс! Бот не человек, сам инициировать беседу не может, поэтому до того как выполнять код, вам необходимо проявить инициативу:) Для этого найдем в telegram нашего бота @rtportal_tp_bot и напишем ему что-нибудь.

Как мы видим, сообщение представляет собой массив, представленный в виде словаря python. Сообщение содержит в себе идентификатор чата (id), то, с кем ведется чат (first_name), тип чата, дату сообщения, от кого получено сообщение, номер сообщение и собственно сам текст. Вообще наполнение полученного сообщения постоянно обновляется, поэтому вполне вероятно, что когда вы будете читать этот текст, в ответе будет приходить гораздо больше параметров. Актуальная версия описания всегда доступна в описании api на официальном сайте telegram.

Теперь, когда мы знаем как выглядит сообщение, можно написать простого бота-калькулятора. Код будет выглядеть следующим образом:

import telepot from telepot.loop import MessageLoop TOKEN = '***** Сюда надо вставить токен, полученный у botfather *****' bot = telepot.Bot(TOKEN) def handle(msg): """ Process request like '3+2' """ content_type, chat_type, chat_id = telepot.glance(msg) text = msg["text"] try: answer = eval(text) except: answer = "Can't calculate :(" bot.sendMessage(chat_id, "answer: <>".format(answer)) MessageLoop(bot, handle).run_as_thread() # Keep the program running. while True: n = input('To stop enter "stop":') if n.strip() == 'stop': break

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

Для того, чтобы программа выполнялась, в конце добавлен цикл, выполняющий код до момента написания слова stop‘.

Запускаем код и проверяем результат в telegram. Все работает!

Нюансы

Есть несколько важных нюансов, которые нужно понимать при работе с ботами telegram:

  1. Бот сам не может являться инициатором беседы в чате. Это можете сделать только вы. До момента как вы напишете что-нибудь боту, он считается выключенным.
  2. Так как код python (и любой другой) запускается на компьютере или сервере, он будет выполняться только если компьютер/сервер доступен. То есть в случае если компьютер с кодом «заснул», отвалилась сессия или код завис — бот работать не будет. То же самое относится к серверу.
  3. Если компьютер/сервер с кодом бота перезагрузился, нужно запускать код заново, а так же инициировать беседу с ботом в telegram (см.п.1) иначе бот работать не будет.
  4. Есть два метода получения сообщений. Это getUpdates и webhooks. В этой статье описан метод getUpdates как наиболее простой для старта. Отличие getUpdates от webhooks в том что в первом случае ваш компьютер/сервер через заданные промежутки времени проверяет наличие новых сообщений, а во втором telegram сам отправляет новые сообщение при их наличии к вам на сервер. Webhooks меньше грузит и ваш сервер и сервера telegram, однако требует дополнительной настройки и наличия ssl сертификата.

В этой статье мы рассмотрели как самостоятельно написать код для бота, однако, стоить отметить, что в telegram уже есть всевозможные боты с типовым функционалом и если вам надо сделать что-то простое, то можно воспользоваться ими. Так же есть конструкторы ботов, позволяющие создавать логику без написания кода. Например, @chatfuelbot. Но если вам нужен нетиповой функционал, то все же лучше написать код самостоятельно.

Из ограничений готовых ботов и платформ-конструкторов можно отметить то, что в результате их популярности и большого количества пользователей, такие боты могут работать не стабильно в зависимости от нагруженности серверов, на которых размещены боты. Это может выражаться как в увеличенном времени реакции бота, так и в полном отсутствии реакции в части случаев.

Зачем все это:

Ключевой вопрос: «как можно применить бота?». Можно, например, научить бота python читать логи на предмет ошибок и выдавать сообщение если в процессе что-то пошло не так. Можно обрабатывать aml события и блокировать счета мошенников в реальном времени (привет sas-форум). Можно создать библиотеку знаний по нужной области рисков и отправлять нормативные документы по запросу.

Применить бот в работе рисковика можно. Все зависит от вашей фантазии и наличия открытых портов для api telegram в вашем банке 🙂

О том как научить вашего бота следить за событиями Google Calendar можно прочитать в этой статье.

Полезные ссылки:

Создаем Telegram бота на Python часть-1

Создаем Telegram бота на Python часть-1

10.09.2019

11770

Рейтинг: 5 . Проголосовало: 7
Вы проголосовали:
Для голосования нужно авторизироваться

advertisement advertisement

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

Часть 1: Регистрация нового Telegram Bot-а

Для начала вы должны быть зарегистрированы в Telegram- мессенджере. Далее, вы в мобильной, десктопной или web-версии мессенджера открываете общение с ботом @BotFather, либо по ссылке https://telegram.me/botfather.

advertisement advertisement

После начала общения с этим ботом, нажав /start, вы получите ответ от бота с указанием его возможностей. Нас интересует создание нового бота — /newbot.

После того как мы введем /newbot нас попросят придумать имя для нашего нового бота. Пусть оно будет MyFirstTestBot.

Далее нам нужно придумать юзернэйм для нашего бота. В нашем случае это будет mft001_bot.

После этого BotFather высылает нам специальный токен:

Наш токен оказался: 851216368:AAG6_JHHsIqAK-lX2CxOWQHTAM109zdrcZM (В вашем случае токен будет другой.)

Этот токен понадобится нам при настройке нашего бота. Токен должен быть сохранён. Именно он является единственным ключем для взаимодействия с ботом.

Также мы получаем ссылку на нашего бота. В моем случае это t.me/mft001_bot.

Теперь наш Tekegram-бот создан. Мы можем начать настраивать своего бота, например, установить изображение для бота, изменить или добавить описание бота и тп.

Тема связана со специальностями:

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

Часть 2 Написание кода

Как и написано выше мы будем создавать нашего бота на языке Python. Установите его с официального сайта, если вы используете Windows или выполните команду в терминале на Linux:

sudo apt-get install python python-pip

Далее воспользуемся системой управления пакетами PIP, которая используется для установки и управления программными пакетами, и установим библиотеку PyTelegramBotAPI (Telebot):

pip install pytelegrambotapi – user

Создадим логику работы нашего бота. Используя полноценный IDE или простой текстовый редактор создадим файл ourbot.py и заполним его необходимой логикой.

Для начала нам нужно выполнить импорт библиотеки PyTelegramBotAPI (Telebot), написав в нашем файле:

import telebot

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

bot = telebot.TeleBot(‘851216368:AAG6_JHHsIqAK-lX2CxOWQHTAM109zdrcZM’)

Теперь создадим метод, для получения сообщений.

Возможности PyTelegramBotAPI позволяют отправлять боту аудио (content_types=[‘audio’), видео (content_types=[‘video’), документы (content_types=[‘document’), текст (content_types=[‘text’), географический адрес (content_types=[‘location’), данные контакта (content_types=[‘contact’) и стикеры (content_types=[‘sticker’). Мы, для простоты опыта, будем общаться с ботом только текстом:

@bot.message_handler(content_types=[‘text’])
def handle_text_messages(message):

Теперь рассмотрим логику обработки наших текстовых сообщений. Мы хотим захардкодить простое общение бота с пользователем: бот должен уметь здороваться, когда с ним здороваются, уметь отвечать на вопросы «Кто ты?», «Как тебя зовут?» и «Что ты умеешь?».

Видео курсы по схожей тематике:

WPF Углубленный

JDBC & Hibernate

Kotlin

if message.text == «Привет»:
bot.send_message(message.from_user.id, «Привет»)
elif message.text == «Кто ты?»:
bot.send_message(message.from_user.id, «Я тестовый чатбот для учебного примера.»)
elif message.text == «Как тебя зовут?»:
bot.send_message(message.from_user.id, «Меня зовут MyFirstTestBot.»)
elif message.text == «Что ты умеешь?»:

bot.send_message(message.from_user.id, «Я умею отвечать на несколько простых вопросов — кто я, как меня зовут и что я умею делать.»)

bot.send_message(message.from_user.id, «Я тебя не понимаю. Напиши что-то другое.»)

После тела метода, обрабатывающего наши запросы к боту, добавим вызов метода:

bot.polling(none_stop=True, interval=0)

Задачей этого метода является создание потока, в котором бот отправляет запросы на сервер, уточняя таким способом, не писал ли ему кто-то сообщение. Параметр none_stop: False означает, что наша программа будет продолжать отправлять запросы на сервер после получения сообщения об ошибке от сервера Telegram.

Сохраним наш код:

Мы можем протестировать работу нашего бота, запустив его код в той IDE, в которой мы писали. И написав нашему боту в мессенджере.

Наш учебный Telegram-бот создан. Мы можем запустить наш файл локально, и он будет отрабатывать запросы к нему через мессенджер прямо на нашем компьютере, выступающим в роли сервера. Но это не очень удобная практика. Для нормальной работы код желательно залить на отдельный сервер и запустить его там.

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

Резюме

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

Бесплатные вебинары по схожей тематике:

Кто есть кто в IT компании. Структуры и роли

Кто есть кто в IT компании. Структуры и роли

Подготовка к собеседованию в IT

Подготовка к собеседованию в IT

Веб-дизайн с Figma. Легкий старт.

Веб-дизайн с Figma. Легкий старт.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *