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

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

  • автор:

Простой Telegram бот для поиска по сайту на WordPress без знаний программирования

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

Что получим?

Что мы получим? Получим бота ( пример бота), который умеет искать по сайту и присылает пользователю ссылку на статью или набор ссылок на статьи. В названии я написал WordPress, но по идее любой сайт. который поддерживает RestApi. Показывать буду на примере своего сайта, для которого это делал. Итак есть контентный сайт gdesnimali.ru, сайт на wordpress и каждый пост там — это описание локаций того или иного фильма. Искать мы будем только по названию фильма, а оно указано в заголовке, поэтому интересует поиск только по заголовку. Мы ожидаем, что в бота человек напишет название фильма, а в ответ хочет получить все что найдет поисковик на сайте.

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

Идем по ссылке t.me/BotFather — это чат бот для создания ботов. Там пишем /newbot, он попросит выбрать нас название для своего бота, обязательное требование, чтобы название заканчивалось на _bot, поэтому у меня gdesnimali_bot

Если название подошло, то нам покажется сообщение где будет токен, он то нам и нужен. Выглядит это примерно так:

Use this token to access the HTTP API:
5133698220:AAHqiEwVzn0lH2nrwqntlHNmYeQecGL0x

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

Но не спешите уходить из бота, он знает еще две нужные нам команды:

/setuserpic — отправляйте команду и следом картинуку, которая будет аватаркой бота.

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

Адаптируем код

Итак, я не программист, поэтому кто-то может уйти в депрессию от моего кода, но главное — он работает. Код просто копируем и правим пару мест

import telebot import requests from telebot import types bot = telebot.TeleBot('ВОТ ТУТ НУЖНО ВСТАВИТЬ КОД ОТ ТЕЛЕГРАМ') bot.remove_webhook() @bot.message_handler(commands=['start']) def start_message(message): user_id = message.from_user.id pressStartButton = 'Кнопка старт' markup = types.ReplyKeyboardMarkup(resize_keyboard=True) filmSearchButton = types.KeyboardButton('ВОТ ТУТ КНОПКА ДЛЯ СТАРТА ПОИСКА') markup.add (filmSearchButton) bot.send_message(message.chat.id, "ВОТ ТУТ ПРИВЕТСТВЕННОЕ СООБЩЕНИЕ БОТА ПОСЛЕ КНОПКИ СТАРТ", parse_mode='html', reply_markup=markup) @bot.message_handler(content_types=['text']) def lalala (message): if message.chat.type == 'private': if message.text == 'ВОТ ТУТ КНОПКА ДЛЯ СТАРТА ПОИСКА': bot.send_message(message.chat.id, 'ВОТ ТУТ ОПИСАНИЕ ЧТО МОЖНО ИСКАТЬ') else: user_id = message.from_user.id searchQuery = message.text url = f"ВОТ ТУТ АДРЕС ВАШЕГО САЙТА wp-json/wp/v2/posts?search=" responce = requests.get(url) if not responce.json(): bot.send_message(message.chat.id, 'Я ничего не нашел по вашему запросу') for SearchResult in responce.json(): title = SearchResult['title'] completeMessage = f" " bot.send_message(message.chat.id, completeMessage) bot.polling(none_stop=True)

Что нужно в нем поменять?

Где надпись «ВОТ ТУТ НУЖНО ВСТАВИТЬ КОД ОТ ТЕЛЕГРАМ» — нужно вставить код который вы получили в телеграм при создании бота.

Где надпись «ВОТ ТУТ АДРЕС ВАШЕГО САЙТА» — должно получиться вот так, только вначале ваш сайт — f»https://gdesnimali.ru/wp-json/wp/v2/posts?search=»

