Руководство по телеграм ботам

This guide will walk you through everything you need to know to build your first Telegram Bot.
If you already know your way around some of the basic steps, you can jump directly to the part you’re missing. Equivalent examples are available in C#, Python, Go and TypeScript .

  • Introduction
  • Basic Tutorial
  • Environment
  • First Run
  • Echo Bot
  • Advanced Tutorial
  • Commands
  • Navigation
  • Database
  • Hosting
  • Further Reading

Introduction

At its core, you can think of the Telegram Bot API as software that provides JSON-encoded responses to your queries.

A bot, on the other hand, is essentially a routine, software or script that queries the API by means of an HTTPS request and waits for a response. There are several types of requests you can make, as well as many different objects that you can use and receive as responses.

Since your browser is capable of sending HTTPS requests, you can use it to quickly try out the API. After obtaining your token, try pasting this string into your browser:

https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getMe

In theory, you could interact with the API with basic requests like this, either via your browser or other tailor-made tools like cURL. While this can work for simple requests like the example above, it’s not practical for larger applications and doesn’t scale well.
For that reason, this guide will show you how to use libraries and frameworks, along with some basic programming skills, to build a more robust and scalable project.

If you know how to code, you’ll fly right through each step in no time – and if you’re just starting out, this guide will show you everything you need to learn.

We will use Java throughout this guide as it’s one of the most popular programming languages, however, you can follow along with any language as all the steps are fundamentally the same.
Since Java is fully cross-platform, each code example will work with any operating system.
If you pick another language, equivalent examples are available in C#, Python, Go and TypeScript .

Getting Ready

First, we will briefly cover how to create your first project, obtain your API token and download all necessary dependencies and libraries.

For the purposes of this guide, a copy of the bot you will be creating is also live at @TutorialBot – feel free to check it out along the way to see how your own implementation should look after each step.

Obtain Your Bot Token

In this context, a token is a string that authenticates your bot (not your account) on the bot API. Each bot has a unique token which can also be revoked at any time via @BotFather.

Obtaining a token is as simple as contacting @BotFather, issuing the /newbot command and following the steps until you’re given a new token. You can find a step-by-step guide here.

Your token will look something like this:

4839574812:AAFD39kkdpWt3ywyRZergyOLMaJhac60qc

Make sure to save your token in a secure place, treat it like a password and don’t share it with anyone.

Download an IDE

To program in Java you’ll need an IDE – a special text editor that will let you write, compile and run your code.
In this tutorial, we’ll use IntelliJ – there are several free, open source alternatives like Eclipse or NetBeans which work in the exact same way.

You will also need a JDK, a software kit that allows your Java code to run.
Most IDEs don’t include a JDK, so you should download a version compatible with your operating system separately. You can find a free, open source version here.

If you use another language, the steps are identical. You will just have to download a different IDE and software development kit.

Pick a Framework or Library

You can think of a framework as software that handles all the low-level logic for you, including the API calls, and lets you focus on your bot-specific logic.

In this tutorial, we’ll use TelegramBots, but you can follow along with any equivalent implementation, since all the underlying methods are either similar or exactly the same.

You can find many frameworks, along with code examples, in our dedicated list.

Create Your Project

In IntelliJ, go to File > New > Project.

Fill in the fields accordingly:

  • Name — The name of your project. For example, BotTutorial.
  • Location — Where to store your project. You can use the default value.
  • Language — Java
  • Build System — The framework that will handle your dependencies. Pick Maven.
  • JDK — Pick whichever version you downloaded. We’ll be using version 17.
  • Add Sample Code — Leave this selected, it will generate some needed files for you.
  • Advanced Settings > GroupId — We suggest tutorial.
  • Advanced Settings > ArtifactId — You can use the default value.

After hitting Create, if you did everything correctly, your Project view in the top left should show a project structure along these lines:

BotTutorial
├─ .idea
├─ src
│  └─ main
│     └─ java
│        └─ tutorial
│           └─ Main
└─ pom.xml

Other IDEs will follow a similar pattern. Your dependency management system will have a different name (or no name at all if it’s built-in) depending on the language you chose.

If this looks scary, don’t worry. We will only be using the Main file and the pom.xml file.
In fact, to check that everything is working so far, double click on Main and click on the small green arrow on the left of public class Main, then select the first option.
If you followed the steps correctly, Hello world! should appear in the console below.

Add Framework Dependency

We will now instruct the IDE to download and configure everything needed to work with the API.
This is very easy and happens automatically behind the scenes.

First, locate your pom.xml file on the left side of the screen.
Open it by double-clicking and simply add:

<dependencies>
    <dependency>
        <groupId>org.telegram</groupId>
        <artifactId>telegrambots</artifactId>
        <version>6.0.1</version>
    </dependency>
</dependencies>

right after the </properties> tag.

When you’re done, your pom.xml should look something like this.

Start Coding

We are ready to start coding. If you’re a beginner, consider that being familiar with your language of choice will greatly help. With this tutorial, you’ll be able to teach your bot basic behaviors, though more advanced features will require some coding experience.

Creating a Bot Class

If you’re familiar with object-oriented programming, you’ll know what a class is.
If you’ve never heard of it before, consider a class as a file where you write some logic.

To create the class that will contain the bot logic, right click on tutorial from the project tree on the left and select New > Java Class. Name it Bot and hit enter.

Now we have to connect this class to the bot framework. In other words, we must make sure it extends TelegramLongPollingBot. To do that, just add extends TelegramLongPollingBot right after Bot.
A red line will appear – it simply means we’re missing some important methods.

To fix this, hover over the red line, click on implement methods, then hit OK.
Depending on the IDE, this option may be called implement missing methods or something similar.

You should end up with this – if something went wrong, feel free to copy it from here and paste it in your class:

package tutorial;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.api.objects.Update;

public class Bot extends TelegramLongPollingBot {

  @Override
  public String getBotUsername() {
      return null;
  }

  @Override
  public String getBotToken() {
      return null;
  }

  @Override
  public void onUpdateReceived(Update update) {}

}

If you get a red line under TelegramLongPollingBot, it means you didn’t set up your pom.xml correctly. If this is the case, restart from here.

Available Methods

Let’s look into these 3 methods one by one.

  • getBotUsername — This method must be edited to always return your bot’s username. You should replace the null return value with it.
  • getBotToken — This method will be used by the framework to retrieve your bot token. You should replace the null return value with the token.
  • onUpdateReceived — This is the most important method. It will be called automatically whenever a new Update is available. Let’s add a System.out.println(update); call in there to quickly show what we are getting.

After you’ve replaced all the strings, you should end up with this:

@Override
public String getBotUsername() {
    return "TutorialBot";
}

@Override
public String getBotToken() {
    return "4839574812:AAFD39kkdpWt3ywyRZergyOLMaJhac60qc";
}

@Override
public void onUpdateReceived(Update update) {
    System.out.println(update);
}

At this point, the bot is configured and ready to go – time to register it on the API and start processing updates.

In the future, you should consider storing your token in a dedicated settings file or in environment variables. Keeping it in the code is fine for the scope of this tutorial, however, it’s not very versatile and is generally considered bad practice.

Registering the Bot

To register the bot on the API, simply add a couple of lines in the main method that will launch the application. If you named your class Bot, this is what your main method should look like:

public static void main(String[] args) throws TelegramApiException {
  TelegramBotsApi botsApi = new TelegramBotsApi(DefaultBotSession.class);
  botsApi.registerBot(new Bot());
}

You can place this method in any class. Since we have an auto-generated main method in the Main class, we’ll be using that one for this tutorial.

First Run

It’s time to run your bot for the first time.
Hit the green arrow to the left of public static void main and select the first option.

And then there was nothing. Yes, a bit anticlimactic.
This is because your bot has nothing to print – there are no new updates because nobody messaged it yet.

