Как создать чат-бот в Telegram
Чат-бот — это автоматизированный многофункциональный помощник, который может показывать информацию подписчикам и собирать информацию по запросу согласно заранее подготовленным сценариям.
Следуйте пошаговой инструкции, чтобы создать своего первого чат-бота для Telegram мессенджера или подключить существующий к сервису SendPulse для дальнейшей настройки.
Содержание
Если у вас уже создан бот, переходите сразу к третьему пункту.
Зачем нужен чат-бот Telegram
Чаще всего чат-боты применяются для автоматизации обслуживания клиентов. Боты могут быстро и эффективно отвечать на вопросы и запросы клиентов 24/7, автоматически собирать обратную связь от клиентов после покупки или обслуживания. Для этого вам необходимо создать сценарий бота с необходимыми командами, которые будет выбирать подписчик для решения своих вопросов.
Боты могут отправлять мгновенные уведомления через рассылки о новых акциях, событиях или важных обновлениях бизнеса, что помогает удерживать клиентов в курсе и повышать узнаваемость бренда.
Как создать свой бот в Telegram
Откройте мессенджер Telegram, войдите в вашу учетную запись или создайте новую.
Введите в поле поиска @BotFather и выберите бот.
У официального бота Telegram будет стоять синий подтверждающий знак возле имени в виде галочки.

Нажмите «Запустить» для активации бота BotFather.
В ответ вы получите список команд по управлению ботом.

Выберите или напечатайте и отправьте команду /newbot .

Дайте имя боту — клиенты увидят это имя при общении с ботом. И никнейм бота — по нему можно будет найти бота в Telegram. Никнейм должен быть уникальным, не повторять существующие в базе и заканчиваться на слово «bot».

После того как вы выберите подходящее имя бот будет создан. Вы получите сообщение со ссылкой на бота t.me/ , рекомендации по настройке аватарки, описание бота и список команд для его настройки.
Для подключения бота в SendPulse вам понадобится токен. Скопируйте значение токена и перейдите к последнему пункту.

Где найти ключ для уже существующего бота
Перейдите к боту @BotFather и введите команду /token .
Вы увидите кнопки с созданными ботами.

Выберите бот, который нужно подключить.

Скопируйте значение токена.

Как подключить бот в Sendpulse
Перейдите в раздел «Чат-боты» в вашем аккаунте SendPulse. Если у вас нет подключенных каналов, нажмите на кнопку «Подключить каналы».
Если вы уже подключали ботов, перейдите в раздел «Управление ботами» и нажмите «Добавить бот». Также вы можете выбрать «Подключить» напротив нужного канала.

В секции «Telegram» введите ключ доступа — токен полученный в созданном боте. Нажмите «Подключить».

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

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

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

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

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

С помощью AI
Также вы можете задействовать искусственный интеллект для создания сценариев цепочек под ваши запросы. Это позволит существенно сократить время на генерацию творческих идей и продумывание логики.
Откройте конструктор и нажмите кнопку «Создать цепочку с помощью ИИ» (Create a flow with AI). Продумайте все детали, которые вы хотели бы включить в бот, и впишите требования в подсказку для генерации цепочки.

