Инструкция по созданию чат бота telegram

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.

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

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

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("MESSAGE\t%s\t%s" % (message['chat']['id'], text))

                    if text[0] == '/':
                        command, *arguments = text.split(" ", 1)
                        response = CMD.get(command, not_found)(arguments, message)
                        logging.info("REPLY\t%s\t%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'] = "\n\t".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("REPLY\t%s\t%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’ (или любой другой метод, используемый ботом).

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

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

Я пишу ботов уже 6 лет, а для Telegram — последние 3 года. Среди моих клиентов — интернет-магазины, фитнес-центры, салоны красоты, агентства недвижимости, турагентства, отели и автосервисы.

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

Сергей Титов

Делает ботов в мессенджерах

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

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

  1. Для внешнего общения — с клиентами, партнёрами и другими людьми, которые не работают в компании. Сюда входят продающие и обучающие боты. Первые помогают клиенту выбрать и купить нужный товар, а вторые отвечают на вопросы или предлагают полезную информацию о компании.
  2. Для внутреннего общения — между сотрудниками или разными отделами. С их помощью чаще всего заполняют отчёты или проверяют, как работники выполняют задачи.

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

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

Шаг 1. Выберите платформу для создания ботов

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

MenuBuilderBot — конструктор, который работает прямо в мессенджере. Это удобно, потому что написать простого бота можно со смартфона. В сервисе можно сделать чат-бота в Telegram бесплатно с помощью базовых функций, например текстовых блоков или форм «Вопрос-ответ». За дополнительные нужно платить — к таким относятся рассылки или реферальные программы.

Так выглядит главный экран MenuBuilderBot и меню с добавлением бота

Botmaker — конструктор, с которым можно работать на компьютере. Для начала хватит бесплатного тарифа — воспользоваться ботом сможет до 500 человек. Стоимость PRO-версии начинается от 1 250 ₽ в месяц и зависит от тарифа. С ней сможете работать через бот больше чем с 500 клиентами, а ещё смотреть статистику их поведения: куда они нажимают в боте, в какой момент решают из него уйти.

Это конструктор в Botmaker

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

Сергей Титов

Делает ботов в мессенджерах

PuzzleBot — веб-конструктор с простым интерфейсом и широкими возможностями. У сервиса есть бесплатный тариф, на котором доступно 15 команд и условий для бота. А ещё есть ограничение по количеству пользователей — не больше 150 человек. Стоимость платных тарифов начинается от 690 ₽ в месяц и зависит от функций. Например, в бесплатной версии будет реклама сервиса — её увидят все пользователи в самом первом сообщении. А в платных это можно отключить.

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

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

Сергей Титов

Делает ботов в мессенджерах

Представим, что у вас небольшой салон красоты и вы хотите, чтобы клиентам было проще записываться на процедуры. Давайте разберёмся, как создать бота самому в PuzzleBot.

Шаг 2. Зарегистрируйтесь в PuzzleBot

Это можно сделать через электронную почту или Telegram. Весь процесс занимает пару минут.

Откройте сайт и нажмите кнопку «Начать пользоваться бесплатно». После этого вы попадёте на страницу регистрации.

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

Запустите бота PuzzleBot в Telegram. Он автоматически создаст ваш аккаунт на сервисе. Нажмите кнопку «Перейти в личный кабинет».

Так выглядит PuzzleBot в Telegram и сообщение о том, что аккаунт готов к работе

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

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

Шаг 3. Создайте заготовку бота в BotFather

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

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

Запустите BotFather и выберите команду /newbot из списка. Сервис создаст нового бота, и вам нужно будет придумать:

  • Название — будет отображаться в диалогах пользователей и может быть любым.
  • Имя — поможет найти среди других похожих сервисов, должно быть уникальным, написанным латиницей и содержать слово bot. Минимальная длина — 5 символов, а максимальная — 32.

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

Скопируйте API-токен, который сгенерировал BotFather. Это нужно, чтобы привязать бота к сервису PuzzleBot и начать работать в конструкторе. Лучше никому не пересылать токен, чтобы посторонние не смогли им воспользоваться.

Так выглядит API-токен

Добавьте API-токен в PuzzleBot. Нужно подождать, пока сервис примет бота. Затем он появится в личном кабинете.

В поле нужно вставить скопированный API-токен, и бот появится в личном кабинете PuzzleBot

Шаг 4. Создайте бота с помощью конструктора

Нажмите на бота в личном кабинете и перейдите на страницу со статистикой. В левом меню выберите вкладку «Конструктор». В PuzzleBot уже будет несколько команд для примера — их нужно удалить. После этого останется только стартовая, с которой вы начнёте настройку.

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

Создайте стартовую команду — обычно это приветствие и короткое описание функций. Для этого нажмите на /start и добавьте блоки в правой части экрана.

Для начала достаточно освоить два блока: «Текст» и «Изображение». В первом случае бот отправит пользователю только сообщение, а во втором — ещё и картинку. Можно поставить красивое фото салона, чтобы клиент сразу увидел, как у вас уютно.

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

Блок «Изображение» вы найдёте в меню справа. Сначала загрузите картинку, а потом напишите текст

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

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

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

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

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

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

Когда добавите все нужные кнопки, кликните в любом свободном месте, и меню справа свернётся. Новые команды для кнопок появятся автоматически. Чтобы сохранить, нажмите «Применить изменения» в левой части экрана. Эту кнопку можно нажимать после каждого действия или в самом конце, когда закончите создавать бота.

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

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

После этого конструктор автоматически создаст новые команды «Стрижка» и «Маникюр».

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

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

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

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

Чтобы задать ограничение, нажмите «Запрет на выбор дат» и выберите «Даты из прошлого». А чтобы обозначить, когда вы принимаете клиентов, кликните «Запрет на выбор дня» и отметьте галочками, когда вы закрыты

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

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

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

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

Добавьте новую команду «Заявка» — на неё клиенты попадут из команд «Стрижка» или «Маникюр» и смогут оставить свои контакты для менеджера.

Кнопка «Добавить» находится в левой верхней части экрана. Выберите «Обычная команда» в выпадающем меню

Оформите команды с услугами с помощью текстовых блоков и инлайн-клавиатуры. Для этого нажмите на команду и добавьте блок «Текст» с предложением заполнить заявку. Затем прикрутите инлайн-клавиатуру, которая будет переводить клиента на форму заявки.

Это готовые команды для перехода в форму заявки из услуг «Стрижка» и «Маникюр»

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

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

Это формы ввода с масками «Текст» и «Телефон». Если использовать маски, клиент не сможет оставить неверные данные

Все заявки будут приходить в вашего бота — вы получите уведомление, когда новый пользователь выберет дату или поделится контактами. Клиенты этих сообщений не увидят. А ещё действия будут отображаться в блоке «Уведомления» в личном кабинете на сайте PuzzleBot.

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

Готовый бот в конструкторе будет выглядеть так:

Чтобы увидеть все команды и связки между ними, покрутите колёсико мыши и отдалите проект

Шаг 5. Оформите бота в BotFather

Чтобы ваш бот выглядел в Telegram аккуратно и завершённо, нужно добавить ему аватарку, описание в профиле и на главном экране.

Зайдите в BotFather, нажмите «Меню» и выберите команду /mybots. Сервис предложит выбрать одного из ваших ботов. Кликните на него — и увидите меню. Выберите Edit bot.

Добавьте описание профиля и бота, аватарку. Когда нажмёте на Edit bot, появится меню, где можно выбрать, что именно вы хотите исправить.

About — описание бота в профиле. Description — сообщение на первом экране. Botpic — аватарка

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

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

Шаг 6. Проверьте, правильно ли работает бот

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

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

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

Проверим бота для салона красоты по всем этим критериям.

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

Что запомнить

  1. Чат-боты полезны для бизнеса — им можно поручить простые консультации, запись клиентов на удобный день или подбор товаров по запросу. Это разгрузит менеджеров, они будут меньше заниматься рутиной.
  2. Бота можно создать в любом мессенджере, но Telegram — самый удобный. Тут бот может работать как мини-сайт или канал — подойдёт, если нужен дополнительный профиль, как в соцсетях.
  3. У многих специальных сервисов по созданию ботов есть бесплатные версии. Если вы пишете программу первый раз, платить необязательно — основных функций будет достаточно для теста.
  4. Для создания чат-бота не нужны навыки программирования. Достаточно немного усидчивости, внимания и нескольких часов свободного времени.

Реклама может работать сама — с Рекламной подпиской от Яндекс Бизнеса

Запустить рекламу

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

67
показов

250K
открытий

3
репоста

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

Шаг 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-ботов и напишем своего для отправки пользователю случайных комплиментов из коллекции с помощью языка программирования Python.

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

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

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

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

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

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

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

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

В клиники Подмосковья можно записаться с помощью чатбота «Денис». Источник

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

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

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

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

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

Бот с тестом-викториной для Московского зоопарка

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

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

Популярные конструкторы для создания ботов Telegram:

Manybot — сервис для создания ботов с помощью сообщений в чате. Подойдет для самых простых сценариев использования. У Manybot есть встроенная реклама и нет возможности отключить ее с помощью подписки;

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

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

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

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

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

Для Python существуют следующие библиотеки для ботов Telegram:

aiogram — комплексная библиотека с отличной документацией, поддержкой и активным сообществом. Есть русскоязычное сообщество разработчиков, которое поможет с трудностями и ответит на вопросы. Библиотека aiogram поддерживает асинхронность, работу с машиной состояний и рассчитана на разработку сложных ботов с большим количеством ежедневных пользователей. Сейчас у aiogram две активные версии, и лучше сразу выбирать версию 3.0, которая пока находится в бете, но работает стабильно. Библиотека подразумевает глубокие знания Python и опыт в программировании, поэтому может быть сложной для начинающих;

telebot (pyTelegramBotAPI) — библиотека для простых ботов с небольшим количеством пользователей, поддерживающая работу с основными методами Telegram API. С telebot сложнее организовать асинхронность и управлять большой нагрузкой, но новичкам в разы легче и приятнее с ней работать.

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

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

PyCharm — полноценная среда разработки на Python от компании JetBrains. Более тяжеловесная, чем VS Code, и включает в себя дополнительные инструменты для профессиональной работы над большими проектами. Есть как бесплатная версия, так и продвинутая по подписке. Для разработки даже самых сложных ботов хватит возможностей бесплатной версии PyCharm.

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

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

BotFather для создания ботов в Телеграмм

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

Начало создания бота в BotFather

После этого BotFather попросит ввести название бота, которое пользователи будут видеть в его профиле и списке своих чатов. Оно может быть любым, но должно передавать суть бота и его возможности. Мы разрабатываем бота для комплиментов, так его и назовем — «Комплименты».

разработка бота для комплиментов в BotFather

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

import telebot # импортируем telebot


# передаём значение переменной с кодом экземпляру бота
token = ('Ваш токен')
bot = telebot.TeleBot(token)


# хендлер и функция для обработки команды /start
@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id, "Привет ✌️")