Где надпись «ВОТ ТУТ КНОПКА ДЛЯ СТАРТА ПОИСКА» (Обратите внимание она в коде два раза, оба раза должно быть одинаково до символа» — нужно написать просто на русском запрос на поиск, у меня написано «Искать фильм» — это кнопка которая будет снизу в меню, при ее нажатии он выведет сообщение «ВОТ ТУТ ОПИСАНИЕ, ЧТО МОЖНО ИСКАТЬ» — у меня это «Введите название фильма».

Готово, теперь вам нужно просто сохранить этот код в файле питон, т.е. он должен заканчиваться на .py, например bot.py проще всего код вставить в обычный блокнот, там поправить и потом нажать «сохранить как» и сразу опубликовать с нужным форматом .py

Запуск на сервере

Бот должен где-то работать и он не может это делать на серверах телеграм.

Для своего бота я использую VPS сервер своего сайта и это было отдельным приключением все там настроить и установить. Вам я предлагаю использовать, как минимум на первое время хостинг pythoneverywhere. Он бесплатный для одного проекта. И есть отличная инструкция как запустить там бота. Я не буду ее переписывать, просто используйте код полуенный выше вместо кода в инструкции (Например эта: ссылка на инструкцию).

Делаем простого бота в Telegram на Python. Интеграция с Excel

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

Краткое описание бота

Наш бот будет создан на тематику Белого движения в гражданской войне в России (1917-1922) /сегодня разговор не о политике. Это просто пример/

  • По команде /start бот будет приветствие и посылать стикер;
  • После приветствия появится клавиатура под строкой набора сообщений с двумя кнопками «Вывести случайную цитату белогвардейца» и «Литература»
  • Нажатие на первую кнопку выведет рандомную цитату из excel файла (такое извращение нужно для подготовки к будущему проекту)
  • Нажатие на кнопку «Литература» выдаст инлайновую клавиатуру (далее будет прояснение, для тех кто не понял что это) с названиями произведений белогвардейских авторов или о белогвардейцах.После нажатия клавиатура пропадёт (просто этим навыком, думаю, необходимо обладать), начнётся загрузка pdf файла и появится оповещение «Приятного чтения!»

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

Начало. Создание бота и добавление библиотек.

Для начала добавим библиотеку pyTelegramBotAPI обычным пипом в cmd.

pip install pyTelegramBotAPI

А также загрузим простенькую библиотеку для работы с Excel. (ЧИТАЕТ ТОЛЬКО .xls. )

pip install xlrd

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

import telebot #импорт pyTelegramBotAPI from telebot import types #также достанем типы import random #рандом обязательно import xlrd #библиотка чтения экселевских файлов

Далее нужно создать самого бота в телеграме. Для этого пройдёмся по следующим шагам:

  1. Найти в поиске телеграма @BotFather
  2. Написать ему команду /newbot
  3. Первым сообщение отправить имя бота, а вторым его юзернейм (который пишется с @). Он должен быть уникальный и оканчиваться на Bot или _bot

После этих шагов батя пришлёт нам ссылку на нашёго бота и его API.

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

Если коротко, то API — это контракт, который предоставляет программа. «Ко мне можно обращаться так и так, я обязуюсь делать то и это».
(Более подробная инфа тут API)

Кодим

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

bot = telebot.TeleBot("TOKEN")

В начале, при написании команды /start, бот у нас выдаст приветствие. Соответственно, вставляем декоратор обработчика сообщений.

@bot.message_handler(commands=['start'])

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

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

Теперь наш бот понимает команду /start, но ещё ничего не делает. Создаём функцию приветственного сообщения.

@bot.message_handler(commands=['start']) def send_welcome(message): stic = open('stic/welcome.webp', 'rb') #чтение файла в двоичном формате # клавиатура markup = types.ReplyKeyboardMarkup(resize_keyboard=True) but1 = types.KeyboardButton("Вывести случайную цитату белогвардейца") but2 = types.KeyboardButton("Литература") markup.add(but1, but2) bot.reply_to(message, "Здравствуй, \nСмотрю, ты за Единую, Великую и Недилимую".format(message.from_user) ,parse_mode='html',reply_markup=markup) bot.send_sticker(message.chat.id,stic)

Пробежимся по коду

Строкой stic = open(‘stic/welcome.webp’, ‘rb’) мы записываем в переменную путь к нашему стикеру в формате .webp (скачать его можно из сообщений телеграма правой кнопкой мыши, «сохранить как»)

Ниже происходит создание клавиатуры
markup = types.ReplyKeyboardMarkup(resize_keyboard=True) , а точнее запись в переменную подстрочной клавиатуры. Параметр resize_keyboard=True подгоняет кнопки по высоте до возможного минимума. Также создаём две кнопочки и добавляем в клавиатуру:

but1 = types.KeyboardButton("Вывести случайную цитату белогвардейца") but2 = types.KeyboardButton("Литература") markup.add(but1, but2)

Клавиатура готова, но пока не используется. Пока оставим её и переключимся на сообщение. Одной строкой мы указываем боту отправить сообщение с текстом, именем отправителя ( , а вытягивает его он из .format(message.from_user) мы можем дописать .format(message.from_user, bot.get_me()) и вызвать имя бота, добавив в текст ), правилом оформления parse_mode=’html’ ( также можно выбрать ‘markdown’) и определением клавиатуры, которую создали выше.

bot.reply_to(message, "Здравствуй, \nСмотрю, ты за Единую, Великую и Недилимую".format(message.from_user) ,parse_mode='html',reply_markup=markup)

Последней строкой отправляем стикер bot.send_sticker(message.chat.id,stic)

Приветственное сообщение и клавиатура

Время дать возможность боту коммуницировать

@bot.message_handler(func=lambda message: True) def menu(message): if message.chat.type == 'private': if message.text == "Вывести случайную цитату белогвардейца": #достаём циататы из ворда rb = xlrd.open_workbook('citat/citat.xls', formatting_info=True) sheet = rb.sheet_by_index(0) for rownum in range(sheet.nrows): rand = int(random.randint(0,rownum)) row = sheet.row_values(rand) bot.send_message(message.chat.id, row) elif message.text == "Литература": #инлайновая клавиатура inMurkup = types.InlineKeyboardMarkup(row_width=1) but1 = types.InlineKeyboardButton("И.Ф. Плотников - Александр Васильевич Колчак. Исследователь, адмирал, Верховный правитель России",callback_data='book1') but2 = types.InlineKeyboardButton("А.В. Туркул - Дроздовцы в огне", callback_data='book2') but3 = types.InlineKeyboardButton("П.Н. Врангель - Записки", callback_data='book3') but4 = types.InlineKeyboardButton("М.Г. Дроздовский - Дневник", callback_data='book4') inMurkup.add(but1, but2, but3, but4) bot.send_message(message.chat.id, "Книги на любой вкус", reply_markup=inMurkup) else: bot.send_message(message.chat.id, "Я не знаю что и ответить")

Букв много, но сейчас всё раскидаем. Берём знакомый декоратор и делаем проверку лямбдой сообщение. Если не в курсе что такое лямбда-функция, то сюда. Бот у нас работает через личные сообщения, поэтому пропишем if message.chat.type == ‘private’: , если требуется, то можете указать условия для “group”, “supergroup” или “channel” , но нам это не нужно.

Далее идёт строка с текстом. ВАЖНО текст должен совпадать с названием кнопки клавиатуры, которую указывали выше.

Создаём экселевский файлик, в первую колонку вписываем цитаты, сохраняем в формате .xls в папку, как делали со стикером.

Со спокойной душой вызываем на файл на чтение
rb = xlrd.open_workbook(‘citat/citat.xls’, formatting_info=True), указываем лист с которого считываем инфу sheet = rb.sheet_by_index(0) индексы как у массива (первый элемент нулевой).

Далее определяем диапазон заполненных строк в листе и записываем их количество в rownum . Используем эту переменную как верхнюю границу до которой может сгенерироваться случайное число rand = int(random.randint(0,rownum)) . Получив ячейку, вытаскиваем из неё значение row = sheet.row_values(rand) отправляем его bot.send_message(message.chat.id, row) .

Вышло как-то так

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

elif message.text == "Литература": #инлайновая клавиатура inMurkup = types.InlineKeyboardMarkup(row_width=1) but1 = types.InlineKeyboardButton("И.Ф. Плотников - Александр Васильевич Колчак. Исследователь, адмирал, Верховный правитель России", callback_data='book1') but2 = types.InlineKeyboardButton("А.В. Туркул - Дроздовцы в огне", callback_data='book2') but3 = types.InlineKeyboardButton("П.Н. Врангель - Записки", callback_data='book3') but4 = types.InlineKeyboardButton("М.Г. Дроздовский - Дневник", callback_data='book4') inMurkup.add(but1, but2, but3, but4) bot.send_message(message.chat.id, "Книги на любой вкус", reply_markup=inMurkup)

Определяем клавиатуру inMurkup = types.InlineKeyboardMarkup(row_width=1) параметр row_width=1 говорит о том, что на одной строке будет одна кнопка. Принцип кнопок создания такой же как и у обычной клавиатуры, но появляется параметр callback_data значения которого примет бот после нажатия на кнопку и поймёт что нужно сделать (далле это всё опишем).

Последней строкой отправляем сообщение и цепляем к нему инлайновую клавиатуру.

Работа с callback_data

@bot.callback_query_handler(func=lambda call: True) def callback_inline(call): try: if call.message: if call.data == 'book1': doc = open('boo/Plotnikov_Ivan-Aleksandr_Vasilevich_Kolchak_Issledovatel_admiral_Verhovnyi_pravitel_Rossii.pdf', 'rb') bot.send_document(call.message.chat.id, doc) elif call.data == 'book2': doc = open('boo/Turkul_-_Drozdovtsy_v_ogne.pdf','rb') bot.send_document(call.message.chat.id, doc) elif call.data == 'book3': doc = open('boo/Vrangel_P_Zapiski_a4.pdf', 'rb') bot.send_document(call.message.chat.id, doc) elif call.data == 'book4': doc = open('boo/Drozdovsky_dnevnik_1963__ocr.pdf', 'rb') bot.send_document(call.message.chat.id, doc) #удаляем инлайновую клаву bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Книги на любой вкус", reply_markup=None) #Создаём уведомление bot.answer_callback_query(callback_query_id=call.id, show_alert=False, text='Приятного чтения!') except Exception as e: print(repr(e))

Первым делом вызываем декоратор обработки колбэка и подтверждаем, что он был получен @bot.callback_query_handler(func=lambda call: True) . Далее создаём функцию с конструкцией try-except (Что это? Чекай). Код хоть и приличный по объёму, но весь однотипный. Через if мы понимает какая «дата» пришла от кнопки, например
if call.data == ‘book1’: отвечает за первую кнопку с книгой про Колчака. Соответственно, командой

doc = open('boo/Plotnikov_Ivan-Aleksandr_Vasilevich_Kolchak_Issledovatel_admiral_Verhovnyi_pravitel_Rossii.pdf', 'rb')

мы создаём переменную doc в которую «суём» pdf файл, который сохранили в папку «boo» заранее.

Теперь строкой bot.send_document(call.message.chat.id, doc) отправляем файл в чат.

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

Вызываем функцию bot.edit_message_text По тексту определяется сообщение и
в параметр, который мы использовали для добавления клавиатуры reply_markup вносим значение None .

Уведомление призывается заклинанием

Параметр show_alert отвечает за вид оповещения (False простое временное уведомление, True уведомление с кнопкой «Ок»)

1 — False, 2 — True

Завершаем эту ступень кода конструкцией проверки исключений (ошибок).

except Exception as e: print(repr(e))
bot.polling(none_stop=True)

Именно этой командой и закончим наш код. Теперь бот постоянно проверяет не написал ли ему кто.

В итоге получился такой код:

import telebot from telebot import types import random import xlrd bot = telebot.TeleBot("TOKEN") @bot.message_handler(commands=['start']) def send_welcome(message): stic = open('stic/welcome.webp', 'rb') # клавиатура markup = types.ReplyKeyboardMarkup(resize_keyboard=True) but1 = types.KeyboardButton("Вывести случайную цитату белогвардейца") but2 = types.KeyboardButton("Литература") markup.add(but1, but2) bot.reply_to(message, "Здравствуй, \nСмотрю, ты за Единую, Великую и Недилимую".format(message.from_user),parse_mode='html',reply_markup=markup) bot.send_sticker(message.chat.id,stic) @bot.message_handler(func=lambda message: True) def menu(message): if message.chat.type == 'private': if message.text == "Вывести случайную цитату белогвардейца": #достаём циататы из ворда rb = xlrd.open_workbook('citat/citat.xls', formatting_info=True) sheet = rb.sheet_by_index(0) for rownum in range(sheet.nrows): rand = int(random.randint(0,rownum)) row = sheet.row_values(rand) bot.send_message(message.chat.id, row) elif message.text == "Литература": #инлайновая клавиатура inMurkup = types.InlineKeyboardMarkup(row_width=1) but1 = types.InlineKeyboardButton("И.Ф. Плотников - Александр Васильевич Колчак. Исследователь, адмирал, Верховный правитель России", callback_data='book1') but2 = types.InlineKeyboardButton("А.В. Туркул - Дроздовцы в огне", callback_data='book2') but3 = types.InlineKeyboardButton("П.Н. Врангель - Записки", callback_data='book3') but4 = types.InlineKeyboardButton("М.Г. Дроздовский - Дневник", callback_data='book4') inMurkup.add(but1, but2, but3, but4) bot.send_message(message.chat.id, "Книги на любой вкус", reply_markup=inMurkup) else: bot.send_message(message.chat.id, "Я не знаю что и ответить") #обработка callback @bot.callback_query_handler(func=lambda call: True) def callback_inline(call): try: if call.message: if call.data == 'book1': doc = open('boo/Plotnikov_Ivan-Aleksandr_Vasilevich_Kolchak_Issledovatel_admiral_Verhovnyi_pravitel_Rossii.pdf', 'rb') bot.send_document(call.message.chat.id, doc) elif call.data == 'book2': doc = open('boo/Turkul_-_Drozdovtsy_v_ogne.pdf','rb') bot.send_document(call.message.chat.id, doc) elif call.data == 'book3': doc = open('boo/Vrangel_P_Zapiski_a4.pdf', 'rb') bot.send_document(call.message.chat.id, doc) elif call.data == 'book4': doc = open('boo/Drozdovsky_dnevnik_1963__ocr.pdf', 'rb') bot.send_document(call.message.chat.id, doc) #удаляем инлайновую клаву bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Книги на любой вкус", reply_markup=None) #Создаём уведомление bot.answer_callback_query(callback_query_id=call.id, show_alert=False, text='Приятного чтения!') except Exception as e: print(repr(e)) bot.polling(none_stop=True)

Пара слов от автора

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

Больше функций, параметров и всего прочего находится в документации. Справочник на русском. Библиотеки pyTelegramBotAPI и xlrd.

Огромное спасибо за прочтение статьи! Надеюсь она оказалась полезной. А если понравилась, то поднимай статью в рейтинге и оставляй комменты)