If you try messaging the bot on Telegram, you’ll then see new updates pop up in the console. At this point, you have your very own Telegram Bot – quite the achievement. Now, on to making it a bit more intelligent.

If nothing pops up, make sure you messaged the right bot and that the token you pasted in the code is correct.

Receiving Messages

Every time someone sends a private message to your bot, your onUpdateReceived method will be called automatically and you’ll be able to handle the update parameter, which contains the message, along with a great deal of other info which you can see detailed here.

Let’s focus on two values for now:

  • The user — Who sent the message. Access it via update.getMessage().getFrom().
  • The message — What was sent. Access it via update.getMessage().

Knowing this, we can make it a bit more clear in the console output.

@Override
public void onUpdateReceived(Update update) {
    var msg = update.getMessage();
    var user = msg.getFrom();

    System.out.println(user.getFirstName() + " wrote " + msg.getText());
}

This is just a basic example – you can now play around with all the methods to see everything you can pull out of these objects. You can try getUsername, getLanguageCode, and dozens more.

Knowing how to receive, process and print incoming messages, now it’s time to learn how to answer them.

Remember to stop and re-launch your bot after each change to the code.

Sending Messages

To send a private text message, you generally need three things:

  • The user must have contacted your bot first. (Unless the user sent a join request to a group where your bot is an admin, but that’s a more advanced scenario).
  • You must have previously saved the User ID (user.getId())
  • A String object containing the message text, 1-4096 characters.

With that out of the way, let’s create a new method to send the first message:

public void sendText(Long who, String what){
   SendMessage sm = SendMessage.builder()
                    .chatId(who.toString()) //Who are we sending a message to
                    .text(what).build();    //Message content
   try {
        execute(sm);                        //Actually sending the message
   } catch (TelegramApiException e) {
        throw new RuntimeException(e);      //Any error will be printed here
   }
}

And proceed to run this in the main method, right after registering the bot.
For this example, we’ll assume your User ID is 1234.

public static void main(String[] args) throws TelegramApiException {
   TelegramBotsApi botsApi = new TelegramBotsApi(DefaultBotSession.class);
   Bot bot = new Bot();                  //We moved this line out of the register method, to access it later
   botsApi.registerBot(bot);            
   bot.sendText(1234L, "Hello World!");  //The L just turns the Integer into a Long
}

If you did everything correctly, your bot should text you Hello World! every time you launch your code. Sending messages to groups or channels – assuming you have the relevant permissions – is as simple as replacing 1234 with the ID of the respective chat.

Try experimenting with other types of messages, like SendPhoto, SendSticker, SendDice…
A full list is available starting here.

Echo Bot

Let’s practice everything we tried so far by coding an Echo Bot.
Its functionality will be rather simple: every text message it receives will be sent right back to the user.

Copying Text

The most intuitive way of coding this is saving the User ID and calling sendText right after each update.

In other words:

@Override
public void onUpdateReceived(Update update) {
    var msg = update.getMessage();
    var user = msg.getFrom();
    var id = user.getId();

    sendText(id, msg.getText());
}

This works for text but can be extended to stickers, media and files.

Copying Everything

There are more specific functions that can be used to copy messages and send them back.
Let’s build a method to do just that:

public void copyMessage(Long who, Integer msgId){
   CopyMessage cm = CopyMessage.builder()
              .fromChatId(who.toString())  //We copy from the user
           .chatId(who.toString())      //And send it back to him
           .messageId(msgId)            //Specifying what message
           .build();
    try {
        execute(cm);
    } catch (TelegramApiException e) {
        throw new RuntimeException(e);
    }
}

After replacing the method call inonUpdateReceived, running the code will result in a fully functional Echo Bot.

This tutorial assumes that updates always contain messages for the sake of simplicity. This may not always be true – be sure to implement all the proper checks in your code to handle every type of update with the appropriate methods.

Executing Commands

To learn what a command is and how it works, we recommend reading this dedicated summary.
In this guide, we’ll focus on the technical side of things.

Creating Your Command

Begin by opening @BotFather.
Type /mybots > Your_Bot_Name > Edit Bot > Edit Commands.

Now send a new command, followed by a brief description.
For the purpose of this tutorial, we’ll implement two simple commands:

scream - Speak, I'll scream right back 
whisper - Shhhhhhh

Command Logic

We want the Echo Bot to reply in uppercase when it’s in scream mode and normally otherwise.

First, let’s create a variable to store the current mode.

public class Bot extends TelegramLongPollingBot {

   private boolean screaming = false;

   [...]
}

Then, let’s change some logic to account for this mode.

public void onUpdateReceived(Update update) {
    [...]                                   //Same variables as the previous versions
   if(screaming)                            //If we are screaming
       scream(id, update.getMessage());     //Call a custom method
   else
       copyMessage(id, msg.getMessageId()); //Else proceed normally
}

private void scream(Long id, Message msg) {
   if(msg.hasText())
       sendText(id, msg.getText().toUpperCase());
   else
       copyMessage(id, msg.getMessageId());  //We can't really scream a sticker
}

Finally, let’s add a couple more lines to the onUpdateReceived method to process each command before replying.

if(msg.isCommand()){ 
   if(msg.getText().equals("/scream"))         //If the command was /scream, we switch gears
      screaming = true;
   else if (msg.getText().equals("/whisper"))  //Otherwise, we return to normal
      screaming = false;

   return;                                     //We don't want to echo commands, so we exit
}

As you can see, it checks if the message is a command. If it is, the bot enters scream mode.
In the update method, we check which mode we are in and either copy the message or convert it to upper case before sending it back.

And that’s it. Now the bot can execute commands and change its behavior accordingly.

Naturally, this simplified logic will change the bot’s behavior for everyone – not just the person who sent the command. This can be fun for this tutorial but won’t work in a production environment – consider using a Map, dictionary or equivalent data structure to assign settings for individual users.

Remember to always implement a few basic global commands.
You can practice by implementing a simple feedback to the /start command, which we intentionally left out.

Buttons and Keyboards

To streamline and simplify user interaction with your bot, you can replace many text-based exchanges with handy buttons. These buttons can perform a wide variety of actions and can be customized for each user.

Button Types

There are two main types of buttons:

  • Reply Buttons — used to provide a list of predefined text reply options.
  • Inline Buttons — used to offer quick navigation, shortcuts, URLs, games and so much more.

Using these buttons is as easy as attaching a ReplyKeyboardMarkup or an InlineKeyboardMarkup to your SendMessage object.

This guide will focus on inline buttons since they only require a few extra lines of code.

Creating Buttons

First of all, let’s create some buttons.

 var next = InlineKeyboardButton.builder()
            .text("Next").callbackData("next")           
            .build();

 var back = InlineKeyboardButton.builder()
            .text("Back").callbackData("back")
            .build();

 var url = InlineKeyboardButton.builder()
            .text("Tutorial")
            .url("https://core.telegram.org/bots/api")
            .build();

Let’s go back through the fields we specified:

  • Text — This is what the user will see, the text that appears on the button
  • Callback Data — This will be sent back to the code instance as part of a new Update, so we can quickly identify what button was clicked.
  • Url — A button that specifies a URL doesn’t specify callbackdata since its behavior is predefined – it will open the given link when tapped.

Creating Keyboards

The buttons we created can be assembled into two keyboards, which will then be used to navigate back and forth between two sample menus.

First, add two fields to store the necessary keyboards.

private boolean screaming = false;

private InlineKeyboardMarkup keyboardM1;
private InlineKeyboardMarkup keyboardM2;

Then, build and assign them.

keyboardM1 = InlineKeyboardMarkup.builder()
          .keyboardRow(List.of(next)).build();  

//Buttons are wrapped in lists since each keyboard is a set of button rows
keyboardM2 = InlineKeyboardMarkup.builder()
          .keyboardRow(List.of(back))
          .keyboardRow(List.of(url))
          .build();

You can place this code wherever you prefer, the important thing is making sure that keyboard variables are accessible from the method call that will send the new menu. If you’re confused by this concept and don’t know where to put them, just paste them above the command processing flow.

Sending Keyboards

Sending a keyboard only requires specifying a reply markup for the message.

public void sendMenu(Long who, String txt, InlineKeyboardMarkup kb){
    SendMessage sm = SendMessage.builder().chatId(who.toString())
            .parseMode("HTML").text(txt)
            .replyMarkup(kb).build();

    try {
        execute(sm);
    } catch (TelegramApiException e) {
        throw new RuntimeException(e);
    }
}

You may have noticed that we also added a new parameter, HTML.
This is called a formatting option and will allow us to use HTML tags and add formatting to the text later on.

Menu Trigger

We could send a new menu for each new user, but for simplicity let’s add a new command that will spawn a menu. We can achieve this by adding a new else clause to the previous command flow.

 var txt = msg.getText();
 if(msg.isCommand()) {
        if (txt.equals("/scream"))
            screaming = true;
        else if (txt.equals("/whisper"))
            screaming = false;
        else if (txt.equals("/menu"))
            sendMenu(id, "<b>Menu 1</b>", keyboard1);
        return;
 }

Try sending /menu to your bot now. If you did everything correctly, you should see a brand new menu pop up.

In a production environment, commands should be handled with an appropriate design pattern that isolates them into different executor classes – modular and separated from the main logic.

Navigation

When building complex bots, navigation is essential. Your users must be able to move seamlessly from one menu to the next.

In this example, we want the Next button to lead the user to the second menu.
The Back button will send us back.
To do that, we will start processing incoming CallbackQueries, which are the results we get after the user taps on a button.

A CallbackQuery is essentially composed of three main parameters:

  • queryId — Needed to close the query. You must always close new queries after processing them – if you don’t, a loading symbol will keep showing on the user’s side on top of each button.
  • data — This identifies which button was pressed.
  • from — The user who pressed the button.

Processing in this context just means executing the action uniquely identified by the button, then closing the query.

A very basic button handler could look something like:

private void buttonTap(Long id, String queryId, String data, int msgId) {

    EditMessageText newTxt = EditMessageText.builder()
            .chatId(id.toString())
            .messageId(msgId).text("").build();

    EditMessageReplyMarkup newKb = EditMessageReplyMarkup.builder()
            .chatId(id.toString()).messageId(msgId).build();                           

    if(data.equals("next")) {
        newTxt.setText("MENU 2");
        newKb.setReplyMarkup(keyboardM2);
    } else if(data.equals("back")) {
        newTxt.setText("MENU 1");
        newKb.setReplyMarkup(keyboardM1);
    }

    AnswerCallbackQuery close = AnswerCallbackQuery.builder()
            .callbackQueryId(queryId).build();

    execute(close);
    execute(newTxt);
    execute(newKb);
}

With this handler, whenever a button is tapped, your bot will automatically navigate between inline menus.
Expanding on this concept allows for endless combinations of navigable submenus, settings and dynamic pages.

Database

Telegram does not host an update database for you – once you process and consume an update, it will no longer be available. This means that features like user lists, message lists, current user inline menu, settings, etc. have to be implemented and maintained by bot developers.

If your bot needs one of these features and you want to get started on data persistence, we recommend that you look into serialization practices and libraries for your language of choice, as well as available databases.

Implementing a database is out of scope for this guide, however, several guides are available online for simple embedded open source software solutions like SQLite, HyperSQL, Derby and many more.

Your language of choice will also influence which databases are available and supported – the list above assumes you followed this Java tutorial.

Hosting

So far, your bot has been running on your local machine – your PC. While this may be good for developing, testing and debugging, it is not ideal for a production environment.
You’ll want your bot to be available and responsive at all times, but your computer might not always be online.

This can be done in four steps:

  • Package your code
    Making your bot easy to move and runnable outside of an IDE is essential to host it elsewhere.
    If you followed this tutorial, this standard guide will work for you. If you didn’t, look into export or packaging guides for your IDE and language of choice – procedures may vary but the end result is the same.

  • Purchase a VPS or equivalent service
    A server is essentially a machine that is always online and running, without you having to worry about anything. To host your bot, you can opt for a VPS which serves this purpose and can be rented from several different providers.
    Another option would be to purchase a network-capable microcontroller, which come in all different specs and sizes depending on your needs.

You should ensure that all user data remains heavily encrypted at all times in your database to guarantee the privacy of your users. The same concept applies to your local instance, however, this becomes especially important once you transfer your database to a remote server.

  • Upload your executable/package

Once you have a working ssh connection between your machine and your new server, you should upload your executable and all associated files.
We will assume the runnable jar TutorialBot.jar and its database dbase.db are currently in the /TBot folder.

$ scp -r /TBot/ username@server_ip:/bots/TBotRemote/
  • Run your application

Depending on which language you chose, you might have to configure your server environment differently. If you chose Java, you just need to install a compatible JDK.

$ apt install openjdk-17-jre
$ java -version

If you did everything correctly, you should see a Java version as the output, along with a few other values. This means you’re ready to run your application.

Now, to run the executable:

$ cd /bots/TBotRemote/
$ java -jar TutorialBot.jar

Your bot is now online and users can interact with it at any time.

To streamline and modularize this process, you could employ a specialized docker container or equivalent service.
If you followed along in one of the equivalent examples (C#, Python, Go and TypeScript) you can find a detailed set of instructions to export and run your code here.

Further Reading

If you got this far, you might be interested in these additional guides and docs:

  • General Bot Platform Overview
  • Detailed List of Bot Features
  • Full API Reference

If you encounter any issues while following this guide, you can contact us on Telegram at @BotSupport.

Всё, о чём должен знать разработчик Телеграм-ботов

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

Количество просмотров 499K

Вы вряд ли найдете в интернете что-то про разработку ботов, кроме документаций к библиотекам, историй «как я создал такого-то бота» и туториалов вроде «как создать бота, который будет говорить hello world». При этом многие неочевидные моменты просто нигде не описаны.

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

Подробный гайд о том, как работать с ботами — под катом.

Статья обновлена в январе 2022

  • Обновлена информация об id пользователей и чатов: теперь их нельзя хранить в 32-битном типе чисел.

  • Добавлен раздел о сообщениях от лица групп и каналов

  • Обновлена информация о различных меню команд для отдельных чатов и пользователей.

  • Добавлена информация о спойлерах в разметке сообщений.

  • Добавлен раздел об обновлениях Bot API.

Содержание

Начало работы
— Telegram API vs Telegram Bot API
— На чём пишут Телеграм-ботов
— Создание бота
— Юзернеймы
— Оформление бота

Сообщения и чаты
— Запуск бота пользователем
— Сообщения
— Куда может писать бот
— Супергруппы
— id пользователей и чатов
— id сообщений
— Видимость сообщений в группах
— Сообщения от лица групп и каналов
— Команды
— Разметка сообщений
— Кнопки

Взаимодействие с ботом
— Ссылки на бота
— Инлайн-режим
— Создание наборов стикеров
— Платежи через ботов
— HTML-игры в ботах
— Telegram Login Widget

Разработка ботов
— Какие апдейты можно получать
— Обновления API
— Лимиты
— Рассылка по пользователям
— Смена владельца бота
— Локальный сервер Bot API
— Юзерботы

Заключение

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

Telegram API vs Telegram Bot API

Рассказываю по порядку.

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

Для написания ботов был создан Telegram Bot API — надстройка над Telegram API. Перевод с официального сайта:

Чтобы использовать Bot API, вам не нужно ничего знать о том, как работает протокол шифрования MTProto — наш вспомогательный сервер будет сам обрабатывать все шифрование и связь с Telegram API. Вы соединяетесь с сервером через простой HTTPS-интерфейс, который предоставляет простую версию Telegram API.

Среди упрощений Bot API: работа через вебхуки, упрощенная разметка сообщений и прочее.

Почему-то мало кто знает о том, что боты могут работать напрямую через Telegram API. Более того, таким образом можно даже обойти некоторые ограничения, которые даёт Bot API.

Об авторизации ботов через Telegram API в официальной документации

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

На чём пишут Телеграм-ботов

Бот должен уметь отправлять запросы Телеграм-серверу и получать от него апдейты (updates, обновления).

Как получать апдейты в Bot API

Получать апдейты можно одним из двух способов:

  • Поллинг — просто регулярно отправлять запрос к серверу Телеграма для получения обновлений,

  • Вебхук — сделать так, чтобы Телеграм сам отправлял запросы по нужному URL.

Конечно, удобнее использовать библиотеки, чем делать http-запросы «руками».

Если вы попробуете загуглить, как написать Телеграм-бота на Python, вам предложат воспользоваться библиотеками python-telegram-bot и telebot. Но не стоит.

Ну, если вы только хотите познакомиться с разработкой ботов и написать своего hello-world-бота, то можете, конечно использовать и их. Но эти библиотеки могут далеко не всё. Среди разработчиков ботов лучшей библиотекой для ботов на Python считается aiogram. Она асинхронная, использует декораторы и содержит удобные инструменты для разработки. Ещё был хороший Rocketgram, но он давно не обновлялся.

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

Если же вы хотите использовать Telegram API, то можете воспользоваться Python’овскими Telethon и Pyrogram.

Пример кода бота

Если вы хотите получить какое-то представление о том, как вообще выглядит код бота, вот вам пример использования на aiogram с его странички на GitHub:

import asyncio
from aiogram import Bot, Dispatcher, types

async def start_handler(event: types.Message):
    await event.answer(
        f"Hello, {event.from_user.get_mention(as_html=True)} ?!",
        parse_mode=types.ParseMode.HTML,
    )

async def main():
    bot = Bot(token=BOT-TOKEN)
    try:
        disp = Dispatcher(bot=bot)
        disp.register_message_handler(start_handler, commands={"start", "restart"})
        await disp.start_polling()
    finally:
        await bot.close()

asyncio.run(main())

Этот бот будет отвечать на команды /start и и /restart.

Создание бота

Единственная информация о Телеграм-ботах, которой в интернете полным-полно: как создать бота. Это делается через специального бота BotFather. Когда вы создадите бота, BotFather даст вам его токен. Токен выглядит примерно так: 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw. Именно с помощью токена вы сможете управлять ботом.

Один пользователь может создать до 20 ботов.

В BotFather удобно управлять ботами своими командой /mybots.

Юзернеймы

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

Как поменять юзернейм бота

Если у вас есть бот, и вы хотите дать ему более короткий юзернейм (который может быть занят неработающим ботом), то вы, теоретически, можете это сделать через @BotSupport.

Для этого бот должен (внезапно) быть рабочим, а также поддерживать английский язык.

Принято использовать такой формат обращения в поддержку:

  1. @old_username,

  2. @new_username,

  3. Что бот делает.

Если вы везунчик 9999 lvl — вам ответят.

Юзернейм бота выглядит как обычный юзернейм, но он должен заканчиваться на «bot».
Вы могли видеть ботов с именами @pic, @vid, @sticker, @gamee — это официальные боты Телеграма. Им можно нарушать все правила :)

Очень многие юзернеймы уже заняты. Свободных коротких юзернеймов осталось очень мало. И что самое грустное: почти все эти боты мертвы. Просто не отвечают на сообщения. Наверное, это просто разные любопытные люди хотят сделать бота, создают его, а потом забивают. У меня самого есть несколько лежащих ботов. Так что, думаю, лимит в 20 ботов на одного владельца вполне оправдан :)

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

Открыв бота, пользователи могут увидеть его профиль.

Оформление бота настраивается в BotFather: меню /mybotsEdit Bot. Там можно изменить:

  1. Имя бота.

  2. Описание (Description) — это текст, который пользователи будут видеть в начале диалога с ботом под заголовком «Что может делать этот бот?»

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

  4. Аватарка. Аватарки ботов, в отличие от аватарок пользователей и чатов, не могут быть анимированными. Только картинки.

  5. Команды — тут имеются ввиду подсказки команд в боте. Подробнее о командах ниже.

  6. Inline Placeholder — об инлайн-режиме см. ниже.

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

Сообщения и чаты

Запуск бота пользователем

Когда пользователь впервые открывает бота, он видит кнопку «Запустить» или «Начать» (зависит от платформы пользователя), на английском — «Start». Нажимая на эту кнопку, он отправляет команду /start.

Таким образом, первое сообщение от пользователя — это всегда /start (либо /start с параметрами, об этом ниже в разделе «Диплинки»).

…если пользователь использует официальный клиент

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

Сообщения

Понятно, что главная функция бота — отправлять и получать сообщения.

И то, и другое можно делать со всеми видами сообщений (фото и видео, файлы, опросы, голосовые сообщения и т. д.).

В Телеграме можно делиться файлами до 2 ГБ, но в Bot API более жесткие лимиты: боты могут скачивать файлы до 20 МБ и отправлять файлы до 50 МБ.

Работа с файлами в Bot API

Если бот уже загрузил файл на сервер Телеграма, то он может использовать file_id, чтобы отправлять этот файл.

Загружать файл на сервер можно в том числе и по URL файла.

Подробнее об отправке файлов в Bot API

Куда может писать бот

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

Боты не могут писать другим ботам.

Бота можно добавить в группу (если в BotFather включена соответствующая настройка). По умолчанию он видит не все сообщения (об этом ниже, в разделе «Видимость сообщений в группах»).

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

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

Также бота можно добавить в канал, причем только как администратора. Самый частый способ использования ботов в каналах — добавление кнопок под постами («лайки», ссылки и прочее).

Как боты добавляют кнопки

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

Подробнее о кнопках тоже ниже.

Супергруппы

На самом деле многие группы в Телеграме являются супергруппами.

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

Со временем, видимо, решили, что это неудобная концепция. Теперь обычная группа становится супергруппой, когда у группы меняются какие-нибудь настройки (подробнее тут). Вот такой костыль.

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

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

id пользователей и чатов

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

В токене бота первая часть — это его id. Например, токен 110201874:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw принадлежит боту с id 110201874.

В Bot API перед id супергрупп и каналов пишется -100. Так, id 1356415630 превращается в -1001356415630.

Не следует хранить id пользователей и чатов в 32-битном типе числа: теперь id могут превышать 231-1.

id сообщений

Каждое сообщение в Телеграме имеет свой id. Это относится и к системным сообщениям (пользователь зашел в группу, изменилось название группы и т. д.)

Через Telegram API боты могут получать по запросу сообщения в любом чате по их id.

id сообщений в супергруппах и каналах уникальны для чата: первое сообщение в чате имеет номер 1, второе имеет номер 2 и так далее.

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

Видимость сообщений в группах

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

Но если боту нужно видеть все сообщения в группе (например, если это чат-бот или антиспам-бот), для него можно отключить Privacy mode.

Privacy mode — настройка в BotFather, которая по умолчанию включена. В таком режиме бот в группах видит только такие сообщения:

  • Сообщения с упоминанием бота,

  • Ответы на сообщение бота, ответы на ответы и так далее,

  • Системные сообщения,

  • Команды — о них в следующем пункте.

А если Privacy mode выключен, то бот видит все сообщения в группе.

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

Бот, работающий через Bot API, в любом случае не будет видеть сообщения от других ботов.

Бот видит не все сообщения

Бот видит не все сообщения
Я включил Privacy mode, а он не работает

Нужно удалить бота из группы и добавить заново.

Исправленный баг с видимостью сообщений

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

Это могло нарушить работу антиспам- и других ботов.

Сейчас баг уже исправлен.

О Privacy mode в документации Bot API

Сообщения от лица групп и каналов

В группах могут быть не только сообщения от пользователей, но и:

  • Сообщения в группе из привязанного канала (с точки зрения API это пересланные сообщения)

  • Сообщения от лица группы от анонимных администраторов той же группы

  • Сообщения от лица публичных каналов от любых пользователей

Учитывайте это при разработке ботов для групп.

Команды

Часто используемый способ «общения» пользователей с ботом — команды. Команды начинаются на «/» и состоят из латинских букв (можно использовать цифры и нижние подчеркивания).

Команды подсвечиваются как ссылки: нажатие отправляет команду в чат.

В группах, чтобы различать команды от разных ботов, Телеграм предлагает ставить в конце команды юзернейм бота. Например: /start@examplebot.

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

Если в подсказках команд есть /help, в профиле бота появляется кнопка «Помощь с ботом». Нажатие на кнопку отправляет эту команду.

Если в подсказках команд есть /settings, в профиле бота появляется кнопка «Настройки бота». Нажатие на кнопку отправляет эту команду.

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

Разметка сообщений

Как вы, наверное, знаете, сообщения в Телеграме могут содержать не только обычный текст, но и жирный, курсив и др. В Bot API разметку сообщений можно делать в HTML и Markdown.

Разметка в Telegram API

В Telegram API для разметки надо вместе с сообщением передавать entities (MessageEntityBold, MessageEntityItalic и так далее). Хорошие библиотеки сами превращают HTML/Markdown в текст и entities.

Способы выделения текста:

  • Жирный текст

  • Курсив

  • Подчёркнутый текст

  • Зачёркнутый текст

  • Моноширинный текст ("в строке" и "блоком")

  • Ссылка (встроенная в текст)

  • Спойлер — текст, который показывается только после нажатия на плашку

  • Упоминание пользователя — текст, похожий на ссылку, клик по которому открывает профиль пользователя. Если упомянуть в группе её участника, он получит уведомление.
    Чтобы вставить в сообщение упоминание пользователя, в Bot API нужно встроить ссылку на tg://user?id=123456789.

О разметке в документации Bot API

Кнопки

Инлайн-кнопки

Бот может оставлять кнопки под своими сообщениями.

Кнопки под сообщениями (они же inline keyboards / inline buttons) в основном бывают трёх видов:

  • URL button — кнопка с ссылкой.

  • Callback button. При нажатии на такую кнопку боту придёт апдейт. С созданием кнопки можно указать параметр, который будет указан в этом апдейте (до 64 байтов). Обычно после нажатий на такие кнопки боты изменяют исходное сообщение или показывают notification или alert.

  • Switch to inline button. Кнопка для переключения в инлайн-режим (об инлайн-режиме см. ниже). Кнопка может открывать инлайн в том же чате или открывать меню для выбора чата. Можно указать в кнопке запрос, который появится рядом с никнеймом бота при нажатии на кнопку.

Дополнительные виды кнопок

  • Login URL button — специальная кнопка для авторизации пользователей на сайте. Использовалась, например, в официальном боте @discussbot (до добавления нативных комментариев в Телеграм).

  • Callback game button — кнопка для открытия HTML-игры. См. пункт «HTML-игры».

  • Pay button — кнопка для платежей. См. пункт «Платежи через ботов».

Клавиатурные кнопки

Есть другой тип кнопок: keyboard buttons. Они отображаются вместо клавиатуры как подсказки. При нажатии на такую кнопку пользователь просто отправит этот текст.

При этом в личных чатах с помощью кнопки можно:

  • Запросить номер телефона пользователя,

  • Запросить геолокацию пользователя,

  • Открыть у пользователя меню создания опроса.

Есть опция resize_keyboard, которая отвечает за то, изменять ли высоту этой «клавиатуры из кнопок». По умолчанию она, почему-то, выключена, и тогда высота клавиатуры стандартная большая. Получаются кнопки как на этой картинке:

Чтобы показать клавиатурные кнопки, бот должен отправить сообщение. Можно отправить клавиатуру, которая свернётся (но не пропадёт) после нажатия на кнопку.

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

  • Для пользователей, юзернеймы которых были в тексте сообщения,

  • Если это ответ на другое сообщение: для пользователя, который его отправил.

Ещё о кнопках

Оба типа кнопок могут составлять несколько рядов, в каждом из которых по несколько кнопок. Ограничения: в ряду может быть до 8 кнопок, а всего с сообщением до 100 кнопок.

При отправке сообщения можно выбрать одно (но не больше) из следующих действий:

  • Добавить к сообщению инлайн-кнопки,

  • Показать клавиатурные кнопки,

  • Убрать все клавиатурные кнопки,

  • Force reply: автоматически заставить пользователя ответить на сообщение. Так произойдёт то же самое, что и при нажатии пользователем кнопки «Ответить». Это нужно для того, чтобы бот мог общаться с пользователями в группах, не нарушая Privacy mode.

Таким образом, нельзя показать оба типа кнопок одновременно.

Взаимодействие с ботом

Ссылки на бота

Юзернеймы ботов работают так же, как и любые другие юзернеймы в Телеграме: бота @examplebot можно открыть по ссылке t.me/examplebot.

Также существует прямая ссылка: tg://resolve?domain=examplebot

Подробнее о ссылках tg://

Такие ссылки могут не только заменять ссылки t.me, но и задавать свои действия. Например, tg://settings открывает настройки.

Список известных таких ссылок есть канале @DeepLink.

Ссылка на добавление в группу

По ссылке t.me/examplebot?startgroup=true у пользователя откроется меню: выбор группы для добавления бота.

Прямая ссылка: tg://resolve?domain=examplebot&startgroup=true

Диплинки

По ссылке t.me/examplebot?start=<ваш текст> пользователь может запустить бота с каким-то стартовым параметром (<ваш текст>).

Что происходит, когда пользователь переходит по такой ссылке:

  1. Бот открывается как обычно.

  2. Отображается кнопка «Запустить», даже если пользователь уже запускал бота.

  3. Пользователь нажимает на кнопку и видит сообщение /start (всё как обычно).

  4. Боту вместо этого приходит сообщение /start <ваш текст>

Так бот может отреагировать на запуск не как на обычный «/start», а другим способом.

Наглядная гифка:

Часто диплинки используются для реферальных программ (в качестве параметра можно передавать id пользователя, который поделился ссылкой). Есть и другие применения.

Прямая ссылка: tg://resolve?domain=examplebot&start=<ваш текст>

О диплинках в документации Bot API

Инлайн-режим

Инлайн-режим (inline mode) — это специальный режим работы бота, с помощью которого пользователь может использовать бота во всех чатах.

Выглядит это так: пользователь вводит юзернейм бота в поле для ввода сообщения. После юзернейма можно ещё записать запрос (текст до 256 символов).

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

Инлайн-режим можно включить в BotFather, там же можно выбрать плейсхолдер вместо стандартного «Search…»

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

Страничка об инлайн-режиме на сайте Telegram

Результаты инлайн-режима

Результаты можно отображать двумя способами:

  • Сеткой. Удобно для выдачи картинок.

  • Вертикальным списком. Удобно для выдачи текста.

Можно совмещать два типа, но корректно отображается это только на Telegram Desktop.

Приватность и геопозиция в инлайне

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

Но зато если включить в BotFather настройку «Inline Location Data», то бот сможет видеть геопозицию пользователей, когда они используют инлайн (на мобильных устройствах). Перед этим у пользователей показывается предупреждение.

Inline feedback

Inline feedback — это апдейты о выбранных инлайн-результатах. Включаются через BotFather.

Предполагается использование inline feedback для сбора статистики, но не всегда он используется так. Inline feedback позволяет «подгружать» не все результаты сразу, а только выбранный. Например, если бот используется для поиска музыки, то он может загружать не все песни сразу, а только одну.

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

Создание наборов стикеров

Боты (и только боты!) могут создавать наборы стикеров. При этом каждый набор стикеров должен принадлежать какому-то пользователю. Посмотреть свои наборы стикеров пользователь может с помощью бота @Stickers.

Платежи через ботов

Телеграм предоставляет ботам возможность принимать платежи от пользователей. Это делается через провайдеров ЮMoney, Сбербанк, Stripe и ещё 7.

Эта возможность используются редко, потому что для использования провайдеров нужно юридическое лицо.

Страница Bot Payments API

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

HTML-игры в ботах

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

Страница Bot Gaming Platform

Telegram Login Widget

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

  1. Пользователь должен будет ввести свой номер телефона.

  2. Бот Telegram попросит подтвердить вход.

  3. Пользователь авторизуется и нажимает на «Принять» на сайте.

Telegram Login Widget не связан с Login URL button (см. раздел про кнопки выше), а является его альтернативой.

О Telegram Login Widget на сайте Телеграм

Разработка ботов

Какие апдейты можно получать

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

Вы можете получать информацию о новых сообщениях в боте и других событиях, но только один раз. Вам придётся самим хранить список чатов, старых сообщений (если это зачем-то нужно) и так далее. Если вы случайно сотрёте/потеряете эту информацию, вы её больше никак не получите.

В Telegram API бот может чуточку больше: он может получать сообщения по id, получать список участников группы и прочее.

Получение апдейтов: Bot API vs Telegram API

Если вы получили апдейт в Bot API, то второй раз вы его уже не получите.

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

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

Ограничения Bot API не позволяют сделать то же самое.

Обновления API

Telegram API и Telegram Bot API обновляются с появлением новых фич в Телеграме. Все обновления Bot API описаны на отдельной странице в документации и в официальном канале BotNews.

Лимиты

Конечно, на запросы к серверу существуют лимиты. В Bots FAQ на сайте Telegram названы следующие:

  • Не больше одного сообщения в секунду в один чат,

  • Не больше 30 сообщений в секунду вообще,

  • Не больше 20 сообщений в минуту в одну группу.

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

Другие известные ограничения в Telegram собраны на limits.tginfo.me — см. раздел про ботов.

Рассылка по пользователям

Ниже в Bots FAQ сказано, что Bot API не позволяет рассылать сообщения всем юзерам одновременно и что в будущем, может быть, они что-то для этого сделают. И написано это уже несколько лет.

Они советуют растянуть рассылку на длительное время (8-12 часов) и замечают, что API не позволит отправлять сообщения более чем ~30 пользователям в секунду.

Смена владельца бота

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

Локальный сервер Bot API

Также осенью 2020 года исходники Bot API выложили на GitHub. Теперь вы можете поднять собственный сервер Bot API. На GitHub перечислены следующие преимущества:

  • Скачивание файлов с сервера без ограничения (ограничение на отправку файлов пользователями в Телеграме — 2 ГБ),

  • Загрузка файлов на сервер до 2000 МБ,

  • Загрузка файлов на сервер с помощью локального пути и URI файла,

  • Использование HTTP URL для вебхука,

  • Использование любого локального IP-адреса для вебхука,

  • Использование любого порта для вебхука,

  • Возможность увеличить максимальное число соединений до 100000,

  • Получение локального пути файла вместо загрузки файла с сервера.

Юзерботы

В начале статьи я рассказывал о том, что такое Telegram API и Telegram Bot API.

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

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

Заключение

Я постарался собрать в одном месте и структурировать информацию о всех возможностях Телеграм-ботов. Большое спасибо vanutp, NToneE и Grinrill за помощь с фактами. Если мы что-то забыли — пишите, исправлю.

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

Вообще интерфейс бота (то есть интерфейс чата) имеет много ограничений. Но плохо ли это? Действительно удобнее использовать инструмент, когда это часть привычной среды. Я часто прямо в переписке нахожу нужную картинку или информацию с помощью инлайн-ботов. Как заядлый пользователь Телеграма, я люблю использовать ботов. И создаю ботов. И вы создавайте.

Вы можете самостоятельно создать бота в 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. Понажимайте на кнопки.

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

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

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

Для хороших рассылок нужны хорошие помощники, которые упростят настройку сообщений и в целом ускорят все процессы. Чат-боты в Telegram идеально подходят для этой роли. 

В статье расскажем, какие бывают боты в Telegram и как они работают, дадим топовую подборку чат-ботов от редакции Sendsay. Бонусом объясним, как настроить рассылку через чат-бота в Telegram.

Зарегистрируйтесь

И попробуйте Sendsay бесплатно

Что такое чат-боты и для чего они нужны

Чат-бот наряду с рекламой и стикерами – один из инструментов мессенджер-маркетинга.

Определение чат-бота уже прослеживается в его названии. «‎Чат» – общаться, «‎бот» – собственно, бот. То есть это общение через бот, а именно – общение компании с пользователем через бот.

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

Можно сказать, что чат-бот – это виртуальный помощник, и вот как он помогает:

  • Быстро решает проблемы клиентов. Чат-бот работает как ускоренная служба поддержки: оперативно обрабатывает запросы покупателей и помогает разбираться в проблемах. Кстати, 64 % потребителей считают, что круглосуточное обслуживание — самая ценная функция чат-ботов, а 65 % клиентов чувствуют себя комфортно, решая проблему без участия человека. Так что, чат-боты здорово разгружают колл-центр и службу поддержки, а еще помогают клиентам меньше переживать.
  • Отвечает на часто задаваемые вопросы. Иногда нужно быстро уточнить, как работает салон красоты в праздники, можно ли заселиться в отель с собакой, есть ли в магазине нужная книга – чат-боты помогают и с этим. Кстати, 69 % потребителей предпочитают использовать чат-ботов именно потому, что они дают мгновенные ответы. Не нужно никуда звонить и ждать очереди на линии. 
  • Принимает заказы. 41 % чат-ботов используется для продаж. И это объяснимо: с помощью чат-бота легко продвигать людей по воронке продаж. Например, человек может перейти в чат-бот, чтобы скачать подборку от стилиста, а через какое-то время заказать одежду на сайте.
  • Собирает данные клиентов. Чат-бот позволяет органично собирать информацию о новых пользователях. Например, компания может поинтересоваться, как лучше обращаться к человеку, или уточнить его предпочтения по товарам. 

Статья по теме: На страже персональных данных: как собирать информацию о клиентах

  • Дублирует функционал сайта. Чат-бот можно связать с разными разделами сайта. Например, человек может запросить у чат-бота подборку статей, которые вышли в блоге на неделе, а бот их пришлет.
  • Собирает обратную связь. Через чат-боты удобно собирать отзывы о товарах и услугах. Для отработки негативной обратной можно переводить пользователя на оператора. Кстати, если говорить об опыте использования самих чат-ботов, 80 % клиентов оценивают его как положительный.
  • Развлекает клиентов. В чат-ботах можно проводить викторины, опросы, прочие интерактивы и там же дарить призы за их прохождение.
  • Делает рассылки. В чат-боте можно настроить рассылку для текущих и потенциальных клиентов – почти так же, как в сервисе рассылок. Подробнее остановимся на этой возможности дальше. 

Пример опроса в телеграм-канале Полезный Маркетинг

Пример опроса в телеграм-канале Полезный Маркетинг

Это не все функции чат-ботов, но основные. Чат-бот может сочетать несколько функций или делать что-то одно.

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

Какому бизнесу полезно настроить чат-бота

Статистика по сегментам говорит, что B2B-компании используют чат-боты чаще (58 %), чем B2C-компании (42 %). 