# бесконечное выполнение кода
bot.polling(none_stop=True, interval=0) Встроить код

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

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

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

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

secrets = {'BOT_API_TOKEN': 'Ваш токен'} Встроить код

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

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

# передаём значение переменной с кодом экземпляру бота
token = secrets.get('BOT_API_TOKEN')
bot = telebot.TeleBot(token)


# хендлер и функция для обработки команды /start
@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id, "Привет ✌️")


# бесконечное выполнение кода
bot.polling(none_stop=True, interval=0)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# передаём значение переменной с кодом экземпляру бота
token = secrets.get('BOT_API_TOKEN')
bot = telebot.TeleBot(token)


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


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


# бесконечное выполнение кода
bot.polling(none_stop=True, interval=0)

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

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

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

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

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

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

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

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

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

Бот vs. канал

Какие преимущества у бота по сравнению с Telegram-каналом:

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

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

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

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

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

Какие бывают боты

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

  • Собеседники реагируют на заданные фразы и общаются по скрипту, а если на запрос не получается ответить заготовленной репликой — зовут человека.
  • Каталоги дают возможность продавать товары и услуги без перехода на сайт (BagginsCoffee_bot, G_Shop_bot).
  • Помощники выполняют роль ассистентов для администраторов каналов: собирают статистику (Crosser_bot), позволяют форматировать текст, добавлять к нему кнопки, заданные реакции на выбор (ControllerBot), следят за активностью в чате, выдают предупреждения нарушителям, удаляют ботов и спам (Combot), выгружают списки лайкнувших пост для проведения розыгрышей (Getlikersbot) и т. д.
  • Инструменты выполняют нетипичные функции: скачивают видео по ссылкам (URL Uploader) и посты из запрещенной соцсети (InstaBot), конвертируют видео в gif (Vgifbot), отслеживают цены на авиабилеты (AviasalesBot), распознают текст по аудио (SaluteSpeech Bot), переводят текст (YandexTranslate), шлют напоминания (Delorean_bot), подсказывают курсы валют (Kursator_bot) и мн. др.
  • Поисковики ищут и позволяют бесплатно скачивать файлы — кино, книги, музыку. Время от времени система блокирует их как пиратские.
  • Развлекательные — источник контента на любой вкус. Они подбирают фильмы (Kinomanbot), и обучающие материалы (ArzamasBot) выдают записи радиоэфиров (Radiobot), делятся рецептами (The_chef_bot), присылают гороскопы (Zodiac_bot) и смешные стикеры (StickerStickyBot) и т. д.

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

