Как написать чат бота для telegram новичку

Вы можете самостоятельно создать бота в Telegram без программирования. Повторите действия по инструкции и бесплатно запустите своего первого чат-бота уже через 15 минут.

Создадим бота, который будет приветствовать, задавать вопрос с вариантами ответов и реагировать на нажатие на кнопок.

Шаг 1. Создайте аккаунт разработчика

1. Зарегистрируйтесь на botmother.com с помощью электронной почты (на нее придет письмо с подтверждением) или войдите через Google.

2. Нажмите кнопку «Создать нового бота» (справа внизу).

3. Выберите «Пустой бот».

Перед вами откроется конструктор— это место, где можно разрабатывать бота и добавлять функции.

Слева находится меню с разделами конструктора. Справа — вкладка с компонентами и экранами. По центру — рабочая зона для разработки. В левом нижнем углу — виджет обратной связи. Если возникнут трудности, пишите в поддержку.

Логика бота создается с помощью экранов— это сообщения бота (шаги, этапы), внутри которых могут быть различные функции. Автоматически создается «Стартовый экран» — первое сообщение от бота.

На каждый экран можно добавлять компоненты— это функции и действия бота (например, отправление текста, картинок, кнопок и т.д.).

Все компоненты расположены на вкладке справа.

Шаг 2. Создайте приветствие

1. На вкладке «Компоненты» нажмите на компонент «Сообщение» и перетяните его на экран.

2. Напишите любой текст. Например, «Привет! Это мой первый бот».

3. Нажмите зеленую кнопку «Сохранить» (справа внизу).

Шаг 3. Подключите бота к мессенджеру

В Telegram чат-боты создаются с помощью специального бота @BotFather. Через него можно управлять данными бота, добавить описание, аватар и т.д.

Создадим бота и придумаем ему название:

2. Напишите ему /newbot.

3. Придумайте и напишите название бота. Оно будет отображаться в контактах и чатах. Например, «Hello, bot».

4. Придумайте и напишите юзернейм. Он используется для упоминания бота и в ссылках. Юзернейм должен быть на латинице и обязательно заканчиваться на «bot». Например, «botmother_hello_bot».

Теперь нужно подключить бота в Telegram к вашему аккаунту разработчика:

2. Скопируйте токен бота.

3. Вернитесь в конструктор, найдите и откройте в меню слева раздел «Настройки».

4. Переключателем включите платформу Telegram.

5. Нажмите кнопку «Изменить».

6. Вставьте ранее скопированный токен бота.

7. Сохраните изменения.

Теперь бот подключен к конструктору, а значит, он может отвечать всем пользователям. Протестируем?

1. Найдите в поиске Telegram своего бота по юзернейму.

2. Нажмите «Начать» (или «Start»). Бот должен отправить приветственное сообщение.

Отлично! Ваш бот умеет отправлять сообщение.

Шаг 4. Добавьте дополнительные функции

Усложним бота. Пусть он задает вопрос с вариантами ответов и присылает разные сообщения в зависимости от выбора пользователя.

Например:

Текст: Как дела?

Первая кнопка: Хорошо

Вторая кнопка: Плохо

Для этого добавим еще два экрана, кнопки и изображение:

1. Откройте конструктор.

2. Добавьте два новых экрана. Для этого нажмите кнопку «Добавить экран» дважды.

3. Сохраните изменения.

Можно изменить названия добавленных экранов двойным кликом:

1. Два раза кликните на названия экранов.

2. Отредактируй тексты. Например, «Экран Хорошо» и «Экран Плохо».

Добавим кнопки, на которые пользователи смогут нажимать:

1. Переместите компонент «Кнопки» на «Стартовый экран».

2. Напишите текст. Например, «Как дела?».

3. Добавьте две кнопки.

4. Напишите тексты на кнопках. Например, «Экран Хорошо» и «Экран Плохо».

Каждая кнопка должна вести на определенный экран, который указывается в настройках кнопки:

1. Нажмите на первую кнопку.

2. В поле «Переход на экран» выберите экран «Экран Хорошо».

3. Нажмите на вторую кнопку.

4. Выберите другой экран — «Экран Плохо».

5. Сохраните изменения.

Итак, на «Стартовом экране» пользователь нажимает на кнопки и попадает на разные экраны. Нужно заполнить их контентом:

1. Переместите компонент «Изображение» на экран «Экран Хорошо».

2. Загрузите любую картинку или вставьте ссылку на изображение.

3. Сохраните изменения.

Теперь заполним следующий экран:

1. Переместите компонент «Сообщение» на экран «Экран Плохо».

2. Напишите текст. Например, «Не унывай, все будет хорошо!». Можно добавить эмодзи.

3. Сохраните изменения.

Все готово!

Шаг 5. Протестируйте бота

У нас получился такой сценарий: бот приветствует пользователя и задает вопрос с вариантами ответов; пользователь нажимает кнопку, и бот присылает определенное сообщение. Давайте протестируем!

1. Откройте своего бота.

2. Напишите команду /start.

3. Понажимайте на кнопки.

Поздравляем!

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

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

Время на прочтение
6 мин

Количество просмотров 1.5M

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

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

Рассмотрим API на примере создания тривиального бота:

1. Регистрация

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

Пишем ему /start и получаем список всех его команд.
Первая и главная — /newbot — отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя — оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем.

Для начала работы этого уже достаточно. Особо педантичные могут уже здесь присвоить боту аватар, описание и приветственное сообщение.

Не забудьте проверить полученный токен с помощью ссылки api.telegram.org/bot<TOKEN>/getMe, говорят, не всегда работает с первого раза.

2. Программирование

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

Telegram позволяет не делать выгрузку сообщений вручную, а поставить webHook, и тогда они сами будут присылать каждое сообщение. Для Python, чтобы не заморачиваться с cgi и потоками, удобно использовать какой-нибудь реактор, поэтому я для реализации выбрал tornado.web. (для GAE удобно использовать связку Python2+Flask)

Каркас бота:

URL = "https://api.telegram.org/bot%s/" % BOT_TOKEN
MyURL = "https://example.com/hook"

api = requests.Session()
application = tornado.web.Application([
    (r"/", Handler),
])

if __name__ == '__main__':
    signal.signal(signal.SIGTERM, signal_term_handler)
    try:
        set_hook = api.get(URL + "setWebhook?url=%s" % MyURL)
        if set_hook.status_code != 200:
            logging.error("Can't set hook: %s. Quit." % set_hook.text)
            exit(1)
        application.listen(8888)
        tornado.ioloop.IOLoop.current().start()
    except KeyboardInterrupt:
        signal_term_handler(signal.SIGTERM, None)

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

Приложение торнадо для обработки запросов принимает класс tornado.web.RequestHandler, в котором и будет логика бота.

class Handler(tornado.web.RequestHandler):
        def post(self):
            try:
                logging.debug("Got request: %s" % self.request.body)
                update = tornado.escape.json_decode(self.request.body)
                message = update['message']
                text = message.get('text')
                if text:
                    logging.info("MESSAGEt%st%s" % (message['chat']['id'], text))

                    if text[0] == '/':
                        command, *arguments = text.split(" ", 1)
                        response = CMD.get(command, not_found)(arguments, message)
                        logging.info("REPLYt%st%s" % (message['chat']['id'], response))
                        send_reply(response)
            except Exception as e:
                logging.warning(str(e))

Здесь CMD — словарь доступных команд, а send_reply — функция отправки ответа, которая на вход принимает уже сформированный объект Message.

Собственно, её код довольно прост:

def send_reply(response):
    if 'text' in response:
        api.post(URL + "sendMessage", data=response)

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

3. Команды

Перво-наперво, необходимо соблюсти соглашение Telegram и научить бота двум командам: /start и /help:

def help_message(arguments, message):
    response = {'chat_id': message['chat']['id']}
    result = ["Hey, %s!" % message["from"].get("first_name"),
              "rI can accept only these commands:"]
    for command in CMD:
        result.append(command)
    response['text'] = "nt".join(result)
    return response

Структура message[‘from’] — это объект типа User, она предоставляет боту информацию как id пользователя, так и его имя. Для ответов же полезнее использовать message[‘chat’][‘id’] — в случае личного общения там будет User, а в случае чата — id чата. В противном случае можно получить ситуацию, когда пользователь пишет в чат, а бот отвечает в личку.

