Salebot.pro
Search…
Telegram
Подключаем бота к Телеграм
Максимальная длина текстового сообщения 4096 символов, для сообщения с картинкой (1080*1080px) не более 1024 символов

Как подключить бота Telegram

Бот в Telegram создается при помощи другого бота под названием BotFather. Отправляем ему команду /newbot, выбираем имя, которое будет отображаться в списке контактов, логи нашего бота (должен обязательно заканчиваться на bot или _bot).
Если адрес не занят, а имя введено правильно, BotFather пришлет в ответ сообщение с токеном — «ключом» для доступа к созданному боту. Его нужно сохранить и никому не показывать:
Рисунок 1
После этого заходим в раздел "Мессенджеры и чаты", выбираем телеграм и вводим имя бота, его логин и полученный токен:
Жмем кнопку готово. На этом подключение бота завершено.
Отправка файлов настоящее время работает только для gif -, pdf-и zip-файлов

Как работать с кнопками

Как совместить два вида кнопок

Создаете блок с reply-кнопкой (кнопками), которые вам необходимо визуализировать. Например: [{"type": "reply", "text": "НАЗВАНИЕ КНОПКИ", "line": 0, "index_in_line": 0}]
Далее создаете следующий блок (таймер в 0 секунд) с inline-кнопками, которые необходимо разместить, не убирая reply-кнопки. Например: [{"type": "inline", "text": "НАЗВАНИЕ КНОПКИ", "line": 0, "index_in_line": 0}]
Результат:
Названия кнопок должны совпадать с блоком «Уcловие» в сообщении, на которое должна вести кнопка.
Обязательно соблюдайте последовательность: сначала reply кнопки, а потом inline. Иначе reply кнопки пропадут со следующим блоком.

Видеоверсия

Как настроить работу бота в группе Telegram

Чтобы бот работал в чате или канале Телеграм, вы должны:
1) Добавить бота в него администратором; 2) Включить в BotFather эту возможность, как указано ниже.

Какие переменные необходимы для работы в чатах

Переменные с информацией об авторе сообщения

message_from - идентификатор автора сообщения message_from_name - имя автора сообщения message_from_username - ник автора сообщения в Телеграм

Переменные с информацией о пересылаемом сообщении

reply_message_id - номер сообщения, которое пересылают reply_from - кто автор пересылаемого сообщения reply_from_name - имя того, чье сообщение пересылается reply_from_username - ник того, чье сообщение пересылается reply_from_chat_id - номер диалога, из которого сообщение переслали

Добавление и удаление из группы

В этом случае срабатывают колбеки new_chat_member и left_chat_member
chat_member_name - имя пользователя chat_member_username - ник пользоваля chat_member_id - номер пользователя

Какие колбеки (Callback) есть в Telegram-каналах

new_chat_member - добавлен новый пользователь left_chat_member - пользователь покинул канал kicked_chat_member - пользователь удален администратором chat_join_request - получена заявка на добавление в канал edited_channel_post - пост на канале был отредактирован (edited_channel_post + дата и время редактирования)
Пример того, как выглядят колбеки Telegram-канала в карточке клиента
При получении любого из вышеназванных колбеков обновляются значения переменных: chat_member_name - имя пользователя chat_member_username - ник пользователя chat_member_id - номер пользователя

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

Для принятия заявки и добавления пользователя в канал/чат используется функция:
tg_approve_chat_join_request(platform_id, user_id)
Для того, чтобы отклонить заявку в канал/чат используется:
tg_decline_chat_join_request(platform_id, user_id)

Как делать разметку текста (Markdown) в Телеграм