Есть три способа:

  1. Написать его вручную. Для этого подходит любой язык программирования, от PHP до Java, самый легкий для усвоения и популярный вариант — Python.
  2. Заказать его у программиста, который напишет бота на одном из языков программирования по вашему ТЗ.
  3. Собрать его на специальной платформе. Это проще и быстрее, потому что не требует навыков написания кода. Бот по этому способу собирается как в конструкторе, поэтому он дает меньше возможностей. Благо, платформ немало — можно подобрать максимально подходящую функциональность.

Создать бота в Telegram можно, например, через:

  • Manybot — бесплатный конструктор в самом Telegram для создания простых ботов с многоуровневым меню, опцией отправки файлов и автопостинга, а также выдачей доступа администраторам. Из минусов — неотключаемая реклама.
  • Botobot — конструктор ботов для ecommerce: с каталогом, корзиной, встроенной оплатой и поддержкой. Есть возможность аналитики продаж. В бесплатной версии доступно создание одного бота с количеством товаров до 20, в платной три тарифа — от 320 до 3700 руб. в месяц.
  • BorisBot позволяет строить автоворонки для разных сегментов аудитории на сайте, в соцсетях, в Telegram и других мессенджерах. Здесь можно создать специализированного бота для ресторана, коворкинга, комьюнити, мероприятия, экскурсии, образовательного проекта, а также телемедицины, поддержки пользователей и набора персонала. Либо выбрать готовое решение на маркетплейсе. Боты интегрируются с разными сервисами и обмениваются данными с CRM-системами. Есть бесплатная версия с ограничениями, платные в зависимости от специфики и объемов задач стоят от 990 и 7500 руб. в месяц.
  • Smartbot Pro — инструмент с готовыми сценариями чат-ботов для разных бизнес-задач, который интегрируется с CRM-системами и Google Таблицами. К боту в нем можно подключить прием оплаты, а для Telegram даже создать полнофункциональный интернет-магазин. Бесплатный тестовый доступ работает две недели, безлимитный доступ к конструктору стоит от 750 руб. в месяц.