Команда /start без параметров предназначена для вывода информации о боте, а с параметрами — для идентификации. Полезно её использовать для действий, требующих авторизации.

После этого можно добавить какую-нибудь свою команду, например, /base64:

def base64_decode(arguments, message):
    response = {'chat_id': message['chat']['id']}
    try:
        response['text'] = b64decode(" ".join(arguments).encode("utf8"))
    except:
        response['text'] = "Can't decode it"
    finally:
        return response

Для пользователей мобильного Telegram, будет полезно сказать @BotFather, какие команды принимает наш бот:
I: /setcommands
BotFather : Choose a bot to change the list of commands.
I: @******_bot
BotFather: OK. Send me a list of commands for your bot. Please use this format:

command1 - Description
command2 - Another description
I:
whoisyourdaddy - Information about author
base64 - Base64 decode
BotFather: Success! Command list updated. /help

C таким описанием, если пользователь наберет /, Telegram услужливо покажет список всех доступных команд.

4. Свобода

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

UPD: Как верно подсказали, такое пройдет только при личном общении. В чатах боту доставляются только сообщения, начинающиеся с команды (/<command>) (https://core.telegram.org/bots#privacy-mode)

  • All messages that start with a slash ‘/’ (see Commands above)
  • Messages that mention the bot by username
  • Replies to the bot’s own messages
  • Service messages (people added or removed from the group, etc.)

Чтобы бот получал все сообщения в группах пишем @BotFather команду /setprivacy и выключаем приватность.

Для начала в Handler добавляем обработчик:

if text[0] == '/':
    ...
else:
    response = CMD["<speech>"](message)
    logging.info("REPLYt%st%s" % (message['chat']['id'], response))
    send_reply(response)

А потом в список команд добавляем псевдо-речь:

RESPONSES = {
    "Hello": ["Hi there!", "Hi!", "Welcome!", "Hello, {name}!"],
    "Hi there": ["Hello!", "Hello, {name}!", "Hi!", "Welcome!"],
    "Hi!": ["Hi there!", "Hello, {name}!", "Welcome!", "Hello!"],
    "Welcome": ["Hi there!", "Hi!", "Hello!", "Hello, {name}!",],
}
def human_response(message):
    leven = fuzzywuzzy.process.extract(message.get("text", ""), RESPONSES.keys(), limit=1)[0]
    response = {'chat_id': message['chat']['id']}
    if leven[1] < 75:
        response['text'] = "I can not understand you"
    else:
        response['text'] = random.choice(RESPONSES.get(leven[0])).format_map(
            {'name': message["from"].get("first_name", "")}
        )
    return response

Здесь эмпирическая константа 75 относительно неплохо отражает вероятность того, что пользователь всё-таки хотел сказать. А format_map — удобна для одинакового описания строк как требующих подстановки, так и без нее. Теперь бот будет отвечать на приветствия и иногда даже обращаться по имени.

5. Не текст.

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

Для примера расширим словарь RESPONSES:

RESPONSES["What time is it?"] = ["<at_sticker>", "{date} UTC"]

И будем отлавливать текст <at_sticker>:

if response['text'] == "<at_sticker>":
        response['sticker'] = "BQADAgADeAcAAlOx9wOjY2jpAAHq9DUC"
        del response['text']

Видно, что теперь структура Message уже не содержит текст, поэтому необходимо модифицировать send_reply:

def send_reply(response):
    if 'sticker' in response:
        api.post(URL + "sendSticker", data=response)
    elif 'text' in response:
        api.post(URL + "sendMessage", data=response)

И все, теперь бот будет время от времени присылать стикер вместо времени:

6. Возможности

Благодаря удобству API и быстрому старту боты Telegram могут стать хорошей платформой для автоматизации своих действий, настройки уведомлений, создания викторин и task-based соревнований (CTF, DozoR и прочие).

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

7. Ограничения

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

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

while True:
            r = requests.get(URL + "?offset=%s" % (last + 1))
            if r.status_code == 200:
                for message in r.json()["result"]:
                    last = int(message["update_id"])
                    requests.post("http://localhost:8888/",
                                  data=json.dumps(message),
                                  headers={'Content-type': 'application/json',
                                           'Accept': 'text/plain'}
                     )
            else:
                logging.warning("FAIL " + r.text)
            time.sleep(3)

P.S. По пункту 7 нашел удобное решение — размещение бота не у себя, а на heroku, благо все имена вида *.herokuapp.com защищены их собственным сертификатом.

UPD: Telegram улучшили Бот Апи, из-за чего, теперь не обязательно иметь отдельную функцию для отправки сообщений при установленном вебхуке, а в ответ на POST запрос можно отвечать тем же сформированным JSON с ответным сообщением, где одно из полей устанавливается как ч ‘method’: ‘sendMessage’ (или любой другой метод, используемый ботом).

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

В статье подробно расскажем, как это сделать за пару часов. Погнали.

Содержание

  • Зачем нужен бот в Телеграме
  • Как сделать бота в Телеграме
  • Как настроить нового бота с помощью Manybot
  • Как выглядит готовый к использованию бот

Зачем нужен бот в Телеграме

Потратьте немного времени и сделайте бесплатного бота в Телеграме, чтобы освободить себя от рутинной работы. Этот маленький помощник будет выполнять простую работу по общению с пользователями: разговаривать с ними, отправлять новые коллекции и отвечать на стандартные вопросы 24/7. Он не устает и не оставляет без внимания сообщения подписчиков, всегда отвечает им и создает уютную атмосферу, пока владелец занят более важными задачами.

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

Бот в Телеграме помогает подписчикам:

  • искать информацию;
  • читать и скачивать текстовые файлы;
  • искать и смотреть видео;
  • искать и слушать аудио;
  • комментировать статьи внутри мессенджера;
  • учиться – например, учить новые слова на иностранном языке.

Кроме того, бот умеет:

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

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

В Телеграме и других соцсетях можно публиковать посты через сервис отложенного постинга SMMplanner. Вы можете планировать публикации одновременно в ВК, Одноклассники, другие соцсети и Телеграм. Это очень удобно – оцените сами. Тестировать весь функционал можно бесплатно в течение 2 недель после регистрации по ссылке – SMMplanner.

Подробно о том, как настроить автопостинг и зачем он нужен, – в статье «Автопостинг в Телеграме: боты, сервисы, возможности».

Одно из главных преимуществ любого бота в Телеграме – его не нужно устанавливать на устройство. Он работает прямо в мессенджере и там остается всегда.

Есть много способов создать бота в Телеграме: на телефоне или ПК, платных и бесплатных, с помощью программирования или конструкторов. А можно – вообще без знания кодов, на телефоне за пару часов.

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

Как сделать бота в Телеграме с помощью телефона

Заходим в Телеграм, в строке «Поиск» находим BotFather – это конструктор чат-ботов в Телеграме, нажимаем «Старт».

Хочешь сделать бота – найди бота, который их создает

Хочешь сделать бота – найди бота, который их создает

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

Бот пришлет сообщение, что поможет создать и управлять вашими ботами. А чтобы создать нового, нужно нажать на /newbot.

В большом количестве вариантов выбираем нужный

В большом количестве вариантов выбираем нужный

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

Если придуманное имя уже существует, BotFather предложит придумать другое, уникальное.

В нашем случае тренировочный бот выступает в качестве магазина одежды. Поэтому мы дали ему название – Showroom «Чёткие шмотки».

После того, как новый бот получил свое имя, а BotFather его принял, он предложит придумать никнейм – это будет ссылка на нового робота в Телеграмме. В нашем случае мы просто перевели название на английский и отправили главному боту.

Робот родился, но он еще ничего не умеет. Ему еще предстоит научиться говорить и ходить.

У каждого бота есть токен – уникальная строка из символов, которая нужна, чтобы установить подлинность робота в системе. Его следует скопировать и не терять.

Желтым прямоугольником выделен токен бота

Желтым прямоугольником выделен токен бота

Все остальное на английском и нам пока не нужно.

Далее листаем чат с BotFather вверх и находим там ссылку /mybots или вводим ее вручную. Выбираем нашего готового бота и нажимаем на него.

Если у вас несколько ботов, то и для выбора главный бот предоставит несколько вариантов

Если у вас несколько ботов, то и для выбора главный бот предоставит несколько вариантов

В этом разделе старший бот предлагает различные варианты действий с новичком, сейчас нас интересует настройка облика и команд бота.

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

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

Для первой настройки нужно нажать Edit Bot. В этом разделе можно редактировать:

  • имя;
  • описание;
  • информацию;
  • картинку бота.

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

Как сделать приветствие в боте в Телеграме? Для создания/редактирования описания бота нужно нажать Edit Description, чтобы BotFather понял, что нам нужно изменить описание бота. После выбора этой функции главный бот пришлет сообщение с предложением ввести описание, которое увидят люди, когда откроют чат с новым ботом в блоке под названием «Что может делать этот бот?»

Заполняем Description – описание бота

Заполняем Description – описание бота

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

Заполняем поле Description и сохраняем изменения

Заполняем поле Description и сохраняем изменения

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

После того, как мы придумали описание, выбираем Edit About, чтобы ввести информацию о боте.

Заполняем поле «Описание» или About

Заполняем поле «Описание» или About

BotFather пришлет сообщение с предложением создать описание программы, которое увидят пользователи, когда зайдут в профиль нового бота. Как сделать текст в боте Телеграма – вписать его и сохранить.

Информация о боте готова, текс можно увидеть в чате с BotFather на картинке. Переходим к созданию аватарки.

Выбираем кнопку Edit Botpic, затем нажимаем скрепку, чтобы выбрать фото из галереи и отправляем его главному боту. Также можно сделать фото и использовать его.

Для выбора доступна вся ваша галерея

Для выбора доступна вся ваша галерея

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

Картинку можно посмотреть в боте, выглядит интересно

Картинку можно посмотреть в боте, выглядит интересно

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

Пора научить новичка командам. Выбираем пункт меню Edit Commands и получаем от бота такое сообщение: «ОК. Пришлите мне список команд для вашего бота, используя этот формат: command1 – описание; command2 – другое описание. Либо отправьте /empty, чтобы список оставался пустым».

Действуем, как говорит нам БотОтец – прописываем последовательно каждую команду

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

Мы создали одну команду и назвали ее «О нас» – для проверки работоспособности. А дальше для настройки действий, меню и команд перешли в Manybot. Так проще. Вы можете поступить как вам удобно.

В Телеграме можно сделать даже свои стикеры. Для бизнеса или для личного использования, порадовать клиентов или посмешить друзей – все на ваше усмотрение. О том, как их делать, мы говорили в статье «Как сделать свои стикеры в Телеграме».

Как настроить нового бота с помощью Manybot

В 2022 году есть еще один конструктор для чат-ботов в Телеграме. Находим Manybot, жмем «Старт» и после приветственного сообщения нажимаем «Добавить нового бота».

Бот говорит с нами на русском, это намного удобнее

Бот говорит с нами на русском, это намного удобнее

Manybot предложит вам перейти в чат с BotFather и скопировать токен своего бота.

Переходим, копируем, нажимаем «Я скопировал токен».

Описание деятельности

После того, как Manybot принял токен нового бота, он предложит коротко описать, чем будет заниматься вновь прибывший бот, но этот момент можно пропустить, нажав команду /skip, как это сделали мы. Тем более, что мы уже описывали это через БотаОтца.

Кликаем на «Я скопировал токен»

Кликаем на «Я скопировал токен»

Далее от Manybot придет сообщение, что новый бот создан и настроен. Затем он предложит отправить сообщение вашим подписчикам с ссылкой на вашего бота.

Кликаем на /skip или прописываем описание заново

Кликаем на /skip или прописываем описание заново

Отправка первого сообщения подписчикам

Конечно, вы можете нажать «Отправить новое сообщение подписчикам», создав какой-нибудь пост. Но какой в этом смысл, если бот еще новичок и ничего пока не умеет? Правильнее и логичнее будет сделать рассылку позже, когда бот будет готов выполнять команды и принимать гостей. Поэтому мы переходим к настройке команд.

Настройка команд

Нажимаем на имя нового бота и переходим в его чат. Теперь разберемся, как сделать меню в боте в Телеграме.

В чате выбираем пункт «Создать команду». Бот ответит вам, что вы можете создавать разные команды, на которые он будет отвечать заранее заданным образом.

Кликаем на «Создать команду»

Кликаем на «Создать команду»

Команда создается так же, как и в BotFather – вводим commands и номер. У нас команда уже пятая, так как мы тренировались и настраивали бота и его команды.

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

После запроса commands нужно нажать «Добавить вопрос» и выбрать вариант вопроса.

Бот может отвечать словами или файлами – как настроите

Бот может отвечать словами или файлами – как настроите

Есть 3 типа вопросов:

  • обычные;
  • развернутые;
  • с вариантами ответов.

Вы можете выбрать любой удобный. Бот все подробно и на русском языке поясняет.

Мы выбираем «Обычный вопрос», и наш бот будет отвечать любому подписчику, который пришлет ему текст, символ или даже картинку.

А что будет отвечать наш бот?

Аналогично настраиваются 2 других варианта

Аналогично настраиваются 2 других варианта

Даем произвольное название нашему обычному вопросу – «Головные уборы», загружаем картинку из галереи и нажимаем «Сохранить». То, что будет написано, покажется пользователям, которые будут запрашивать этот пункт.

Обязательно кликаем на «Сохранить»

Обязательно кликаем на «Сохранить»

Если понадобится отредактировать, нужно в меню бота выбрать пункт «Пользовательские команды» и выбрать ту команду, которую хотите изменить. В любой момент вы можете изменить название, режим и варианты ответов, настроить меню команды.

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

Настройка видимости команды

Выбираем «Настроить гл. меню», а затем «Добавить пункт меню».

У нас это уже не первая команда в настройке, поэтому не удивляйтесь, что у вас количество кнопок намного меньше, это только пока

У нас это уже не первая команда в настройке, поэтому не удивляйтесь, что у вас количество кнопок намного меньше, это только пока

Вводим название пункта меню «Головные уборы», отправляем боту это сообщение, и готовый пункт с этим названием появляется в меню.

Команда готова к использованию, ничего сложного

Команда готова к использованию, ничего сложного

Остальные пункты меню были созданы ранее тем же способом. Чтобы поменять их местами, в этом же меню выбираем нужную для перемещения команду и с помощью кнопок, которые будут доступны, перемещаем.

Как выглядит готовый к использованию бот

Вот так выглядит наш готовый бот с аккаунта подписчика:

Он рассказывает, что умеет делать, отвечает на команды

Он рассказывает, что умеет делать, отвечает на команды

Выбираем команду «О нас», чтобы посмотреть, поймет ли читатель, куда попал. И получаем ответ от бота «О нашей компании».

Можно ему ответить любым текстом и получаем в ответ: «Пример текста. Наша компания занимается…» Это то, что мы указали в настройках. Вы можете здесь написать все что угодно о своей компании. Старайтесь рассказывать коротко, но понятно. Или просто вставьте ссылку на свой сайт, чтобы люди могли туда зайти и почитать подробнее. Перегружать чат многостраничными сообщениями об «активно развивающейся компании» не стоит, человек вряд ли пришел за этим. А если ему очень интересно, он почитает на сайте.

«О нас» почитали, можно переходить и к делу – посмотрим на «головные уборы»

«О нас» почитали, можно переходить и к делу – посмотрим на «головные уборы»

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

Популярный и короткий вопрос «Еще?» может побуждать пользователя продолжать общение

Популярный и короткий вопрос «Еще?» может побуждать пользователя продолжать общение

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

Таким же образом работают остальные кнопки

Таким же образом работают остальные кнопки

Головные уборы рассмотрели, а что там в пункте «Одежда»? Он настроен аналогично предыдущему, присылает картинки и общается с пользователем. Можно настроить сложную ветвь вариантов ответов, ведущих к разным пунктам и папкам. В ней подписчик будет плавно переходить к покупке, подписке или регистрации.

Все варианты модной одежды к вашим услугам

Все варианты модной одежды к вашим услугам

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

Если нужно подробно изучить чат-боты и рассылки в ВК, приходите на 14-дневный практический курс «Рассылки, чат-боты и автоворонки ВКонтакте» от SMM.school. Там научитесь автоматизировать работу с помощью Senler, запускать рассылки, прогревать и продавать во ВКонтакте. Это самое актуальное руководство по автоматическим инструментам для продвижения бизнеса в ВК на данный момент.

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

#Руководства

  • 14 сен 2022

  • 0

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

Иллюстрация: Polina Vari для Skillbox Media

Антон Яценко

Изучает Python, его библиотеки и занимается анализом данных. Любит путешествовать в горах.

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

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

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

aiogram

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

python-telegram-bot

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

TeleBot

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

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

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

  • установить Python и настроить виртуальное окружение;
  • зарегистрировать бота в специальном Telegram-канале @BotFather;
  • установить библиотеку aiogram;
  • написать код эхо-бота, связав его по API с Telegram.

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

python --version

Если Python установлен, то терминал покажет его версию:

Скриншот: aiogram / Skillbox Media

На Windows требуется установка Python. Сделать это проще всего по нашей инструкции.

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

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

sudo pip3 install virtualenv

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

mkdir telegram_bot
cd telegram_bot

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

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

virtualenv venv -p python3

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

source venv/bin/activate

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


Для создания бота необходимо воспользоваться Telegram и ботом @BotFather. Откройте мессенджер и введите название бота в поисковой строке:

Скриншот: aiogram / Skillbox Media

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

Скриншот: aiogram / Skillbox Media

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

Скриншот: aiogram / Skillbox Media

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


Для установки aiogram воспользуемся менеджером пакетов pip. Вводим в терминал:

pip install aiogram

Важно! Библиотека устанавливается в созданное ранее виртуальное окружение, связанное с папкой telegram_bot. Если вы решите создать нового бота в другой директории на компьютере, то установку будет необходимо провести заново, иначе aiogram не будет работать.


Писать код на Python лучше всего в IDE, а не в окне терминала. В проекте ниже мы будем использовать бесплатный редактор Visual Studio Code, но вы можете воспользоваться любым удобным для вас инструментом.

Откроем IDE и создадим файл main.py. Для этого проекта нам потребуется только он. Импортируем из aiogram нужные классы и модуль:

from aiogram import Bot, Dispatcher, executor, types

Разберёмся, что каждый из них делает. Начнём с классов:

  • Bot определяет, на какие команды от пользователя и каким способом отвечать;
  • Dispatcher позволяет отслеживать обновления;
  • Executor запускает бота и выполняет функции, которые следует выполнить.

Модуль types позволит нам использовать базовые классы для аннотирования, то есть восприятия сообщений. Например, мы будем использовать types.Message, позволяющий работать с приёмом текстовых сообщений пользователя. Подробно об этом можно прочесть в документации.

Импортируем наш токен, который поможет коммуницировать с API Telegram:

API_TOKEN = '5602787567:AAGYv7NrSjwyW7qPs_yvu70C060zrcfZDbQ' #В одинарных кавычках размещаем токен, полученный от @BotFather.

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

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

Настроим приветственное окно для нового пользователя, которое будет появляться при нажатии команды /start. Для этого создаём message_handler и прописываем функцию ответа:

@dp.message_handler(commands=['start']) #Явно указываем в декораторе, на какую команду реагируем. 
async def send_welcome(message: types.Message):
   await message.reply("Привет!nЯ Эхо-бот от Skillbox!nОтправь мне любое сообщение, а я тебе обязательно отвечу.") #Так как код работает асинхронно, то обязательно пишем await.

Теперь при нажатии на кнопку Начать или при вводе команды /start пользователь будет получать от бота приветственное сообщение.

Разберёмся в коде:

  • message_handler — это декоратор, который реагирует на входящие сообщения и содержит в себе функцию ответа. Декоратор — это «обёртка» вокруг функций, позволяющая влиять на их работу без изменения кода самих функций. В нашем случае мы управляем функцией, считая команды пользователя;
  • commands=[‘start’] — это команда, которая связана с декоратором и запускает вложенную в него функцию;
  • async def send_welcome — создаёт асинхронную функцию, которая принимает в себя сообщение пользователя message, определяемое через тип Message. Саму функцию можно назвать любым образом. Мы выбрали send_welcome, чтобы название было понятным и осмысленным;
  • await message.reply — определяет ответ пользователя, используя await из-за асинхронности работы библиотеки.

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

@dp.message_handler() #Создаём новое событие, которое запускается в ответ на любой текст, введённый пользователем.
async def echo(message: types.Message): #Создаём функцию с простой задачей — отправить обратно тот же текст, что ввёл пользователь.
   await message.answer(message.text)

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

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

Остаётся последний этап — настроить получение сообщений от сервера в Telegram. Если этого не сделать, то мы не получим ответы бота. Реализовать получение новых сообщений можно с помощью поллинга. Он работает очень просто — метод start_polling опрашивает сервер, проверяя на нём обновления. Если они есть, то они приходят в Telegram. Для включения поллинга необходимо добавить две строчки:

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

Всё, теперь код нашего бота полностью готов:

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)