Искусственный интеллект можно подключить и для того, чтобы нейронная сеть генерировала ответы пользователям в режиме реального времени, не по сценариям. Подключите ChatGPT и предоставьте основные данные о вашей компании, на которые вы хотите, чтобы бот отвечал.
После того как вы создали бот в Telegram и настроили сценарии ответов, вы можете добавить ссылку на бот на ваш сайт или подключить его к умным попапам. Если у вас есть список ID подписчиков из 8-10 чисел, можете его импортировать.
Вы также можете отслеживать поведение бота в статистике и в чатах с подписчиками, чтобы анализировать путь пользователя и улучшать их опыт взаимодействия.
Bot API: часто задаваемые вопросы
Если вы незнакомы с ботами в Telegram, рекомендуется сначала прочитать ознакомительную статью.
Также, возможно, вас заинтересует описание Bot API.
Общие вопросы
Как я могу создать бота?
Создание бота для Telegram крайне простое, однако, вам понадобится кое-какой опыт в программировании. Для работы вашего бота вам необходимо осуществить первоначальную настройку через бота @BotFather, а затем подключить его к вашему серверу через API.
К сожалению, какого-либо способа создать бота без программирования не существует. Поэтому, если вы не разработчик, лучше поищите себе готового бота или закажите его разработку.
Можно посмотреть примеры кода?
Вот два бота-образца, написанных на PHP:
- Hello Bot: демонстрация основных возможностей Bot API.
- Simple Poll bot: более сложный бот, поддерживающий оба способа получения обновлений (long-polling и вебхуки).
Примечание
Многие разработчики создают своих ботов с открытым исходным кодом. Мы собираем их на специальной странице.
Добавьте в ботов фичу X!
API ботов — весьма молодой проект. Есть ещё масса возможностей, которые уже рассматриваются к реализации. Пока что администрация Telegram наблюдает за тем, как пользователи используют своих ботов, чтобы понять, в каком направлении необходимо развивать платформу.
Если у вас есть мысли по этому поводу, вы можете высказать их пользователю @BotSupport (на английском).
Какие сообщения может получать мой бот?
При создании бота у него автоматически включается режим приватности, который влияет на получения сообщений в группах. Это значит, что ваш бот будет получать сообщения из групп только при следующих условиях:
- Сообщение было ответом боту или нажатием на его клавиатуру
- В сообщении есть @упоминание бота по его имени пользователя
- В сообщении содержится общая команда (напр., /start ) или команда, предназначающаяся вашему боту (напр., /start@YourBot )
- Сообщение является служебным (о смене названия группы, выходе кого-либо из чата, и т. д.)
При выключении режима приватности, ваш бот будет получать все сообщения из групп, за исключением:
- Сообщений от других ботов
- Команд для других ботов (напр., /start@NotYourBot )
- Ответов на сообщения от других ботов, за исключением случаев, когда в сообщении содержится @упоминание вашего бота.
Почему мой бот не видит сообщений от других ботов?
Диалог двух ботов может привести к нежелательным бесконечным циклам, когда боты отвечают друг другу по кругу. Поэтому было принято решение не давать ботам возможности видеть сообщения от других ботов.
Получение обновлений
Как можно получать обновления?
На текущий момент доступно два способа. Вы можете использовать либо опрос, либо вебхуки. Обратите внимание: если вы используете вебхуки, метод getUpdates работать не будет.
Принципиальное отличие: при опросе вашему приложению самому нужно запрашивать обновления у API, а используя вебхуки — сервера Telegram будут отправлять на ваш сервер каждое обновление с помощью HTTPS POST-запроса.
Предупреждение
Вебхуки могут работать только через HTTPS, допустимо использование самозаверенного сертификата.
Доступные порты: 443, 80, 88, 8443.
Опрос всегда выдаёт один и тот же результат!
Метод getUpdates выдаёт 100 последних неподтверждённых обновлений. Чтобы подтвердить обновление, используйте параметр offset при вызове getUpdates вот так:
offset = update_id последнего обработанного обновления + 1
Все обновления с update_id меньшим или равным offset будут отмечены как подтверждённые и не будут больше возвращаться сервером.
У меня проблема с вебхуками
Если вы успешно задали адрес вебхука, но не получаете обновлений, убедитесь, что:
- SSL-сертификат вашего вебхука валиден и корректен
- При использовании самозаверенного сертификата, вы передаёте его публичный ключ в поле certificate метода setWebhook. Необходимо загружать InputFile , отправка строки не сработает.
- Ваш вебхук работает на одном из допустимых портов: 443, 80, 88, 8443.
У меня проблема с самозаверенным сертификатом
Ознакомьтесь с инструкцией по созданию сертификатов. Если после прочтения у вас остались вопросы, напишите пользователю @BotSupport.
Как мне убедиться, что запросы идут с серверов Telegram?
Для этого включите ваш токен в адрес вебхука, примерно так:
https://example.com/your_token
Так как никто посторонний не знает вашего токена, запросы на этот адрес смогут отсылать только сервера Telegram.
Как делать запросы в HTTP-ответах к обновлениям?
Это возможно при использовании вебхуков. Преимуществом является сокращение числа запросов, недостатком — невозможность получения результата запроса и его статуса.
Всякий раз при получении обновления на вебхук, у вас есть два варианта:

2. Ответить напрямую, указав метод в виде JSON в HTTP-ответе:

Примечание
Пример реализации этой возможности на PHP можно посмотреть в коде HelloBot.
Обработка медиафайлов
Как скачивать файлы?
Для этого используйте метод getFile .
Предупреждение
Этот метод работает только для файлов объёмом до 20 МБ.
Как закачать большой файл?
На текущий момент боты могут отправлять файлы объёмом до 50 МБ, так что крупные файлы отправить не получится. Возможно, это ограничение будет снято в будущем.
Как долго хранится file_id у файлов?
file_id у отправленных вашим ботом файлов будут удалены после отправления нескольких тысяч файлов.
Для принятых файлов file_id можно считать вечным и неизменным.
Массовая рассылка
Каков лимит сообщений в секунду?
При работе с отдельным чатом, избегайте отправки более 1 сообщения в секунду. Конечно, допустимы небольшие пики, но со временем вы начнёте получать ошибку 429.
При рассылке уведомлений нескольким пользователям, API не позволит отправлять более 30 сообщений в секунду. Для преодоления этого лимита вам необходимо разбить отправку на части с большим интервалом между собой (около 8-12 часов).
При работе с группой ограничение установлено на 20 сообщений в минуту.
Как получить список всех подписчиков моего бота?
К сожалению, пока сделать это встроенными методами нельзя. Возможно, в будущем будут добавлены пару строк для управления подписчиками.
Чтобы максимально эффективно рассылать сообщения, вам необходимо разбивать отправку на несколько частей с интервалом в 8-12 часов. Также недопустимо отправление более 30 сообщений разным пользователям в секунду — иначе вы будете получать ошибку 429.
Сайт про Telegram на русском (неофициальный).
Здесь собраны приложения на базе MTProto, переведена некоторая документация с официального сайта, а также работает Webogram.
Как подключить платежную систему с Payments к Telegram
Рассказываем, как подключить платежную систему к Telegram-боту и разместить его на сервере.
Эта инструкция — часть курса «Как создавать Telegram-ботов».
Смотреть весь курс
Введение
Telegram-боты обладают широкой функциональностью и решают массу задач клиентов самых разных бизнесов. Рассказываем, как создать и разместить бота для приема платежей в Telegram на Python. Видеоверсия доступна по ссылке.
В Telegram есть встроенная система оплаты, поэтому сценариев, как использовать бота для приема платежей, достаточно много. Это может быть разовая оплата заказа или ежемесячная подписка.
Платежные системы Telegram
Сейчас мессенджер поддерживает оплату в более чем 200 странах через такие шлюзы, как: Stripe, YooMoney, Sberbank, LiqPay, PayMaster и другие.
Все начинается с установки библиотеки aiogram. Сейчас, пожалуй, это самая популярная библиотека для разработки ботов на Python.
python -m pip install aiogram
Переходим в Telegram и пишем тут BotFather’у команду /newbot. Вводим имя нового бота. Важно, чтобы оно заканчивалось словом Bot.

Получаем уникальный токен нового бота. Теперь напишем код простейшего эхо-бота, чтобы проверить его работу.
Связать бота с приложением
Создаем файл config.py и вписываем в него токен, который выдал BotFather. В основном файле main.py прописываем базовый код любого бота.
Обратите внимание на один важный момент: бот должен обрабатывать каждое сообщение с серверов Telegram. Для этого при запуске бота обязательно нужно поставить аргумент skip_updates в значение False. Это спасет от проблем при обработке платежей.
import config import logging from aiogram import Bot, Dispatcher, executor, types from aiogram.types.message import ContentType # log logging.basicConfig(level=logging.INFO) # init bot = Bot(token=config.TOKEN) dp = Dispatcher(bot) # echo bot @dp.message_handler() async def echo(message; types.Message): await message.answer (message.text) # run long-polling if __name__ == "main": executor.start_polling(dp, skip_updates=False)
Теперь можно запустить код и проверить, работает ли бот. Убедившись, что все хорошо, приступаем к подключению платежей.

Возвращаемся к BotFather’у, даем команду /mybots и выбираем из списка своего бота.
В открывшемся меню кликаем на кнопку «Payments». Из предоставленного списка выбираем нужный платежный шлюз. В качестве теста используем PayMaster. Чтобы подключить оплату в Telegram-бота, сначала нужно выполнить тест, поэтому выбираем «PayMaster Test».

Следуем простым инструкциям бота платежной системы и получаем тестовый токен PayMaster. Его сразу же можно сохранить в config.py.
TOKEN = "5432877141:AAHEwBEb2mwnZX56oaHM10o33ZBZwVkvv-s" PAYMENTS_TOKEN = "1744374395:TEST:f14d9f0d42528b780370"
Возвращаемся к коду бота. Для того, чтобы запросить оплату товаров/услуг, нужно сгенерировать invoice с деталями платежа. Отправить его клиенту и обработать результат.
Подключаем оплату
Указываем список доступных цен на продукты. В качестве цены нужно передать целочисленное значение в минимально возможных единицах валюты. Если речь идет о рублях, то стоимость нужно указывать в копейках. То есть место 500 рублей мы тут укажем 500 * 100 или же 50 000 копеек. В случае с долларами будет почти также, $1=100 центов. Если предполагается работа с другими валютами, можно использовать currencies.json от Telegram API.
Дальше в коде бота платежной системы мы создаем обработчик команды /buy. Команда будет генерировать и отправлять пользователю invoice платежа. В примере используется оплата месячной подписки.
import config import logging from aiogram import Bot, Dispatcher, executor, types from aiogram.types.message import ContentType # log logging.basicConfig(level=logging.INFO) # init bot = Bot(token=config.TOKEN) dp = Dispatcher(bot) # prices PRICE = types.LabeledPrice(label="Подписка на 1 месяц", amount=500*100) # в копейках (руб) # buy @dp.message_handler(commands=['buy']) async def buy(message: types.Message): if config.PAYMENTS_TOKEN.split(':')[1] == 'TEST': await bot.send_message(message.chat.id, "Тестовый платеж. ") await bot.send_invoice(message.chat.id, title="Подписка на бота", description="Активация подписки на бота на 1 месяц", provider_token=config.PAYMENTS_TOKEN, currency="rub", photo_url="https://www.aroged.com/wp-content/uploads/2022/06/Telegram-has-a-premium-subscription.jpg", photo_width=416, photo_height=234, photo_size=416, is_flexible=False, prices=[PRICE], start_parameter="one-month-subscription", payload="test-invoice-payload")
Сам процесс генерации invoice довольно простой. Не стоит беспокоиться большому количеству аргументов. Это названия продуктов или услуг, описания, цена, валюта и т.п.

Настройки платежей
Обратите внимание на аргумент is_flexible. Его нужно указывать в значение True только в том случае, если финальная стоимость зависит от выбранного способа доставки, если речь идет о продаже какого-то физического продукта.
О других параметрах метода send_invoice вы всегда можете прочитать в официальной документации Telegram API.
Теперь нужно создать еще два обработчика: Pre Checkout Query и Successful Payment.
Pre Checkout Query отвечает за обработку и утверждение платежа перед тем, как пользователь его совершит. Так можно проверить доступность товара на складе или уточнить стоимость.
Важно, что серверам Telegram ответ нужен в течение 10 секунд. Если его не будет, платеж не пройдет.
Successful Payment отвечает за обработку успешно проведенного платежа.
# pre checkout (must be answered in 10 seconds) @dp.pre_checkout_query_handler(lambda query: True) async def pre_checkout_query(pre_checkout_q: types.PreCheckoutQuery): await bot.answer_pre_checkout_query(pre_checkout_q.id, ok=True) # successful payment @dp.message_handler(content_types=ContentType.SUCCESSFUL_PAYMENT) async def successful_payment(message: types.Message): print("SUCCESSFUL PAYMENT:") payment_info = message.successful_payment.to_python() for k, v in payment_info.items(): print(f" = ") await bot.send_message(message.chat.id, f"Платеж на сумму прошел успешно. ") # run long-polling if __name__ == "__main__": executor.start_polling(dp, skip_updates=False)
Тут можно выдать пользователю тот самый месяц подписки, за которую он заплатил или любую другую услугу.
Как бот работает на практике
Получив invoice на оплату от бота, нажимаем «Оплатить». Поскольку сначала мы проводим тестирование бота, воспользуемся специальной тестовой картой.

Вводим данные и оплачиваем подписку — все работает. При переходе на боевой проект важно не забыть выбрать правильный счет.
Теперь возвращаемся в BotFather, чтобы получить реальный токен от выбранного платежного шлюза. Если есть запрос на разные тарифы или способы оплаты, лучше запросить сразу 2-3 токена от разных платежных шлюзов. Далее нужно будет генерировать invoice с помощью токена выбранного провайдера.
Перенос бота на боевой сервер
Чтобы бот работал 24/7 вне зависимости от того, включен компьютер или нет, зальем его на реальный сервер.
Для этого воспользуемся облачным сервером линейки Shared Line от Selectel. Калькулятор панели управления позволяет выбрать гибкую конфигурацию сервера и сразу узнать, сколько будет стоить решение. Все продукты и услуги собраны у провайдера в одном месте, поэтому ими легко управлять. Арендовать сервер можно от 10 ₽/день, а в консоли есть возможность быстро масштабировать вычислительные ресурсы при необходимости.
Регистрируемся и входим в панель управления my.selectel.ru. Переходим в раздел «Облачная платформа» и выбираем «Серверы». Создаем сервер — после этого шага он загорится в списке как «ACTIVE».
Настраиваем конфигурацию. Для примера используем 1 ядро, 512 МБ DDR4 и 5 ГБ на диске.