BorisBot и Smartbot Pro — участники маркетплейса eLama, поэтому наши клиенты могут использовать их бесплатно.

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

Для этого соберем простого бота для лидогенерации в Smartbot Pro. Пусть он дает полезный контент и собирает заявки в зависимости от ответов пользователя. Например, присылает ссылку на чек-лист на сайте и сохраняет контакт и отправляет его в Google Таблицу менеджеру по продажам.

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

Чтобы создать и запустить Telegram-бота, нам потребуются:

  • Аккаунт в сервисе eLama, чтобы иметь бесплатный доступ к Smartbot Pro и BoriBot. Чтобы сохранять работоспособность бота, нужно каждый месяц заходить в конструктор с авторизацией через eLama.

  • Аккаунт в Google, чтобы сделать Google Форму.

  • Личный профиль в Telegram.

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

  • Пять—десять минут времени.

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

  • Зайдите в Smartbot Pro через eLama

  • Создайте кабинет

  • Задайте настройки

  • Подключите BotFather

  • Пропишите сценарий бота

  • Опубликуйте и проверьте

Зайдите в Smartbot Pro через eLama

Авторизуйтесь в личном кабинете eLama и в меню слева выберите раздел «Маркетплейс инструментов». Затем найдите в списке Smartbot Pro и уверенно жмите «Использовать бесплатно» — как клиент eLama, вы сэкономите 9000 руб. в год.

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

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