Приглашаю прочесть мои статьи:

Автор обитает тут: ВК, Инстаграм

Как сделать бота в Telegram за 10 минут — пошаговая инструкция

Павел Баракаев

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

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

Бот vs. канал

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

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

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

Telegram Ads

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

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

  • Собеседники реагируют на заданные фразы и общаются по скрипту, а если на запрос не получается ответить заготовленной репликой — зовут человека.
  • Каталоги дают возможность продавать товары и услуги без перехода на сайт (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. Должно получиться так:

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

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

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

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

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

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

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

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

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

Developer creating a Telegram bot using Python.

Алексей Кодов
Автор статьи
23 июня 2023 в 18:47

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

Шаг 1: Зарегистрировать телеграм-бота

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

  1. Откройте приложение Telegram и найдите бота @BotFather.
  2. Напишите боту /newbot и следуйте инструкциям, чтобы создать своего бота.
  3. Сохраните полученный токен, он потребуется для работы с API.

Шаг 2: Установить библиотеку python-telegram-bot

Для работы с API телеграма удобно использовать библиотеку python-telegram-bot . Установите ее с помощью следующей команды:

pip install python-telegram-bot

Шаг 3: Написать код для телеграм-бота

Теперь приступим к написанию кода нашего бота. Создайте файл bot.py и напишите следующий код:

import logging from telegram import Update from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext # Введите токен своего бота TOKEN = "your_token_here" # Настройка логирования logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO ) logger = logging.getLogger(__name__) # Обработка команды /start def start(update: Update, context: CallbackContext) -> None: update.message.reply_text('Привет, я твой телеграм-бот! ��') # Обработка текстовых сообщений def echo(update: Update, context: CallbackContext) -> None: update.message.reply_text(f'Вы написали: ') # Главная функция def main() -> None: updater = Updater(TOKEN) dispatcher = updater.dispatcher # Регистрация обработчиков dispatcher.add_handler(CommandHandler("start", start)) dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, echo)) # Запуск бота updater.start_polling() updater.idle() if __name__ == '__main__': main()

Не забудьте заменить «your_token_here» на токен вашего бота.

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

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