Сохраняем его в нашей папке telegram_bot под именем main.py.


Для запуска бота нам необходим терминал. Открываем его и переходим в нашу папку telegram_bot. После этого вводим команду:

python3 main.py

В ответ терминал пришлёт сообщение, что обновления успешно пропущены:

Скриншот: aiogram / Skillbox Media

Находим нашего бота в Telegram по имени @echo_skillbox_bot и запускаем его, нажав на кнопку Начать. В ответ на это или на команду /start нам придёт приветственное сообщение:

Скриншот: aiogram / Skillbox Media

Попробуем написать что-то:

Скриншот: aiogram / Skillbox Media

Как мы видим — всё работает. Бот возвращает нам наши сообщения.

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

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

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

Участвовать

Научитесь: Профессия Python-разработчик
Узнать больше

Илья Гринзовский

помогал во всем разобраться

Профиль автора

«Телеграм» — самое быстрорастущее приложение 2022 года в России.

За последние шесть месяцев суточная аудитория мессенджера выросла на 66%. Теперь и новые пользователи, и пришедший вслед за ними бизнес знакомятся с одной из главных особенностей «Телеграма» — тысячами местных ботов.

Ботов делают все: команда мессенджера, компании, обычные люди. Они популярны и на рынке разработки: на платформе Kwork более тысячи фрилансеров предлагают создать бота. Цены разные: от 500 до 500 тысяч рублей в зависимости от сложности задачи. Далеко не все готовы тратить такие деньги или изучать программирование ради создания бота. Поэтому появилось множество платформ, освоение которых не требует особых навыков.

Я узнал, как бесплатно создать телеграм-бота, и попробовал самостоятельно сделать это в разных ноукод-сервисах. Но для тех, кто разбирается в программировании, есть бонусный раздел: там я при помощи разработчика Ильи Гринзовского пошагово рассказываю о создании небольшого бота на Python.

Что вы узнаете из материала

  • Какие бывают телеграм-боты
  • Какие навыки нужны, чтобы написать своего бота
  • Как зарегистрировать нового бота
  • Как сделать собственного бота без навыков программирования
  • Пробуем сделать бота с нуля на Python

Какие бывают телеграм-боты

Телеграм-боты — это мини-программы внутри мессенджера, которые управляются текстовыми командами в чате по принципу «вопрос — ответ». Подобная технология была еще в «Аське» конца нулевых: боты присылали анекдоты, гороскопы, статьи из «Википедии» и переводили тексты.

С 2015 года любой пользователь может сделать собственного бота в «Телеграме». Со временем они становились все сложнее и функциональнее: с помощью ботов можно управлять сообществами, бронировать места в кафе, переводить тексты и войсы, скачивать файлы, обрабатывать платежи. Некоторые даже используют нейросети: например, ruDALL-E Malevich от «Сбера» генерирует картинку по описанию, которое можно отправить прямо в чат.

В апреле 2022 года команда «Телеграма» представила второе поколение ботов: разработчики получили средства для полноценных интерфейсов на JavaScript внутри мессенджера. Такие боты уходят от стандартной модели «вопрос — ответ в чате» и заменяют целые сайты. Вот как это выглядит в тестовом приложении для заказа еды.

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

Ботов можно разделить на несколько категорий.

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

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

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

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