Узнать о бесплатных инструментах —>

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

Вы залогинились в Smartbot Pro через eLama и наблюдаете приветственный интерфейс сервиса. Создайте собственный кабинет — введите его название и адрес. Можно выбрать любое название: оно не повлияет на функционирование бота.

Регистрация в Smartbot Pro

Задайте настройки

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

Начинаем создание бота

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

Настройки создания

Подключите BotFather

Не закрывайте SmartbotPro, параллельно откройте Telegram на компьютере и перейдите в бот BotFather. Нажмите кнопку Menu рядом с полем для ввода текста и выберите команду /newbot.

Ввод команды для начала

Затем добавьте:

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

Название бота

  • Юзернейм — он должен оканчиваться на _bot, например: pashaisgreat_bot. Это ссылка, которая будет использована, например, в рекламных размещениях. По ней пользователи будут попадать в бота. Обычно она скрыта от глаз и видна только в окне «Информация о боте», но в идеале должна быть похожа на название бота — по ней подписчики тоже могут искать его в поиске.

Юзернейм или ссылка на бота

  • Аватарку — чтобы брендировать бота или визуально указать, что он принадлежит вам.

  • Описание бота — текст, который видит новый пользователь при запуске бота, обычно о том, что тот умеет делать.

Описание бота

  • Информацию о боте — чтобы объяснить, чем полезен бот.

Информация о боте

  • Ключ — его передадим в Smartbot Pro, чтобы бот, который мы там создаем, работал в Telegram.

Когда мы задали название-имя и юзернейм-ссылку, BotFather пришлет нам токен из цифр и знаков.

Строка с токеном

Его нужно скопировать и вставить в поле «Токен» на вкладке «Канал» в настройках Smartbot Pro.

Куда нужно вставить токен

Следующий шаг: отправьте боту, который мы создали в Telegram, кодовое слово из меню настроек Smartbot Pro. Интеграция сервиса и Telegram-бота настроена!

Пропишите сценарий бота

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

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

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

Конструктор бота

1 — меню добавления событий и условий. В нем мы добавляем в шаблон новые элементы или блоки, из которых соберем сценарий чат-бота.