В сегменте B2C чат-боты особенно подходят:

  • интернет-магазинам
  • косметологическим центрам
  • медицинским центрам
  • банкам
  • гостиничному бизнесу
  • агентствам разного профиля
  • инфобизнесу

На B2B рынке чат-боты используют в сферах:

  • ритейла
  • финансов
  • страхования
  • недвижимости
  • информационных технологий

Если брать вид бизнеса, то на долю крупных организаций приходится более 46 % рынка чат-ботов. 

А если говорить о потребностях бизнеса, то чат-боты особенно помогут компаниям, у которых:

  • Пользователи часто не могут найти нужную информацию на сайте или в соцсетях – из-за этого сильно нагружены операторы.
  • Не получается быстро обрабатывать запросы пользователей – из-за этого «‎утекают» потенциальные клиенты.
  • У сотрудников уходит много времени на рутинные и однотипные задачи, которые можно автоматизировать.

Вообще, чат-боты – это мастхэв для любой компании, которая хочет упростить свою работу и общаться с клиентами продуктивнее ⬇️

Как настроить чат-бота за 4 шага

Допустим, вы компания, и поняли, что чат-бот вам необходим. Вот краткая инструкция в помощь:

1. Получите токен в BotFather

BotFather – это бот в Telegram для создания ботов в Telegram. Его легко найти по этому же нику @BotFather.

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

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

В BotFather нужно получить токен – уникальное название чат-бота для интеграции через HTTP API с другими сервисами. Интеграция нужна, чтобы добавить в бот нужные функции.

Получить токен можно всего за 3 шага: нажать команду /newbot, выбрать название бота и выбрать юзернейм

Получить токен можно всего за 3 шага: нажать команду /newbot, выбрать название бота и выбрать юзернейм

Не отходя далеко, здесь же можно добавить к чат-боту описание, которое увидят пользователи до запуска (команда /setdescription), и аватарку (команда /setuserpic).

Так выглядит полный список команд для настройки чат-бота в BotFather

Так выглядит полный список команд для настройки чат-бота в BotFather

2. Перейдите с токеном в конструктор или сервис

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

Зарегистрируйтесь в конструкторе или сервисе и привяжите к нему чат-бота: просто укажите токен, который получили в BotFather.

В Sendsay подключение бота выглядит так

В Sendsay подключение бота выглядит так

3. Продумайте сценарий 

Теперь нужно решить, какие реплики будет выдавать бот и в какой поочередности – то есть создать сценарий. 

При создании сценария отталкивайтесь от задачи: сделать рассылку, проконсультировать покупателя, запросить обратную связь, собрать контакты. Если это ваш первый чат-бот, лучше остановиться на одной задаче.

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

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

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

4. Запустите чат-бот

Теперь осталось протестировать готовый сценарий и рассказать о нем пользователям. Все, чат-бот готов!

7 топовых чат-ботов в помощь маркетологу: подборка от Sendsay

Чат-боты в Telegram главным образом экономят время и нервы на создание контента. Одни находят подходящие картинки, другие проверяют или даже генерируют текст, третьи делают мемы. Если вы еще не пользуетесь этими чат-ботами – горячо рекомендуем ⬇️

1. @GPT4Telegrambot. По сути это бот с несколькими ботами внутри. Он открывает доступ к продуктам компании OpenAI. Например, отсюда можно перейти в ChatGPT для создания текстов или в Dall-E, чтобы сгенерировать изображение.

2. @smartspeech_sber_bot. Удобный бот для расшифровки голосовых сообщений. Здесь два варианта: отправить голосовое в бот или добавить бот в группу – и сообщения будут расшифровываться автоматически.

3. @smmgenabot. Бот, который помогает с контентом в соцсетях, но он будет полезен и email-маркетологам. Например, @smmgenabot подберет идеи для темы письма, для прехедера и вообще для контента письма. 

4. @memingbot. Бот быстро сгенерирует мем на нужную тему. Достаточно добавить фразу, фото или фразу + фото. Готовый мем можно использовать в постах, статьях, электронных письмах.

5. @orforobot. Это сайт Главред в миниатюре: проверяет текст на ошибки и показывает, насколько он читабелен.

6. @PresentationRobot. Выручит, если нужно срочно сделать презентацию или накидать тезисы к речи, а идей нет. Например, @PresentationRobot покажет примеры презентаций и поделится упражнениями, чтобы прокачать навыки выступлений.

7. @screenchat_bot. Используйте бота, когда нужно сгенерировать и заскринить переписку. Например, в формате переписки можно сымитировать диалог со службой поддержки или сделать объяснялку на сложную тему. 

Итак, мы узнали, что такое чат-бот, и поняли, как его сделать. Сохранили топовую подборку чат-ботов от редакции Sendsay. Теперь пришло время узнать, как запустить рассылку в Telegram по базе подписчиков ⬇️

Как запустить рассылку через чат-бота в Telegram

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

  • Это удобно. Не нужно собирать базу контактов с нуля. Если вы уже пользуетесь сервисом рассылок, например, Sendsay, просто объедините в карточке подписчика его email с Telegram-контактом. Один из способов сделать это – мотивировать пользователя перейти по ссылке из письма в чат-бот. Подробнее рассказали в базе знаний.
  • Это эффективно. По статистике, сообщения в Telegram просматривают чаще, чем в электронной почте. Средняя открываемость в мессенджерах доходит до 95 %, а в почте – до 20 %. 
  • Это технически просто. Сам по себе Telegram не предполагает супер дизайна или захватывающей анимации – пока это все же мессенджер с упором на текст. И получается, что настроить рассылку в Telegram намного проще, хотя бы потому, что не нужно тратить время на верстку и дизайн.
  • Это привычно. Как и в email-рассылках, в Telegram можно сегментировать базу подписчиков, персонализировать рассылки, создавать цепочки писем, задавать время отправки. По характеру рассылки могут быть такими же, как в email-маркетинге: информационные, продающие, реактивационные. 

Итак, рассылка в Telegram – это сообщения, которые отправляются через чат-бота. Сначала чат-бота нужно подключить к сервису рассылок, после этого рассылку можно запускать по базе. Расскажем, как сделать это через Sendsay ⬇️

1. Создайте бота в Telegram

Зайдите в уже знакомый нам @BotFather, нажмите /start и следуйте инструкции. В результате @BotFather отправит вам токен. Скопируйте его – он пригодится для интеграции с Sendsay.

2. Подключите бота к Sendsay

С полученным токеном перейдите в личный кабинет Sendsay → раздел Подписчики → Telegram → Подключить бота. 

Вставьте токен – и чат-бот подключен.

3. Привлеките аудиторию в чат-бот 

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

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

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

4. Продумайте содержимое рассылки

Подписчики есть – теперь нужно создать саму рассылку. Для начала определитесь, какой она будет (информационная, продающая, реактивационная или какая-то еще), из какого количества сообщений будет состоять.

Затем перейдите в Рассылки → Черновики, нажмите на плюсик и выберите «Telegram».

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

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

5. Сделайте тестовую рассылку (необязательно)

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

Также можно отправить тестовые копии некоторым подписчикам чат-бота. Для этого укажите ID подписчика (а не ник), который будет в списке подписчиков Telegram-бота.

6. Подключите аналитику (необязательно)

Чтобы отслеживать активность подписчиков, добавьте UTM-метки – специальные «хвосты» в ссылке, которые показывают источник трафика. Клики по ссылкам отобразятся в Google Analytics и Яндекс.Метрике.

6. Отправьте рассылку по всей базе

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

Подробную инструкцию про то, как сделать рассылку в Telegram через Sendsay, можно прочитать здесь. А вот тут можете узнать, как подключить бота к Sendsay. 

На этом про чат-боты все. Если вдохновились на запуск своего, желаем успеха! А если захотели сделать рассылку в Telegram – обращайтесь, мы поможем 😉