Для разметки текста в нужном блоке открываете Расширенные настройки и там включаете переключатель "Markdown в Telegram":
Если в этом блоке встречаются символы из перечисленных: '_', '*', '[', ']', '(', ')', '~', '`', '>', '#', '+', '-', '=', '|', '{', '}', '.', '!' — их нужно экранировать, добавлять перед ними обратный слэш \
Иначе сообщение не отправится вообще. При этом не имеет значения, какой участок текста вы размечаете.
Пример: привет\. Рады *тебя* видеть\!
Экранирование текста возможно как вручную, так и в калькуляторе при помощи функции
txt = tg_escape(s)
На вход подается s - строка с исходным текстом.
На выходе в txt приходит строка уже с вставленными слешами в нужных местах.
Пример:
Пример экранирования
Как выглядит текст в Телеграме
Как выглядит текст в других мессенджерах
Далее размечаете нужный текст:
Чтобы сделать текст жирным, с обеих сторон ставите звездочки: *тут текст*
Для курсива — нижнее подчёркивание: _текст_
Подчеркнутый текст — два нижних подчеркивания с обеих сторон: __текст__
Зачеркнутый текст — тильда с обеих сторон текста: ~текст~
Ссылка в тексте: [текст в квадратных скобках](ссылка в круглых скобках) [inline URL](http://www.example.com/)
Упоминание пользователя ТГ: [текст в квадратных скобках](ссылка на пользователя в круглых скобках). В ссылке после знака равно можно использовать #{platform_id} [inline mention of a user](tg://user?id=123456789)
Текст в виде кода — с обеих сторон текста поставить обратный апостроф: `inline fixed-width code`
Пример:
Результат:

Как включить защищенный режим для контента

Чтобы защитить контент от распространения можно включить защищенный режим для сообщений. Для этого в "Редактирование сообщения"-"Расширенные настройки" нужно найти бегунок "Защитить контент":
Защищенные сообщения нельзя переслать, на телефоне нельзя сделать скриншот.

Как работать в inline режиме в Телеграм

Как включить инлайн режим

Для работы бота в инлайн режиме, нужно включить эту опцию в настройках бота в BotFather - https://t.me/BotFather
Выбираем нужного бота и переходим в настройки Bot Settings
Далее Inline Mode
И нужно включить инлайн режим, если он не включен

Как изменить плейсхолдер

Далее, по желанию, можно изменить плейсхолдер, который отображается до ввода поискового запроса. По умолчанию он Search…
Чтобы изменить нужно нажать кнопку Edit inline placeholder и отправить новый

Как настроить результаты вывода

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

Массив с текстовыми данными

Например поиск будет происходить по массиву продуктов
Поиск происходит по вхождению введенной фразы в вариантах в массиве. Например 1 ввели букву м - выдало три варианта, 2 добавили букву а и результат отфильтрован по новым данным
После нажатие на нужный пункт в бот будет отправлено сообщение от пользователя
Пример данных:
["Молоко", "Хлеб", "Макароны", "Шоколад", "Яйца", "Масло", "Слойка", "Чай", "Овощи", "Фрукты"]

Массив со словарями для вариантов кнопок

Второй вариант более настраиваемый, вместо текстовых значений массив будет содержать словари.
Поиск для этого варианта осуществляется по значению ключа title
регистр не учитывается
Разберем максимальный набор параметров для одного варианта (словаря). Для примера возьмем следующий:
{"title": "Оплата", "description": "Способы оплаты описание",
"thumb_url": "https://img.icons8.com/dusk/50/000000/card-exchange.png", "message_text": "оплата товара 1"}
title - заголовок кнопки
description - описание
thumb_url - ссылка на картинку
message_text - Этот текст отправится при выборе этого варианта
1. Пример вывода и после нажатия 2. отправился заданный текст
Для одного варианта (словаря) обязательным является только ключ title со значением, которое и отправится при нажатии на этот пункт.
Например: {"title": "Настройка"}
Пример данных:
[{"title": "Корзина", "description": "Выбранные товары", "thumb_url": "https://img.icons8.com/dusk/64/000000/shopping-basket.png"},
{"title": "Доставка", "description": "Варианты доставки заказа", "thumb_url": "https://img.icons8.com/dusk/64/000000/delivery--v1.png"},
{"title": "Оплата", "description": "Способы оплаты описание",
"thumb_url": "https://img.icons8.com/dusk/50/000000/card-exchange.png", "message_text": "оплата товара 1"},
{"title": "Настройка"}]

Словарь со списком для вариантов кнопок

Третий вариант подходит, если вы хотите задать определенные меню на нужные фразы и удобен в использовании вместе с инлайн кнопкой, в которой зашита нужная фраза.
Поиск для этого варианта осуществляется по полному совпадению запроса с ключом, за которым закреплено меню
В примере поиск будет происходить по ключам меню, посты и продукты
Структура следующая:
"ключ": [массив кнопок]
{"поисковая фраза1": [{"title": "Корзина", "description": "Выбранные товары"},
{"title": "Оплата", "description": "Способы оплаты",
"thumb_url": "#{переменная с урлом}", "message_text": "Способы оплаты"},
{"title": "Доставка", "description": "Варианты доставки заказа",
"thumb_url": "ссылка на картинку"}],
"поисковая фраза2": [{"title": "Первый", "description": "Описание 1111"},
{"title": "Четвертый", "description": "#{переменная}"}],
"поисковая фраза3": ["Молоко", "Хлеб", "#{переменная}", "Шоколад"]}
Значения это массив со словарями или массив со строками, комбинировать нельзя!
Разберем максимальный набор параметров для одного варианта (словаря). Для примера возьмем следующий:
{"title": "Оплата", "description": "Способы оплаты описание",
"thumb_url": "https://img.icons8.com/dusk/50/000000/card-exchange.png", "message_text": "оплата товара 1"}
title - заголовок кнопки
description - описание
thumb_url - ссылка на картинку
message_text - Этот текст отправится при выборе этого варианта
Минимально один вариант (словарь) должен содержать ключ title со значением, которое отправится при нажатии на этот пункт.
Например: {"title": "Настройка"}
Пример данных:
{"меню": [{"title": "Корзина", "description": "Выбранные товары",
"thumb_url": "https://img.icons8.com/dusk/64/000000/shopping-basket.png"},
{"title": "Оплата", "description": "Способы оплаты",
"thumb_url": "https://img.icons8.com/dusk/50/000000/card-exchange.png", "message_text": "Способы оплаты"},
{"title": "Доставка", "description": "Варианты доставки заказа",
"thumb_url": "https://img.icons8.com/dusk/64/000000/delivery--v1.png"}],
"посты": [{"title": "Первый", "description": "Описание 1111"},
{"title": "Второй", "description": "Описание 2222"},
{"title": "Третий", "description": "Описание 333"},
{"title": "Четвертый", "description": "Описание 44444"}],
"продукты": ["Молоко", "Хлеб", "Макароны", "Шоколад", "Яйца", "Масло", "Слойка", "Чай", "Овощи", "Фрукты"]}

Инлайн кнопка с заданным поисковым значением

Кнопка работает только в телеграм.
Чтоб задать поисковую фразу нужно в инлайн кнопку добавить параметр inline_query.
Со значением которое автоматически подставляется в запрос.
Рекомендуется использовать именно этот вариант для инлайн режима. Позволит избежать ошибок и работает быстрее.
Например добавим три кнопки, которые соответствуют примеру из предыдущей главы
[{"line":0,"index_in_line":0,"text":"Покажи меню","type":"inline","inline_query":"меню"},{"line":0,"index_in_line":1,"text":"Статьи","type":"inline","inline_query":"посты"},{"line":2,"index_in_line":0,"text":"Список продуктов","type":"inline","inline_query":"продукты"}]
При нажатии на кнопку, например Статьи выведется найденный список кнопок (при добавлении указали для этой кнопки "inline_query":"посты"):
Нажмем на кнопку Покажи меню:
Варианты берутся из заданной переменной, как описано выше

Примечания

  • Переменную inline_bot можно задать не только в общих переменных, но и просто переменной, но в таком случае ее значение нужно заключить в одинарные кавычки.
Пример в поле калькулятор:
inline_bot = '["Молоко", "Хлеб", "Макароны", "Шоколад", "Яйца", "Масло", "Слойка", "Чай", "Овощи", "Фрукты", "#{aa}"]'
  • Также можно любое значение передать в виде переменной, для более гибкой настройки.
Для примера простой вариант в массиве:

Как создать опрос в Телеграм

Простой опрос

Для создания обычного опроса используется функция
tg_send_poll(platform_id, question, options, is_anonymous, allows_multiple_answers, reply_markup, disable_notification, protect_content, token)
Обязательные параметры: platform_id - id в Телеграм, куда нужно прислать сообщение question - вопрос options - массив вариантов ответов
Необязательные параметры: is_anonymous - 1 - анонимный опрос, '' - не анонимный allows_multiple_answers - 1 - возможны несколько ответов, '' - один ответ reply_markup - клавиатура или '' - без клавиатуры disable_notification - 1 - отправить с уведомлением, '' - без уведомления protect_content - 1 защитить от копирования и скриншотов, '' - без защиты token - токен бота, если не передан используется текущий
Пример:
options = [белый, красный, синий, зеленый] tg_send_poll(platform_id, 'Ваш любимый цвет?', options, 1, '', '', 1, '')

Примечания

1. Функция возвращает ответ от телеграма, в котором есть message_id, его лучше сохранять, так как с его помощью можно будет завершить опрос функцией tg_stop_poll (описание ниже) и получить результат.
2. Если опрос добавлен пользователем в канал, то в диалог придет колбек: poll_added - неизменная часть Вопрос - вопрос опроса
Если в чат, то дополнительно будут цифры это ид пользователя в телеграм, который добавил опрос.
Если в чат, то дополнительно будут цифры это id пользователя в телеграм, который добавил опрос.
При создании опроса ботом колбек не приходит.
3. В канале можно создавать только анонимные опросы
4. Если опрос был отправлен в диалог пользователя с ботом, то при ответе пользователя в чате сейлбот отобразится колбек с выбранным ответом (ответами). Нумерация ответов начинается с 0 (на скриншоте ниже был выбран 4 ответ) poll_answer 5325838371359031647 [3]
poll_answer - неизменяемая часть 5325838371359031647 - идентификатор опроса [3] - ответ
5. Если не анонимный опрос был создан в группе (не важно функцией или пользователем), в которой состоит бот, то на каждый голос будет отправлен вебхук, при получении которого будет отправлен в диалог с клиентом колбек из пункта 4. Если клиент не контактировал с ботом, то отправить ему что-либо в ответ не получится, пока клиент не активирует бота.
Внимание, рекомендуется отправлять в группу только анонимные опросы!
6. После создания опроса в переменную сохраните его идентификатор, чтоб понимать на какой опрос пришел колбек.

Викторина

tg_send_quiz_poll(platform_id, question, options, explanation, correct_option_id, is_anonymous, reply_markup, parse_mode, protect_content, disable_notification, token)
Обязательные параметры: platform_id - id в Телеграм, куда нужно прислать сообщение question - вопрос options - массив вариантов ответов explanation - текст, который отображается, когда пользователь выбирает неправильный ответ или нажимает на значок лампы в опросе в стиле викторины, 0–200 символов с не более, чем двумя переводами строки после разбора сущностей. correct_option_id - номер правильного ответа, нумерация с 1
Необязательные параметры: is_anonymous - 1 - анонимный опрос, '' - неанонимный reply_markup - клавиатура или '' - без клавиатуры parse_mode - markdown или html для explanation или '' - без форматирования protect_content - 1 защитить от копирования и скриншотов, '' - без защиты disable_notification - 1 - отправить с уведомлением, '' - без уведомления token - токен бота, если не передан используется текущий
Пример:
options = ["белый", "красный", "синий", "зеленый"] r = tg_send_quiz_poll(platform_id, 'Какого цвета крокодил?', options, 'Вот такое вот объяснение.', 4, '', '', '', '', 1)

Примечания

1. Функция возвращает ответ от телеграма, в котором есть message_id, его лучше сохранять, так как с его помощью можно будет завершить викторину функцией tg_stop_poll (описание ниже) и получить результат.
2. Если опрос добавлен пользователем в канал, то в диалог придет колбек: poll_added - неизменная часть Вопрос - вопрос опроса
Если в чат, то дополнительно будут цифры это ид пользователя в телеграм, который добавил опрос.
При создании опроса ботом колбек не приходит.
3. В канале можно создавать только анонимные викторины
4. Если викторина была отправлена в диалог пользователя с ботом или в чат, то при ответе пользователя в чате Salebot отобразится колбек с выбранным ответом.
Нумерация ответов начинается с 0. poll_answer 5325838371359031648 [3]
poll_answer - неизменяемая часть 5325838371359031648 - идентификатор викторины [3] - ответ
5. Если неанонимный опрос был создан в группе (не важно функцией или пользователем), в которой состоит бот, то на каждый голос будет отправлен вебхук, при получении которого в диалог с клиентом будет отправлен колбек из пункта 4. Если клиент не контактировал с ботом, то отправить ему что-либо в ответ не получится, пока клиент не активирует бота.
Внимание рекомендуется отправлять в группу только анонимные викторины!
6. После создания викторины сохраните в переменную его идентификатор, чтобы понимать на какой опрос пришел колбек.

Как завершить опрос

Когда опрос или викторина завершаются этой функцией в ответ приходит словарь с результатом опроса.
Чтобы завершить опрос или викторину, нужно вызвать функцию tg_stop_poll result = tg_stop_poll(platform_id, message_id)
platform_id - id в Телеграм, где находится викторина (ид пользователя, канала, группы) message_id - id сообщения с опросом или викториной
После выполнения функции в result запишется словарь, который можно распарсить используя функцию get():
{'update_id': 787499908, 'poll': {'id': '5258177312003719338', 'question': 'Тут вопрос?', 'options': [{'text': 'Ответ 1', 'voter_count': 1}, {'text': 'Ответ 2', 'voter_count': 1}, {'text': 'Ответ 3', 'voter_count': 0}], 'total_voter_count': 2, 'is_closed': True, 'is_anonymous': True, 'type': 'regular', 'allows_multiple_answers': False}}

Как получить полный вебхук от Телеграм

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

Как автоматизировать удаление системных уведомлений в группах

Для автоматического удаления системных сообщений достаточно присвоить любое значение переменной del_tg_system_messages (переменная может быть как константой проекта, так и переменной сделки) и дать боту разрешение на удаление сообщений.
Удаляются следующие виды системных уведомлений: - Изменено название группы - Изменена фотография группы - Удалена фотография группы - Закреплено сообщение - Пользователь вступил в группу - Пользователь вышел из группы

API Telegram (функции для использования всех возможностей Телеграм)

API в калькуляторе
Salebot.pro