Развлечения. Все, что поможет скрасить досуг: мемы, частушки, игры и не только.

Какие навыки нужны, чтобы написать своего бота

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

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

Создать бота с помощью кода. Бота можно написать на любом языке программирования — от PHP и Node.js до Java и Go. Самым популярным считается Python, потому что в его экосистеме много открытых библиотек и готовых решений. К тому же он относительно легок в изучении. Особенно подойдет новичкам: достаточно понять логику синтаксиса и отступов.

Далее нужно установить пакет python-telegram-bot — это обертка для API от «Телеграма». В документации этого фреймворка описана вся необходимая информация для разработки бота. Также понадобится любой текстовый редактор для написания кода.

Создать бота с помощью ноукод-платформы. Для создания ботов в конструкторе достаточно базовых знаний веб-приложений. Если вы владеете Figma, Miro, Asana или перетаскивали карточки в Trello, то легко сможете составить бота из наглядной цепочки блоков в конструкторе.

Визуальный редактор помогает сориентироваться даже новичку — вот так это выглядит в сервисе Botmother. Источник: botmother.com

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

Обычно в бесплатной версии ноукод-сервисы позволяют создать одного бота. Но будет ограничение либо по количеству доступных команд, либо по количеству пользователей. Так что полностью бесплатно создать классного бота не выйдет.

Популярные платформы для телеграм-ботов: сравниваем пять конструкторов

Что умеет Цена Что в платной версии Что в бесплатной версии
Manybot Конструктор внутри «Телеграма». Позволяет создать многоуровневое меню, форму обратной связи и «подтягивать» новости по RSS В боте есть встроенная реклама. Отключить ее нельзя
PuzzleBot Платформа для создания сложных ботов, магазинов, инструментов модерации. В сервисе есть техподдержка, инструкции и личный кабинет От 552 Р в месяц Чем дороже тариф, тем больше доступно ботов, шире лимит подписчиков и команд Можно создать одного бота и настроить до 15 команд. Также стоит ограничение до 150 подписчиков
Botobot Сервис ориентирован на ретейл: можно сделать каталог, корзину, форму оплаты, чат поддержки. Также на платформе есть кабинет аналитики продаж От 320 Р в месяц Увеличивается лимит на товары и появляются новые функции, например поиск по каталогу и доступ к API Можно создать одного бота и опубликовать в нем не более 20 товаров
Unisender На платформе есть готовые шаблоны для разного бизнеса: для доставки еды или записи в салон красоты. А также интеграции с amoCRM, «Google-таблицами», «Битрикс24» и не только От 800 до 16 000 Р в месяц Увеличивается лимит подписчиков Можно оздать бота и пользоваться им, пока у вас менее тысячи подписчиков
BotTap В конструкторе можно создать магазин, бота для сбора обратной связи, рассылок и онлайн-записи. Есть интеграции с платежными системами Qiwi, «ЮKassa», «ЮMoney» и другими От 99 Р в месяц Бот с меню, текстовыми сообщениями и картинками. Но в нем будет реклама и не будет статистики. Более дорогие тарифы добавляют функции, расширяют лимиты и отключают рекламу

Что умеет

Конструктор внутри «Телеграма». Позволяет создать многоуровневое меню, форму обратной связи и «подтягивать» новости по RSS

Что в бесплатной версии

В боте есть встроенная реклама. Отключить ее нельзя

Что умеет

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

Что в платной версии

Чем дороже тариф, тем больше доступно ботов, шире лимит подписчиков и команд

Что в бесплатной версии

Можно создать одного бота и настроить до 15 команд. Также стоит ограничение до 150 подписчиков

Что умеет

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

Что в платной версии

Увеличивается лимит на товары и появляются новые функции, например поиск по каталогу и доступ к API

Что в бесплатной версии

Можно создать одного бота и опубликовать в нем не более 20 товаров

Что умеет

На платформе есть готовые шаблоны для разного бизнеса: для доставки еды или записи в салон красоты. А также интеграции с amoCRM, «Google-таблицами», «Битрикс24» и не только

Цена

От 800 до 16 000 Р в месяц

Что в платной версии

Увеличивается лимит подписчиков

Что в бесплатной версии

Можно создать бота и пользоваться им, пока у вас менее тысячи подписчиков

Что умеет

В конструкторе можно создать магазин, бота для сбора обратной связи, рассылок и онлайн-записи. Есть интеграции с платежными системами Qiwi, «ЮKassa», «ЮMoney» и другими

Что в платной версии

Бот с меню, текстовыми сообщениями и картинками. Но в нем будет реклама и не будет статистики. Более дорогие тарифы добавляют функции, расширяют лимиты и отключают рекламу

Что в бесплатной версии

Как зарегистрировать нового бота

Определившись с платформой, необходимо зарегистрировать бота. Для этого, как ни странно, нужен другой бот. BotFather — официальный сервис для настройки и управления созданными телеграм-ботами. Он не занимается конкретными функциями и командами — только косметическими изменениями вроде названия, описания и аватарки.

Но главное — он выдает уникальный токен, который необходим для авторизации бота и работы с Bot API. Любой, кто получит токен, сможет управлять ботом. Так что храните его в надежном месте и никому не передавайте — в противном случае лишитесь доступа к собственному боту.

Как получить токен в BotFather:

  1. Отправьте в чат с BotFather команду /newbot.
  2. Введите название бота — в этой категории особых ограничений нет.
  3. Введите юзернейм бота — его техническое имя, которое будет отображаться в адресной строке. К нему уже больше требований: юзернейм должен быть уникальным, написан на латинице и обязательно заканчиваться на bot. Так «Телеграм» защищается от злоумышленников, которые могут выдавать ботов за реальных людей.
  4. Готово. BotFather пришлет токен бота — его можно использовать для настройки в сторонних сервисах.
Я создал бота для тестирования, выбрал ник @testunisenderbot, получил токен, переименовал в «Оцените ресторан»

О каких еще функциях стоит знать. Уже после получения токена можно воспользоваться BotFather, чтобы настроить внешний вид бота. Вот несколько полезных команд:

  1. /setdescription — меняет описание бота, пользователи увидят его в начале диалога в графе «Что умеет этот бот?». Есть ограничение в 512 символов.
  2. /setabouttext — тоже меняет описание, но другое — то, которое видно в профиле бота. Лимит — 120 символов.
  3. /setuserpic — меняет аватарку.
  4. /setcommands — меняет список команд бота. Тут нельзя установить конкретные функции и за что они отвечают — лишь количество команд и как они называются.
  5. /setjoingroups — устанавливает, можно ли добавлять бота в групповые чаты. Настройка зависит от ваших целей.
  6. /setprivacy — устанавливает уровень доступа бота к перепискам. Если приватность включена, бот видит только сообщения, которые обращены к нему. Если отключена — все сообщения. «Телеграм» рекомендует не отключать параметры приватности.
  7. /deletebot — удаляет бота и освобождает юзернейм.
Небольшая переписка с BotFather — и теперь у меня есть еще и бот-магазин

Как сделать собственного бота без навыков программирования

В качестве примера я взял две популярные ноукод-платформы — Unisender и PuzzleBot. В первом случае бесплатно создадим бота, который будет собирать оценки и отзывы посетителей ресторана. Во втором случае сделаем мини-магазин.

Как создать бота в Unisender. Зарегистрируйтесь и перейдите в меню «Чат-боты» в личном кабинете. Бота можно создать либо с нуля, либо через шаблоны — второй вариант быстрее и проще. Во вкладке «Шаблоны» сервис предложит создать ботов для записи клиентов, рекламы вебинара или риелторских услуг.

Я выбрал шаблон «Отзывы клиентов о салоне красоты»

После выбора появится интерфейс с наборами готовых блоков — в них можно менять текст и структуру. Редактировать можно всю цепочку: удалять блоки, добавлять новые, встраивать меню с кнопками, теги, фильтры и формы для сбора данных.

Вот какой сценарий я прописал для бота — сборщика отзывов:

Приветствие → Меню с просьбой оценить обслуживание. Здесь бот показывает кнопки с пятью вариантами ответов: от «очень доволен» до «очень недоволен» → Ветка раздваивается на позитивный и негативный варианты. Позитивный — прошу пользователя оставить отзыв на «Яндекс.Картах», Google Maps и других платформах. Негативный — прошу написать в чате, что именно не понравилось.