А мы напоминаем про наш телеграм-канал: делимся полезной информацией в сфере digital-маркетинга, а при подписке дарим книгу «Email-маркетинг для бизнеса». Подробнее о том, как ее получить, рассказали в закрепленном сообщении канала.  

Подпишитесь
на новости блога

Статьи, кейсы и чек-листы по digital-маркетингу от ведущих экспертов рынка

Рассылка в Телеграме: виды, особенности и инструкция по запуску

Рассылка в Телеграме: виды, особенности и инструкция по запуску

Боты для рассылок в Телеграме: как их создавать и использовать

Боты для рассылок в Телеграме: как их создавать и использовать

Присоединяйтесь к нам в соцсетях

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


  • 0

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

Иллюстрация: Telegram / Colowgee для Skillbox Media

Герман Хватков

Редактор Skillbox Media. Пишет о бизнесе и маркетинге вместе с экспертами.

Боты в Telegram разнообразны. С помощью некоторых из них компании общаются с клиентами — настраивают в таких ботах рассылки или даже создают небольшие интернет-магазины.

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

  • какими бывают боты в Telegram;
  • как сделать своего бота;
  • какой конструктор бота в Telegram выбрать.

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

Боты-помощники, которые общаются с клиентами в сообщениях, — это повсеместный тренд. Согласно опросам Oracle, более 50% покупателей ожидают, что бизнес будет доступен 24/7. Для крупных компаний боты в мобильных приложениях, социальных сетях и мессенджерах стали практически обязательны. В банке «Тинькофф», например, с помощью бота обрабатывают уже около 65% запросов клиентов.

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

Чат-бот сервиса доставки продуктов «Самокат». В компании признают, что он несовершенен, поэтому, если что-то идёт не так, к диалогу присоединяется оператор
Скриншот: чат-бот «Самоката» в Telegram

Чат-бот сервиса доставки продуктов «Самокат». В компании признают, что он несовершенен, поэтому, если что-то идёт не так, к диалогу присоединяется оператор
Скриншот: чат-бот «Самоката» в Telegram

Для чего нужны чат-боты:

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

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

Бот KinomanBot подбирает кино на вечер. Он ищет фильмы и сериалы и даёт ссылки, по которым их можно посмотреть. Кроме того, он следит за киноафишами и ищет кинотеатры, близкие к локации.

Многие из таких ботов созданы для заработка на рекламе — но не все. Так, «Сбер» запустил бота, который генерирует картинки на основе запросов пользователя. Бот работает на основе нейросети для генерации изображений ruDALL-E. Для пользователей такой бот — развлечение, но для корпорации это PR и тестирование ИИ-системы.

Скриншот: бот ruDALL-E Malevich (XL) в  Telegram

Для чего нужны подобные боты:

  • Для заработка на рекламе — в этом они похожи на Telegram-каналы. Рекламодатели обращаются за платным размещением в лентах популярных ботов.
  • Для продвижения других каналов того же проекта. Можно создать развлекательного бота, который будет просить пользователей подписаться на другие каналы.
  • Для PR и повышения узнаваемости бренда. Например, в «Альфа-Банке» создали бота, который показывает ближайший банкомат, отделение, курсы валют и результаты поиска с сайта банка.

Боты-инструменты. Они выполняют сложные функции. Один из таких ботов — Yandex.Translate. Он переводит слова и предложения на английский и русский в Telegram, без перехода в браузер. Ещё один полезный бот — URL Uploader. Он позволяет загружать файлы в Telegram. Чтобы загрузить файл, достаточно прислать боту URL документа.

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

Как работает Andy English Bot
Видео: предоставлено автором

Для чего нужны боты-инструменты:

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

Боты для заработка внутри Telegram. Некоторые боты предлагают платные функции. Частый сценарий — когда полезный бот имеет бесплатную версию с ограниченными возможностями и платную с расширенными.

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

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

Меню бота-магазина в Telegram
Скриншот: бот магазина G-Shop в Telegram

Иногда боты работают как полноценные онлайн-сервисы. Один из них — бот «Деньги за задания». Он продаёт услуги по накрутке Telegram-каналов. Бот выступает посредником между администраторами, которые хотят дёшево привлечь подписчиков в канал, и людьми, готовыми нажать кнопку «Подписаться» за деньги.

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

Меню бота-магазина в Telegram
Скриншот: бот магазина G-Shop в Telegram

Всё начинается с официального клиента Telegram BotFather. Любопытно, что он тоже бот. Это основа для любого из описанных выше решений. Именно он отвечает за создание и внешний вид бота — его название, описание и аватарку.

Посмотрим, как работать в BotFather. Сначала нужно нажать в нём кнопку «Запустить» и выбрать пункт /newbot из предложенного списка команд. Далее необходимо придумать имя для бота — оно может быть на любом языке — и юзернейм — название, которое будет отображаться в адресной строке. В конце юзернейма должно стоять слово bot.

На этом этапе BotFather создаст токен бота — он выделен на скриншоте выше. Это его уникальное название для интеграции через HTTP API. Интеграция со сторонними сервисами позволяет добавлять в бота нужные функции — об этом чуть ниже.

Чтобы установить аватарку бота, выберите команду /setuserpic; чтобы добавить описание — /setdescription. Описание бота особенно важно — это первое, что увидит пользователь ещё до того, как нажмёт «Запустить». Также стоит добавить небольшой текст о боте в шапку его профиля. Это делается через меню /setabouttext.

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

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

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

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

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

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

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

Настройки бота в меню Chatforma
Скриншот: сайт Chatforma

Стоимость: от 2000 рублей за месяц. Есть бесплатная версия на 15 дней.


Aimylogic — конструктор для ботов с искусственным интеллектом. Имеет более продвинутую функциональность: собирает и квалифицирует лиды, принимает платежи и реактивирует «спящих» клиентов — напоминает им о брошенной корзине. Может рассказать о специальных предложениях и поступлении нового товара.

Конструктор позволяет консолидировать обратную связь — собирает отзывы пользователей, которые они присылают в бот. Главные фишки платформы не связаны с Telegram, но упомянуть о них стоит.

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

Стоимость: от 5900 рублей за месяц. Есть бесплатная версия.


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

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

Конструктор даёт возможность создавать WebApp-боты. Это новый тип ботов в Telegram — сайты, интегрированные в мессенджер.

Пример WebApp-бота в Telegram от Puzzlebot
Скриншот: сайт Puzzlebot

Стоимость: от 552 рублей за месяц. Есть бесплатная версия.


Botobot — нишевый сервис, с помощью которого создают боты-магазины. Он позволяет сформировать витрину товаров, настроить рассылку новостей магазина и добавить онлайн-оплату. Есть возможность связать бота с CRM-системой и отслеживать показатели продаж.

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

Стоимость: от 320 рублей в месяц. Есть бесплатная версия.


  • Боты в Telegram разнообразны. Есть чат-боты — компании используют их, чтобы общаться с клиентами. Есть боты с развлекательным и полезным контентом. Их владельцы зарабатывают на рекламе.
  • Чтобы создать бота, сначала делают его основу в BotFather. Чтобы добавить дополнительные функции, нужно подключить конструктор ботов.
  • Если нужен сложный бот, то функциональности конструкторов может не хватить. Тогда придётся нанять программиста или команду.

Узнайте больше о технологиях в маркетинге

Как зарабатывать больше с помощью нейросетей?
Бесплатный вебинар: 15 экспертов, 7 топ-нейросетей. Научитесь использовать ИИ в своей работе и увеличьте доход.

Узнать больше

Понравилась статья? Поделить с друзьями:
  • Руководство по эксплуатации форд фокус 2 дорестайл
  • Стиральная машинка занусси easyiron инструкция по использованию
  • Монурал инструкция по применению при цистите у женщин отзывы аналоги
  • Магний в6 инструкция по применению цена consumed
  • Redmond neon flash series утюг инструкция