Теперь переходим к выгрузке бота на боевой сервер. Сначала нужно подключиться к серверу через SSH. Для этого мы можем воспользоваться программой WinSCP для Windows. В Linux и MAC для этого есть свои встроенные инструменты.
Запускаем WinSCP. В качестве имени хоста указываем IP адрес нашего нового сервера. Логин и пароль можно взять во вкладке «Консоль» в панели управления.
Теперь перенесем сюда файлы нашего бота: config.py и main.py. Далее открываем отдельное соединение с сервером по SSH в консоли.
Для этого в WinSCP нажать кнопку и открыть PuTTY. Можно также воспользоваться командной строкой, принципиальной разницы нет.
Настройка бота с Payments 2.0
Подключившись к серверу, нужно выполнить ряд простых действий.
- Обновить Python до версии 3.10.
- Установить PIP.
- Поставить библиотеку Aiogram.
Если оставить все в таком виде, то при закрытии SSH-соединения вместе с ним закроется и процесс бота. Что делать?
Есть несколько способов, как решить этот вопрос. Рассмотрим самый простой – использование команды screen.
Пишем команду screen и жмем Enter. Запускаем бота из обычного терминала и закрываем соединение.
Бот продолжит работу. Чтобы в любой момент вернуться к этому экрану, достаточно ввести команду screen -r $screen_running. На этом деплой в облаке Selectel закончен.
Заключение
Описанная схема запуска Telegram-бота не предел того, как можно настроить прием платежей. К боту всегда можно добавить дополнительные возможности: запрашивать адрес доставки или менять цену в зависимости от адреса.
Идеальное решение для pet-проектов
Сервер для решения задач, которые не требуют полной загрузки vCPU.
Как можно открыть код в телеграмм боте?(Что бы он открывался в телеграмме, а не в cmd.)
Я недавно начал изучать Python и pyTelegramBotAPI. Я написал код для бота, и хочу в него поместить код в кастомную клавиатуру, любой, например:
year = int(input()) #определяющий високосность года def year1(year): if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: return(True) else: return(False) print(year1(year))
Но ввод года и ответ, соответственно остаются в командной строке. Как это можно реализовать в Telegram? Спасибо. Если моя проблема не понятна, я попробую объяснить).
Отслеживать
51.6k 200 200 золотых знаков 61 61 серебряный знак 242 242 бронзовых знака
задан 16 июл 2020 в 11:03
1 1 1 серебряный знак 1 1 бронзовый знак
Тоесть чтобы бот выполнил тот код, который вы передаете ему в чате и вернул результат в чат?
17 июл 2020 в 13:28
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Вот код минимального телеграмм бота.
Для начала нужно зарегистрировать бота.
- В телеграмме ищем бота с именем BotFather (отец ботов)
- И пишем ему /start
- Далее /newbot
- Он попросит нас придумать боту имя и логин
- Много много раз он будет говорить что этот логин уже занят
- И в конце выдаст нам токен нашего бота.
Выглядит токен как то так:
0123465789:aLAKSJDHFOASBDFOB_ASD787bd-fkjfasd
Далее устанавливаем нужный модуль
pip install pytelegrambotapi
А это записываем в файл main.py
from telebot import TeleBot # Замени эту строку своим токеном TOKEN = '0123465789:aLAKSJDHFOASBDFOB_ASD787bd-fkjfasd' # Создаём бота bot = TeleBot(TOKEN) # Эта функция будет вызвана если написать боту # /visokosnii 2020 @bot.message_handler(command='visokosnii') def command_visokosnii(message): # Здесь мы достаём из текста сообшения год year = message.text.split()[-1] year = int(year) # Здесь выполняем вычисления # . # Здесь мы пишем ответ в тот же чат chat_id = message.chat.id bot.send_message(chat_id, 'Da on visokosnii') # Этой строкой мы запускаем бота bot.polling()
Не забываем запустить наш скрипт
python main.py
Теперь, в том же сообщений где BotFather дал нам токен есть ссылка типа
t.me/логин_твоего_бота
Нажми на неё и ты должен попасть в чат к своему боту.
Нажми кнопку start
А потом напиши /visokosnii 2020