Так выглядит итоговая блок-схема
После нужно нажать «Запустить» и ввести токен от BotFather. Все — бот готов к работе, можно открыть его в «Телеграме»

Как создать бота в PuzzleBot. Создайте нового бота в BotFather, скопируйте токен и добавьте в PuzzleBot — сервис запросит его сразу после регистрации.

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

Далее откройте список товаров, нажмите кнопку «Добавить» и оформите карточки товаров: добавьте фото, описание, цену, количество — и разбейте их по категориям.

Я оформил две карточки: для футболок и шорт

Далее перейдите во вкладку «Конструктор». Интерфейс похож на Unisender, но тут больше функций: можно добавить кнопки, карточки товаров, блоки с текстом, картинкой, геолокацией, видео и не только. В PuzzleBot есть видеообзоры каждого раздела платформы — помогут сориентироваться.

Для магазина я прописал следующий сценарий.

Приветствие и меню. В блоке «Текст» кратко описал магазин. Ниже платформа предложила две клавиатуры: обычную, кнопки которой появятся в «Телеграме» вместо стандартной текстовой клавиатуры, и инлайн — кнопки отобразятся внутри чата, под сообщением.

Я выбрал обычную клавиатуру и создал три кнопки: «Футболки», «Шорты» и «Посмотреть фото».

Тут снова приходится работать с блок-схемой

Кнопки. Перед тем как добавить кнопки «Футболки» и «Шорты», я создал для них отдельные команды: нажал «+» в левом верхнем углу, дал название командам и в настройках в пункте «Блоки для бота» выбрал соответствующий товар.

Затем вернулся к предыдущей команде, сделал кнопки «Футболки» и «Шорты», выбрал действие «Переход к команде или условию» и связал их с командами.

Теперь обе кнопки ведут на карточки товаров — их пользователь может добавить в корзину и купить прямо внутри бота. Все функции, необходимые для корректной работы корзины, оформления доставки и оплаты, уже «вшиты» в карточки, их не нужно прописывать отдельно.

Последняя кнопка «Посмотреть фото», по задумке, ведет на внешний сайт — например, на страницу во «Вконтакте»
Чтобы сохранить все правки, нужно нажать «Применить изменения» в верхнем левом углу. После этого бот будет готов к работе. Вот что у меня получилось

Предупреждаем: дальше мы пошагово рассказываем о процессе создания бота на Python. Этот раздел мало чем поможет людям без навыков программирования. Если это про вас, то можете сразу переходить к итогам.

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

Пошагово рассказываем, как создавали бота.

Объявляем класс приложения AppBot.

Определяем метод _init_. — он инициализирует объекты, которые будут использоваться внутри класса. В качестве аргумента принимает токен от BotFather.

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

Следом создаем экземпляр класса RubleExchangeRate, который отвечает за курс обмена рубля. Этот курс подтягивается из публичного API, который парсит официальные данные Центробанка.

Далее инициализируем dispatcher — маршрутизатор для входящих сообщений бота.

Определим метод serve. Он нужен, чтобы запустить «поллинг» — процесс, когда алгоритм забирает у «Телеграма» новые сообщения и обрабатывает.

Вводим методы-обработчики, которые описывают реакцию бота на входящие сообщения. Вернемся на шаг назад. При определении метода _init_ мы указали маршрутизатору dispatcher, что start_handler реагирует на команду запуска бота /start.

В обработчике start_handler формируется список кнопок с названиями курсов валют и текстовое приветствие. То есть после запуска бота пользователь получит сообщение «Привет! Это бот курса рубля» и набор кнопок на клавиатуре.

Когда пользователь нажимает одну из кнопок, он отправляет текстовое сообщение боту. Чтобы на текст реагировал обработчик response_handler, нужно при добавлении в маршрутизатор disptacher «обернуть» его в MessageHandler и использовать фильтр Filters.text.

Реализуем response_handler: метод-обработчик принимает аргумент update — объект, который содержит информацию о входящем сообщении пользователя, и context — объект, хранящий вспомогательный контекст.

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

Отдельно описываем RESPONSE_TO_CURRENCY_CODE_MAP. Это структура (словарь), в которой содержатся условия: если пользователь прислал текст RUB/USD, мы отправим ему данные о долларах, если текст RUB/EUR — о евро.

В цикле перебираются ключи словаря RESPONSE_TO_CURRENCY_CODE_MAP, и если какой-то совпадает с тем, что прислал пользователь, то в ответ он получит соответствующий курса рубля. Для этого вызывается функция RubleExchangeRate.get, которая ходит во внешний API.

Полученные данные присылаем в ответе:

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

Реализуем класс, который ходит во внешний API. У него есть сессия (Session), хранящая общие параметры для запросов и позволяющая выполнять запросы чуть быстрее с помощью механизма HTTP keep-alive.

Главное в этом блоке — метод .get.

.get(‘https://www.cbr-xml-daily.ru/daily_json.js’).json() означает, что выполняется HTTP GET запрос по указанному адресу и затем ответ на этот запрос будет интерпретироваться как JSON — текстовый формат нотации для сериализации объектов.

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

И дополнительно: зачем нужен декоратор @ttl_cache? Кэширование — это механизм, который позволяет сохранить данные для дальнейшего переиспользования. Например, если мы знаем, что у внешнего API есть ограничение по количеству вызовов (RPS — количество запросов в секунду), что отставание курса рубля от API на n минут не критично для бизнес-логики бота и что при использовании нашего бота пользователи могут сгенерировать больше запросов, чем порог RPS у внешнего API, то стоит использовать кэширование.

Иначе может сломаться бот или API из-за множества запросов или вовсе могут забанить в сервисе, предоставляющем API, за нарушение его правил.

Финальный код можно запустить и тестировать уже в «Телеграме». Бот будет работать, пока запущен алгоритм и работает компьютер. Но такой формат подойдет только для теста — для полного развертывания понадобится облачный сервер. Есть множество решений на российском рынке: Yandex Compute Cloud, Cloud Servers от VK, 1cloud и другие.

Также мы полностью загрузили финальный код бота на «Гитхаб» для ознакомления.

Что в итоге

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

Бота не нужно загружать на сервер, он будет работать автономно на стороне платформы. Чтобы программа заработала, не забудьте зарегистрировать бота в «Телеграме» — для этого есть официальный сервис.

В сервисах-конструкторах обычно разрешают создать одного бота бесплатно. Но не надейтесь, что можно сделать популярного бота без вложений: действуют ограничения по количеству команд и пользователям. Чтобы расширить возможности бота, придется подключить платный тариф — в среднем от 500 рублей в месяц.

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

На рынке цены разные — от 500 рублей до бесконечности, в зависимости от сложности задачи. Также необходимо будет вложиться в аренду сервера, загрузить на него бота и поддерживать работоспособность.

Мы постим кружочки, красивые карточки и новости о технологиях и поп-культуре в нашем телеграм-канале. Подписывайтесь, там классно: @t_technocult.

Чат-боты – это специальные программы для общения бизнеса с клиентом. Они позволяют автоматизировать процессы, сэкономить время и деньги, поэтому становятся всё более популярными.

Есть два варианта создать своего чат-бота: программировать с нуля или воспользоваться конструктором. Первый вариант дает максимальную функциональность и кастомизацию. Но требует специальных навыков или немало денег на разработку, поэтому подходит далеко не всем. А вот сделать простого чат-бота в конструкторе сможет каждый.

Как сделать Telegram-бота в конструкторе

Я решила показать, как создать бота в Telegram, на примере сервиса ManyChat. Сервис на английском, но интуитивно понятен для новичка. К тому же бесплатная версия позволяет создать чат-бота для 1 000 пользователей, а без ограничений сервис можно попробовать бесплатно в течение 7 дней.

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

Начало работы

Чтобы воспользоваться возможностями сервиса, нужно сперва зарегистрироваться. Для этого нажмите на кнопку «Get Started Free».

pic

Бесплатный старт – то, что нам нужно

Далее вам нужно выбрать соцсеть или приложение, для которого вы будете создавать чат-бота. В нашем случае это Telegram.

pic

Создаем бота для Telegram, соответственно, его и нужно выбирать

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

pic

Жмем на «Continue With Telegram»

Сервис направит вас в приложение Telegram, после перехода откроется диалог с ботом ManyChat. Нажмите кнопку «Запустить».

pic

Авторизация через Telegram необходима, чтобы можно было добавить бота в конструктор и затем редактировать его

Ссылка, которую пришлет бот, направит вас на страницу регистрации, где нужно будет ввести свой e-mail и нажать «Next» (следующий шаг).

pic

Подтверждение почтового ящика – обязательная процедура при регистрации новых аккаунтов

Теперь проверьте почтовый ящик, скопируйте код и вставьте его в появившееся поле.

pic

Если письмо не приходит, воспользуйтесь опцией «Change email address» (сменить e-mail)

Далее будет необходимо заполнить небольшую анкету. К каждому вопросу есть несколько вариантов на выбор. Необязательно указывать свои точные данные – достаточно, чтобы все поля просто были заполнены.

pic

Когда ответы готовы, нажимаем «Next»

Теперь нужно подключить существующего бота или добавить нового.

pic

Других ботов можно будет подключить уже в профиле

Если бот у вас уже есть, нужно ввести его токен. В противном случае выберите «Create New Bot». Хотя в любом случае сделать бота с нуля прямо в конструкторе нельзя — будут даны лишь инструкции по Telegram: начать диалог с @BotFather, отправить ему команду /newbot и следовать дальнейшим указаниям.

Когда бот будет готов, введите его токен в специальное поле и нажмите «Connect».

pic

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

Следующий шаг – предложение сервиса попробовать платную версию бесплатно в течение 7 дней. Если пока вам это не нужно, выберите «Skip For Now».

pic

При желании вы сможете оплатить полную версию позже в личном кабинете

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

pic

На последний вопрос, где нужно поставить галочку, отвечать необязательно

Конечный шаг – вопрос разработчиков о том, как вы будете использовать сервис. Его можно пропустить – нажимаем «Skip».

pic

Каждый раз, когда видите опцию «Skip» (пропустить), выбирайте ее – она поможет сэкономить время

Регистрация завершена, мы попадаем в личный кабинет. Здесь нас прежде всего интересует конструктор, поэтому остановимся на вкладке «Automation» (автоматизация).

pic

У сервиса много полезных функций, но запустить первого чат-бота можно в меню «Automation»

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

Для начала создадим приветственное сообщение бота. В разделе «Basic Automations» выбираем «Welcome Message».

pic

Welcome Message – то, что бот отправляет юзеру сразу после запуска

В области редактирования появится первый шаг — «Starting Step». При нажатии на элемент откроются настройки. Чтобы активировать приветственное сообщение, нажмите на переключатель. Иначе оно показываться не будет.

pic

Сперва жмем на «Starting Step», а затем активируем опцию

Чтобы редактировать элементы, кликните на «Edit Flow» в правой верхней части экрана.

pic

«Edit Flow» активирует режим редактирования сообщений

Теперь нужно добавить триггер – условие, при котором чат-бот должен прислать приветственное сообщение.

pic

Можно нажать на любую из этих кнопок

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

pic

«Telegram Keyword» – та самая нужная нам опция

Теперь щелкаем по кнопке, которая добавляет ключевые слова.

pic

Регистр не важен, можно писать как с большой буквы, так и с маленькой

Ключевых слов может быть несколько.

pic

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

Вовсе необязательно заставлять пользователя здороваться – можно придумать какую-то другую команду, которая будет вызывать меню. Например «меню» или «справка».

Выбор события

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

pic

Другие варианты нужны для создания более сложных ботов, их мы рассматривать не будем

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

На рабочей области появился новый элемент, связанный с предыдущим стрелочкой — «Next step» (следующий шаг). Это и есть наше сообщение. Нажмите на «Add a text», чтобы его отредактировать.

pic

Вы можете перемещаться по экрану с помощью перетягивания мыши, чтобы найти нужный элемент

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

pic

Кнопки и меню одновременно в одном сообщении создавать нельзя: придется выбрать что-то одно

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

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

Так, в приветственном сообщении можно обратиться к человеку по имени. Чтобы добавить эту переменную, щелкните на значок со скобками и в открывшемся списке выберите «First Name».

pic

Можно выбрать и полное имя — «Full Name»

Вместе с текстом должно получиться примерно так:

pic

Стандартный набор: переменная с именем юзера, приветственный текст и смайл

Чуть ниже добавляем кнопки меню. Нажимаем на плюс, вводим надпись на кнопку, выбираем в качестве события сообщение в Telegram и подтверждаем, что кнопка готова — «Done».

pic

При нажатии на кнопку юзер получит сообщение от бота

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

pic

Кнопка «Как сделать заказ» связана с элементом «Send Message #1» (прислать сообщение №1)

Добавим еще три кнопки и сохраним изменения. Для этого нажмите на «Publish» (опубликовать).

pic

Эту кнопку нужно нажимать обязательно, чтобы изменения вступили в силу

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

pic

Наше приветственное сообщение в Telegram

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

pic

«Select Existing Step» – выбрать существующий шаг

Главное, не перепутать и выбрать нужное сообщение в ответ на клик по соответствующей кнопке.

Вот как это будет выглядеть в мессенджере:

pic

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

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

pic

Вот как выглядит меню из обычных кнопок в Telegram

Настройка шаблонного ответа

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

pic

Выбираем Default Reply

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

pic

Кликните по Default Reply в стартовом шаге

Теперь нужно выбрать вариант «every time» (каждый раз).

pic

Две опции на выбор: каждый раз или каждые 24 часа

Тестируем работу бота: сообщение отправляется в ответ на любую комбинацию символов от юзера.

pic

Любое непонятное сообщение от пользователя будет вызывать стандартный ответ

Добавление реакций на ключевые слова

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

Чтобы создать новый сценарий, нужно нажать кнопку «New Flow».

pic

С помощью «New Flow» можно создать любой желаемый сценарий с нуля

В открывшемся окне введите название сценария и нажмите «Create» (создать).

pic

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

Здесь мы видим уже знакомую картину. Нажимаем на «Starting Step» и добавляем триггер, который вызовет сообщение бота. В данном случае им будет слово «справка».

pic

Можно перечислить несколько вариантов: «помощь», «поддержка» и так далее

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

Сервис позволяет также создавать цепочки сообщений. За них отвечает вкладка «Sequence» в разделе «Automation». Новую последовательность можно создать при помощи кнопки «New Sequence».

pic

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

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

pic

Не забудьте, что нужно также активировать сообщения с помощью переключателей в колонке «Active», чтобы бот начал выполнять свою работу

Бесплатная версия Manychat ограничена количеством контактов, с которыми взаимодействует бот (максимум 1 000). Посмотреть доступный лимит можно в нижнем левом углу личного кабинета.

pic

Если активировать полную версию, лимит будет увеличен

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

Где ещё можно создать чат-бота для Telegram, соцсетей, сайта

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

Unisender

Простой и довольно удобный конструктор чат-ботов от известного сервиса email-рассылок.

pic

Рабочая область недостаточно большая из-за нагромождения меню, но по ней можно перемещаться

Плюсы:

  • Русскоязычный интерфейс.
  • Есть бесплатный тариф.
  • Доступны 10 видов блоков, с которыми можно создавать ботов для самых разных целей.

Минусы:

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

Bot Kits

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

pic

Так выглядит шаблон бота, который отвечает на вопросы пользователя

Плюсы:

  • Доступная цена. Стандартный тариф стоит всего 390 рублей, а если нужен всего один бот, его можно создать бесплатно.
  • Сервис полностью на русском.
  • Есть два шаблона для старта: автоответчик и вопрос/ответ. Для самого простого бота этих сценариев достаточно.

Минусы:

  • Новичку будет сложно разобраться с конструктором. Если начинать разработку с нуля, без шаблона, придется потратить немало времени, чтобы сориентироваться в функциях.
  • На бесплатном тарифе есть ограничение: не более 100 исходящих сообщений в день.

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

pic

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

PuzzleBot

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

pic

Шаблон стартового сообщения, который предлагает PuzzleBot

Плюсы:

  • Русскоязычный интерфейс.
  • Удобное рабочее пространство, при запуске появляется шаблон стартового сообщения, который можно адаптировать под себя.
  • Помимо конструктора сервис предлагает другие полезные инструменты для Telegram. Например, отложенный постинг.
  • Есть база знаний, в которой можно найти ответ на любой вопрос, а также YouTube-канал с видеоуроками.

Минусы:

  • В бесплатной версии можно создать лишь одного бота на 150 контактов.
  • Сделать бота без предварительной подготовки вряд ли получится, придется потратить время на обучение.

Aimylogic

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

pic

Инструкции для бота создаются в разделе «Сценарий»

Плюсы:

  • Есть русскоязычная версия.
  • Интерфейс очень удобный: большая рабочая область, отсутствуют лишние элементы, с блоками легко взаимодействовать.
  • Можно тестировать бота в процессе разработки, чтобы проверить, все ли работает правильно.
  • Конструктор позволяет создавать интенты, с помощью которых проще понимать намерения пользователей и подбирать ответ в зависимости от того, что им действительно нужно.

Минусы:

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

Flow XO

Многофункциональный конструктор чат-ботов с бесплатной версией для 500 подписчиков.

pic

Пример сценария FAQ, который предлагает конструктор

Плюсы:

  • Есть готовые шаблоны сценариев для бизнеса, которые можно немного подкорректировать и использовать для своих целей.
  • Доступна визуализация сценариев – не придется после каждого изменения заходить в Telegram, чтобы проверить, как все выглядит и работает.
  • Есть возможность детально посмотреть взаимодействие пользователей со сценариями в меню «Interactions».

Минусы:

  • Интерфейс на английском.
  • В бесплатном режиме можно создать не более 5 ботов или сценариев.

ЭКСКЛЮЗИВЫ ⚡️
Читайте только в блоге Unisender

Поделиться

СВЕЖИЕ СТАТЬИ

Другие материалы из этой рубрики

документ

документ

Не пропускайте новые статьи

Подписывайтесь на соцсети

Делимся новостями и свежими статьями, рассказываем о новинках сервиса

«Честно» — авторская рассылка от редакции Unisender

Искренние письма о работе и жизни. Свежие статьи из блога. Эксклюзивные кейсы и интервью с экспертами диджитала.

unisender

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

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

  1. Настройка
  2. Hello, bot!
  3. Docker
  4. Деплой на AWS
  5. Заключение

Настройка

Откройте Telegram, найдите @BotFather и начните беседу. Отправьте команду /newbot и следуйте инструкциям. Вы получите:

  • свой токен;
  • адрес Telegram API (https://api.telegram.org/bot);
  • ссылку на документацию.

Обязательно сохраните токен, так как это ключ для взаимодействия с ботом.

Примечание Хранение токена должно быть локальным: ни в коем случае не выгружайте его в общий доступ, например в GitHub-репозиторий .

Далее начните беседу. Введите в поисковой строке имя бота и нажмите /start. Отправьте любое сообщение: оно станет первым обновлением, которое получит Телеграм бот.

Установка Python

Для написания Telegram-бота на Python, нужно установить сам язык. Если вы пользуетесь Windows, скачать Python можно с официального сайта. Версия важна. Нам подойдет Python не ниже версии 3.7. Если же у вас Linux или macOS, то, скорее всего, у вас стоит Python 3.6. Как обновиться, можете почитать здесь.

Тем, кто только начал изучение этого языка, будет также полезна дорожная карта 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:

@dp.message_handler(commands=['start', 'help'])
async def send_welcome(msg: types.Message):
    await msg.reply_to_message(f‘Я бот. Приятно познакомиться,
                               {msg.from_user.first_name}’)

Добавим ещё один обработчик для получения текстовых сообщений. Если бот получит «Привет», он также поздоровается. Все остальные сообщения будут определены, как нераспознанные:

@dp.message_handler(content_types=['text'])
async def get_text_messages(msg: types.Message):
   if msg.text.lower() == 'привет':
       await msg.answer('Привет!')
   else:
       await msg.answer('Не понимаю, что это значит.')

Запускаем 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"]

Каталог проекта должны при этом содержать следующие файлы:

  • bot.py;
  • Dockerfile.

Для локальных тестов достаточно установить 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 выглядит достаточно просто:

  1. Локально или с помощью пайплайнов собрали контейнер.
  2. Загрузили его на докер хаб.
  3. В любом удобном месте скачали его. Это может быть локальная машина, VPS сервер или облачный провайдер по типу AWS.
  4. Запустили.

Пройдёмся по этим шагам. Везде, где указано <docker_hub_username>, надо вставлять свой юзернейм, использованный при регистрации на докерхабе. Если это ваша первая публикация на докерхаб, для начала потребуется залогиниться с помощью docker login.

Билдим контейнер:

docker build -t <docker_hub_username>/my_app

Загружаем его на докерхаб:

docker push <docker_hub_username>/my_app

Для проверки успешности загрузки можете запустить контейнер из Docker Hub с помощью команды:

docker run -d <docker_hub_username>/my_app

Далее загрузим наш контейнер в AWS Elastic Beanstalk. Для этого потребуется аккаунт на AWS. Если его нет, необходимо зарегистрироваться. Вас попросят ввести данные карты для верификации, но переживать не стоит, ведь мы воспользуемся бесплатным годовым триалом. Чтобы поиграться, этого более чем достаточно, а вот если вы захотите вывести проект в продакшен, следует перейти на VPS — это даст больше контроля и гибкости.

  • Переходим в Elastic Beanstalk, на вкладку Applications, и создаём новое приложение:

Elastic Beanstalk вкладка Applications

  • Называем приложение, теги оставляем пустыми:

Называем приложение в Elastic Beanstalk

  • Создаём для приложения environment:

environment для будущего Telegram-бота

  • Выбираем Worker environment:

Worker environment для будущего Telegram-бота

  • В качестве платформы выбираем Docker:

Docker для Telegram-бота на Python

  • В пункте Application code нужно загрузить JSON-файл с конфигурацией Docker-образа. Сам файл:
Dockerrun.aws.json
{
 "AWSEBDockerrunVersion": "1",
 "Image": {
   "Name": "<docker_hub_username>/my_app",
   "Update": "true"
 },
"Ports": [
 {
   "ContainerPort": 5000,
   "HostPort": 8000
 }
]
}

Application code

  • Создаём окружение:

Создаём окружение

  • AWS начинает создавать окружение, просто ждём завершения процесса:

AWS начинает создавать окружение

  • Если всё прошло успешно, вы увидите индикатор успешного запуска приложения:

Docker для Телеграм бота

Проверяем работу нашего Telegram bot:

Проверка Телеграм бота

Успех!

Заключение

Поздравляем! Теперь вы знаете, как писать роботов для Telegram на Python.

Бота можно дополнять другими функциями, например, добавить отправку файлов, опрос или клавиатуру.

Кстати, в телеграмме есть аж целых два типа клавиатур:

  1. Классическая RelpyKeyboardMarkup, у которой кнопки располагаются под полем ввода сообщения:
    RelpyKeyboardMarkup
  2. Более современная InlineKeyboardMarkup, которая привязывается к конкретному сообщению:
    InlineKeyboardMarkup

Но и это полностью рабочий Телеграм-бот на Python: дополните словарём, и получите полноценную беседу. Также можете опробовать функциональность нашего Telegram-бота.

В «настоящих проектах» не обойтись без базы данных. Тут на помощь приходит docker-compose, который позволяет объединить несколько контейнеров в один сервис. Таким образом, например, можно создать приложение и положить его в контейнер, а базу данных, как отдельный сервис, поместить в другой контейнер, и с помощью docker-compose наладить между ними связь.

Также для более серьёзной разработки лучше использовать выделенный виртуальный сервер (VPS): он даёт гораздо больше гибкости и свободы, чем тот же AWS. А самое главное, он более приближён к «боевой» разработке. Схема работы тут будет даже проще, чем с AWS: вам просто нужно установить Docker, спуллить образ с Docker Hub и запустить его.

Понравилась статья? Поделить с друзьями:
  • Как написать чат бота для telegram на javascript
  • Как написать чат бот телеграм
  • Как написать чат бот на нейросети
  • Как написать часы на питоне
  • Как написать часы на python