2 — блоки. Каждый блок — это событие: например, приветственное сообщение после запуска бота или сообщение с предложением оставить заявку.

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

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

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

Итак, мы изучили интерфейс Smartbot Pro. Теперь добавим тексты в блоки. У нас будет пять блоков:

  • приветственное сообщение;

  • выбор опций: оставить заявку, получить чек-лист, узнать контакты;

  • оставить заявку;

  • получить чек-лист;

  • узнать контакты.

Форма в конструкторе

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

Мысленно пройдите по стрелкам, чтобы проверить логику. Например, после кнопки «Оставить заявку» должна следовать наша Google Таблица, а из нее два условия — в случае успеха и неуспеха. Каждое условие должно заканчиваться сообщением для пользователя или возвращать его на предыдущий этап.

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

В Smartbot Pro в блоке «Добавление строки в Google Таблицу» добавьте поля «Запись в строку». Поставьте знак процента и выберите, какие данные о пользователях хотите собрать: имя, фамилию, пол, дату рождения, контакты. Если не планируете собирать телефоны, обязательно соберите данные с именем пользователя — username, датой — date и временем — time, чтобы хоть как-то его идентифицировать.

Сбор данных пользователей

Авторизуйте Smartbot Pro в Google Таблицах, чтобы он мог отправлять данные в вашу таблицу. В нем доступны и другие способы работы с заявками — например, передача лида в amoCRM.

Рекомендации по созданию сообщений в боте

  • Описание бота — это первое, что видит пользователь еще до захода в него. Его нужно заполнить в BotFather. Напишите в описании, что происходит в боте и зачем пользователю в него заходить.

Описание бота

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

  • Используйте метки и сохраните их в отдельной таблице, чтобы понимать, откуда приходят пользователи в бот. Для этого добавьте к ссылке бота параметр start= и после знака равно впишите названия, по которым определите источник перехода. Например, при размещении рекламы бота «Еламыч» в канале «Русский маркетинг», добавьте к ссылке бота https://t.me/elama_choose_adv_bot метку с названием канала латиницей — ?start=russkiy_marketing. Должно получиться так:

https://t.me/elama_choose_adv_bot?start=russkiy_marketing

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

  • Чтобы кнопки были удобными, размещайте их внутри сообщения. Для этого в Smartbot Pro есть специальная галочка «Показывать кнопки внутри сообщения inline». Если в кнопках длинные надписи, лучше пронумеровать их цифрами, буквами или эмодзи и приложить расшифровку знаков в посте. Слишком длинный текст может не отображаться на кнопке целиком и останется неясным для пользователя.

  • Когда предлагаете пользователю ввести номер телефона, предусмотрите несколько вариантов. Например, внутри Telegram есть функция, которая позволяет передать телефон одним нажатием кнопки.

Кнопка с автоматическим отправлением номера

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

Опубликуйте и проверьте

Наконец, нажмите «Опубликовать». Бот готов, теперь его нужно проверить — пройти все возможные сценарии в самом Telegram. Получить полезный материал, оставить заявку, проверить, попала ли заявка в Google Таблицу и напомнить менеджеру по продажам, что ему нужно заглядывать в эту таблицу. Также вы можете настроить уведомления о заявках в сам Telegram. Затем исправить ошибки, если они есть, а в дальнейшем — дорабатывать чат-бот под специфику своего продукта, анализировать его и улучшать.

Мы сделали бот с простым, но, по ощущениям, самым популярным сценарием. Теперь вы можете тестировать и запускать его или другие шаблоны из инструмента Smartbot Pro, бесплатного для клиентов eLama.

Понравилась статья? Поделить с друзьями:

Это тоже интересно:

  • Инструкция по стирке спецодежды на производстве
  • Инструкция по созданию телеграмм канала
  • Инструкция по технике безопасности в кабинете истории
  • Инструкция по созданию текстовых документов
  • Инструкция по стирке спецодежды на пищевых предприятиях образец

  • Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии