Функции (API) в калькуляторе
Упрощенные вызовы API из калькулятора
ОБОЗНАЧЕНИЯ:
! - Обязательные параметры
Описание
Примеры
Пример кода для копирования
Видеоразбор
callback(client_id, callback_message)
Параметры:
! client_id - идентификатор клиента
! callback_message - текст сообщение в колбеке
Колбек - в программировании это функция, предназначенная для отложенного выполнения. То есть это отправка сообщения, которое бот распознает как команду для исполнения. Клиент при этом не видит данное сообщение, оно видно только в карточке клиента.
Отправим колбек клиенту с client_id=73704021

Блок с условием - отправка колбека клиенту
Скрин карточки клиента:

Полученный клиентом колбек
Далее просто настраиваем реакцию на данный колбек в блоке с условием.
callback('73704021', 'callback TEST123')
Разбор функции callback()
Описание
Примеры
Пример кода
Видеоразбор
message(client_id, text, message_id, timeout)
Параметры:
! client_id - идентификатор клиента
! text - текст сообщения
message_id - идентификатор блока. Если оставить поле text пустым (''), а этот параметр заполнить, то клиенту будет отправлен текст из указанного блока.
timeout - время отправки или задержки. Если нужно отправить сообщение с задержкой, можно указать время:
а) задержка в секундах до 3600 секунд. Если указано большее количество секунд, то сообщение отправится через час, если указано отрицательное число, сообщение отправится мгновенно. Например, timeout = 50.
б) дату отправки в виде дд.мм.гггг чч:мм, например: timeout = ‘03.04.2022 15:00’. Если указать уже прошедшее время, то сообщение отправится мгновенно.
platform_message(platform_id, text, client_type, message_id, timeout)
Параметры:
! platform_id - идентификатор клиента в мессенджере
! text - текст сообщения
client_type - тип мессенджера, необязательный параметр. Если не указан, то клиента будут искать в том же мессенджере, из которого бот отправляет сообщение. Если указан, то клиент будет найден среди базы данных указанного мессенджера. Используемые типы мессенджеров можно найти тут.
message_id - идентификатор блока. Если указан, то клиент получит сообщение из указанного блока, а не значение из text.
timeout - время отправки или задержка. Аналогич ен одноименному параметру функции message()
whatsapp_message(phone, text, message_id)
Параметры:
! phone- номер телефона клиента, на котором зарегистрирован Whatsapp
! text - текст сообщения
message_id - идентификатор блока. Если оставить поле text пустым (''), а этот параметр заполнить, то клиенту будет отправлен текст из указанного блока.
К проекту должен быть подключен Whatsapp-бот
Простой пример отправки сооб щения по client_id:

Отправка сообщения по client_id
Разные варианты отправки сообщения по client_id:

Разные варианты отправки сообщения
Пример отправки сообщения через platform_message():

/*Отправка сообщения по client_id*/
message(73704021, 'Текст сообщения для клиента')
/*Отправка сообщения по client_id с задержкой в 30 секунд*/
message(73704021, 'Привет! Спасибо, что написал.','',30)
/*Отправка сообщения из блока 3190 по client_id 03.04.2022 в 15:00*/
message(73704021, '',3190, ‘03.04.2022 15:00’)
/*Отправка сообщения в Whatsapp*/
whatsapp_message('79999999999', 'Текст сообщения для клиента')
Разбор функции message()
Разбор функций platform_message() и whatsapp_message()
Работает только на тарифе "Премиум"
Как прикреплять голосовые сообщения, фото, видео, анимацию и стикеры не ссылками, а внутренними файлами Телеграм, читайте тут
tg_send_document(platform_id, document, caption, reply_markup, parse_mode,reply_to_message_id, protect_content, disable_notification, message_thread_id )
где platform_id — id клиента в мессенджере, document — ссылка на отправляемый документ, caption — описание (необязательный параметр), reply_markup — настройки кнопок (необязательный параметр), parse_mode — выделение текста в описании жирным или курсивом (необязательный параметр), reply_to_message_id - id цитируемого сообщения (необязательный параметр), protect_content — для защиты от копирования(необязательный параметр, если нужно включить, то передайте в качестве параметра 1), disable_notification - необязательный параметр, по умолчанию 0 - отключить нотификацию при получении, передать 1, message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума)
tg_send_some_document(platform_id, document_list, disable_notification=0, reply_to_message_id=0, message_thread_id ), где
platform_id — id клиента в мессенджере,
document_list - массив документов (подробнее ниже),
disable_notification - необязательный параметр, по умолчанию 0 - отключить нотификацию при получении, передать 1
reply_to_message_id - идентификатор сообщения, в ответ на которое отправляется несколько документ
message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума)
Пример построения массива document_list:
'[["Ссылка на документ1", "caption", "parse_mode"], ["Ссылка на документ 2"], ["Ссылка на документ 3", "caption"]]'
Пример записи данных для одного документа:
["Ссылка на документ", "caption", "parse_mode"]
Важен порядок параметров! При построении массива документов кавычки "" могут быть опущены
Описание параметров:
Ссылка на документ - ссылка на документ (обязательный параметр) задается в формате https://…..document
caption — описание (необязательный параметр)
parse_mode — разметк а описания, т.е. выделение текста в описании жирным или курсивом (необязательный параметр)
result = tg_send_some_document(1453208290, document_list, 0, 0)
tg_send_voice(platform_id, voice, caption, reply_markup, parse_mode, reply_to_message_id, protect_content, disable_notification, message_thread_id )
где platform_id — id клиента в мессенджере, voice — ссылка на голосовое сообщение в формате .OGG, caption — описание до 1024 символов (необязательный параметр), reply_markup — настройки кнопок (необязательный параметр), parse_mode — выделение текста в описании жирным или курсив ом (необязательный параметр), reply_to_message_id - id цитируемого сообщения (необязательный параметр), protect_content — для защиты от копирования (необязательный параметр, если нужно включить, то передайте в качестве параметра 1), disable_notification - необязательный параметр, по умолчанию 0 - отключить нотификацию при получении, передать 1, message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума)
tg_send_some_audio(platform_id, audio_list, disable_notification=0, reply_to_message_id=0)
где
platform_id — id клиента в мессенджере
audio_list - массив аудио (подробнее ниже)
disable_notification - необязательный параметр, по умолчанию 0
0 - отключить уведомление при получении, 1 - передать с уведомлением
reply_to_message_id - идентификатор сообщения, в ответ на которое отправляется несколько аудио
message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума)
Пример построения массива аудио audio_list:
'[["Ссылка на аудио1", "caption", "parse_mode"], ["Ссылка на аудио 2"], ["Ссылка на аудио 3", "caption"]]'
Пример записи данных одного аудио:
["Ссылка на аудио", "caption", "parse_mode"]
Важен порядок параметров! При построении массива аудио-файлов кавычки "" могут быть опущены
Описание параметров:
Ссылка на аудио - ссылка на аудио в формате https://…..audio.mp3
caption — описание до 1024 символов (необязательный параметр)
parse_mode — разметка описания, т.е. выделение текста в описании жирным или курсивом (необязательный параметр)
Пример:
result = tg_send_some_audio(1453208290, audio_list, 0, 0)
tg_send_animation(platform_id, animation, caption, reply_markup, parse_mode, reply_to_message_id, protect_content,has_spoiler, disable_notification, message_thread_id)
где platform_id — id клиента в мессенджере, animation — ссылка на анимацию, caption — описание до 1024 символов (необязательный параметр), reply_markup — настройки кнопок (необязательный параметр), parse_mode — выделение текста в описании жирным или курсивом (необязательный параметр), reply_to_message_id - id цитируемого сообщения (необязательный параметр), protect_content — для защиты от копирования (необязательный параметр, если нужно включить, то передайте в качестве параметра 1),has_spoiler — создание спойлера (необязательный параметр, если требуется включить, то передайте True), disable_notification - необязательный параметр, по умолчанию 0 - отключить нотификацию при получении, передать 1, message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума)
tg_send_video(platform_id, video, caption, reply_markup, parse_mode, reply_to_message_id, protect_content,has_spoiler, disable_notification, message_thread_id )
где
platform_id — id клиента в мессенджере,
video — ссылка на видео,
caption — описание до 1024 символов (необязательный параметр),
reply_markup — настройки кнопок (необязательный параметр),
parse_mode — выделение текста в описании жирным или курсивом (необязательный параметр),
reply_to_message_id - id цитируемого сообщения (необязательный параметр),
protect_content — для защиты от копирования (необязательный параметр, если нужно включить, то передайте в качестве параметра 1)
has_spoiler — создание спойлера (необязательный параметр, если требуется включить, то передайте True)
disable_notification - необязательный параметр, по умолчанию 0 - отключить нотификацию при получении, передать 1
message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума)
tg_send_some_video(platform_id, video_list, disable_notification=0, protect_content=False, reply_to_message_id=0, has_spoiler=False, message_thread_id )
где
platform_id — id клиента в мессенджере
video_list - массив видео(подробнее ниже)
disable_notification - необязательный параметр, по умолчанию значение 0.
0 - отключить уведомление при получении, 1 - передать с уведомлением
protect_content — для защиты от копирования (необязательн ый параметр, если нужно включить, то передайте в качестве параметра 1)
reply_to_message_id - идентификатор сообщения, в ответ на которое отправляется несколько видео
has_spoiler — создание спойлера (необязательный параметр, если требуется включить, то передайте True)
message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума)
Пример построения массива видео video_list:
'[["Ссылка на видео1", "caption", "parse_mode"], ["Ссылка на видео2"], ["Ссылка на видео3", "caption"]]'
Пример записи данных одного видео:
["Ссылка на видео", "caption", "parse_mode"]
Важен порядок параметров! При построении массива видео кавычки могут быть опущены
Описание параметров:
Ссылка на видео — ссылка на видео в формате https://…..video.mp4 (обязательный параметр)
caption — подпись (необязательный параметр)
parse_mode — разметка описания (необязательный параметр)
Пример:
video_list = '[["#{видео_общий}", "Клиент #{client_id} прислал видео"], ["#{видео_ракурс}"]]'
result = tg_send_some_video(1453208290, video_list, 0, 0)
tg_send_venue(platform_id, latitude, longitude, title, address, protect_content, disable_notification, reply_to_message_id, reply_markup, message_thread_id )
где вводятся данные: platform_id — id клиента в мессенджере, latitude —широта, longitude — долгота, title — название, address — адрес, protect_content — для защиты от копирования (необязательный параметр, если нужно включить, то передайте в качестве параметра 1), disable_notification - необязательный параметр, по умолчанию 0 - отключить нотификацию при получении, передать 1, reply_to_message_id - идентификатор сообщения, в ответ на которое отправляется несколько видео, reply_markup — настройки кнопок (необязательный параметр), message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума).


tg_send_contact(platform_id, phone, first_name, last_name, protect_content, disable_notification, reply_to_message_id, reply_markup, message_thread_id)
где phone — номер телефона в международном формате. Например, для РФ это +7XXXXXXXXXX, first_name и last_name вводятся вручную, protect_content — для защиты от копирования (необязательный параметр, если нужно включить, то передайте в качестве параметра 1), disable_notification - необязательный параметр, по умолчанию 0 - отключить нотификацию при получении, передать 1, reply_to_message_id - идентификатор сообщени я, в ответ на которое отправляется несколько видео, reply_markup — настройки кнопок (необязательный параметр), message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума).


tg_send_sticker(platform_id, sticker_id, protect_content, disable_notification, reply_to_message_id, reply_markup, message_thread_id)
где platform_id — id клиента в мессенджере, sticker_id — id стикера. Его можно получить, отправив нужный стикер боту https://t.me/RawDataBot . В ответ бот присылает данные, нам нужен последний параметр file_id, protect_content — для защиты от копирования (необязательный параметр, если нужно включить, то передайте в качестве параметра 1), disable_notification - необязательный параметр, по умолчанию 0 - отключить нотификацию при получении, передать 1, reply_to_message_id - идентификатор сообщения, в ответ на которое отправляется несколько видео, reply_markup — настройки кнопок (необязательный параметр), message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума).
tg_send_video_note(platform_id, video_note, reply_markup, protect_content, reply_to_message_id, disable_notification, message_thread_id)
где
platform_id — id клиента в мессенджере,
video_note — id видео. Его можно получить, отправив нужное видео боту https://t.me/RawDataBot. В ответ бот присылает данные, нам нужен последний параметр file_id,
reply_markup — настройки кнопок (необязательный параметр),
protect_content — для защиты от копирования (необязательный параметр, если нужно включить, то передайте в качестве параметра 1),
reply_to_message_id - идентификатор сообщения, в ответ на которое отправляется круглое видео,
disable_notification - необязательный параметр, по умолчанию 0 - отключить нотификацию при получении, передать 1,
message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума).
tg_send_photo(platform_id, photo, caption, reply_markup, parse_mode, reply_to_message_id, protect_content,has_spoiler, disable_notification, message_thread_id)
где
platform_id — id клиента в мессенджере,
photo — ссылка на картинку или file_id, полученный у бота RawDataBot,
caption — описание до 1024 символов (необязательный параметр),
reply_markup — настройки кнопок (необяза тельный параметр),
parse_mode — выделение текста в описании жирным или курсивом (необязательный параметр),
reply_to_message_id - идентификатор сообщения, в ответ на которое отправляется несколько фото,
protect_content — для защиты от копирования (необязательный параметр, если нужно включить, то передайте в качестве параметра 1)
has_spoiler — создание спойлера (необязательный параметр, если требуется включить, то передайте True),
disable_notification - необязательный параметр, по умолчанию 0 - отключить нотификацию при получении, передать 1,
message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума).
tg_send_some_photo(platform_id, image_list, disable_notification=0, protect_content=False, reply_to_message_id=0, has_spoiler=False, message_thread_id)
где
platform_id — id клиента в мессенджере
image_list - массив картинок (подробнее ниже)
disable_notification - необязательный параметр, по умолчанию 0 - отключить нотификацию при получении, передать 1
protect_content — для защиты от копирования (необязательный параметр, если нужно включить, то передайте в качестве параметра 1)
reply_to_message_id - идентификатор сообщения, в ответ на которое отправляется несколько фото
has_spoiler — создание спойлера (необязательный параметр, если требуется включить, то передайте True)
message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума)
Пример image_list:
'[["Ссылка на картинку 1", "caption", "parse_mode"], ["Ссылка на картинку 2"], ["Ссылка на картинку 3", "caption"]]'
Пример данных одной картинки: ["Ссылка на картинку 1", "caption", "parse_mode"]
Важен порядок параметров! При построении массива картинок кавычки могут быть опущены
Описание параметров:
1 - ссылка на картинку
caption — подпись (не обязателен)
parse_mode — разметка описания (не обязателен)


tg_send_dice(platform_id, emoji, reply_markup, disable_notification, reply_to_message_id, protect_content, message_thread_id), где
platform_id – id в Телеграм, куда нужно прислать сообщение,
emoji – какое эмодзи требуется отправить (необязательный параметр).Если оставить параметр незаполненным, то по умолчанию отправит кубик. Вы можете передавать в этом параметре как эмодзи в виде строки, так и ключевое слово, используемое для его обозначения.
reply_markup – настройки кнопок (необязательный параметр),
disable_notification – отключение уведомления(необязательный параметр, для отключения уведомления передайте в этом параметре любое значение),
reply_to_message_id – отправить ответом на сообщение (необязательный параметр, отправить ответом на сообщение, требуется идентификатор сообщения),
protect_content – защита контента от копирования (необязательный параметр, для включения передайте в этом параметре любое значение),
message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума).
Список возможных emoji:
1) 'darts' или '🎯', для значений от 1 до 6
2) 'dice' или '🎲', для значений от 1 до 6
3) 'bowling' или '🎳', для значений от 1 до 6
4) 'basketball' или '🏀', для значений от 1 до 5
5) 'football' или '⚽', для значений от 1 до 5
6) 'slots' или '🎰', для значений от 1 до 64
Также если клиент отправит боту одно из этих эмодзи, то вы получите коллбэк с информацией о кол-ве очков и какое использовалось эмодзи.
Пример использования: tg_send_dice(456784121, 'slots')
Чтобы отправить сообщение нужно использовать одну из этих функций:
tg_send_message(platform_id, text, client_message_id=None, reply_markup=None, parse_mode=None, disable_web_page_preview=0, protect_content=False, disable_notification, message_thread_id )
или
tg_send_message_1(token, platform_id, text, client_message_id=None, reply_markup=None, parse_mode=None, disable_web_page_preview=0, protect_content=False, disable_notification, message_thread_id ) - отправка сообщения в телеграмм с указанием бота
Функция tg_send_message_1 отличается от tg_send_message первым параметром
token - токен Телеграм бота из BotFather
platform_id — id в Телеграм, куда нужно прислать сообщение
client_message_id - идентификатор сообщения, которое необходимо процитировать (необязательный параметр)
reply_markup — настройки кнопок (необязательный параметр)
parse_mode — выделение текста в описании жирным или курсивом (необязательный параметр)
disable_web_page_preview - отобразить превью ссылки(необязательный параметр). Чтобы отключить передайте 1, иначе 0 или оставьте пустое значение “”
protect_content — для защиты от копирования. Если нужно включить выделение текста в описании жирным или курсивом, то передайте в качестве параметра 1 (необязательный параметр)
disable_notification – отключение уведомления(необязательный параметр, для отключения уведомления передайте в этом параметре любое значение)
message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума)
Где взять platform_id для отправки уведомлений:
- 1.У вас должен быть подключен телерам-бот к проекту
- 2.В этого бота нужно прислать любое сообщение с того телеграм-аккаунта, куда должны приходить сообщения о заявках
- 3.Далее переходите в раздел Клиенты в Salebot
- 4.В списке диалогов выбираете диалог с телеграм-аккаунтом, которому будете отправлять заявки
- 5.Копируете значение ID в мессенджере

Пример отправки курсивного текста:
tg_send_message(47615196, "<i>курсив</i>",None,None,"html")
Пример отправки жирного текста:
tg_send_message(platform_id, '*test*', None, None, 'markdown')
Пример отправки сообщения с кнопками:
opts = {"keyboard": [[{"text": "Налево"}, {"text": "Направо"}]]}
r = tg_send_message(platform_id, "Налево пойдешь - коня потеряешь, направо пойдешь - себя потеряешь, прямо пойдешь - счастье найдешь", None, opts, None, 0)

Важно помнить, что reply_markup забирает формат json, а калькулятор распознает только линейную запись текста (без Enter), по этому следите чтобы не было переносов строки
Для более подробного изучения возможностей работы с кнопками при отправке сообщений читайте документацию Телеграм https://tlgrm.ru/docs/bots/api#keyboardbutton
tg_forward_message(platform_id, from_chat_id, message_id, protect_content, disable_notification, message_thread_id )
где platform_id — куда пересылать сообщение, from_chat_id — значение #{platform_id}, откуда пересылать сообщение, message_id —id пересылаемого сообщения, protect_content — для защиты от копирования (необязательный параметр, если нужно включить, то передайте в качестве параметра 1), disable_notification – отключение уведомления(необязательный параметр, для отключения уведомления передайте в этом параметре любое значение), message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума).
tg_create_chat_invite_link(platform_id, member_limit=None, hours=None, request=None)
где
platform_id — id чата в мессенджере,
member_limit - лимит на количество участников,
hours - количество часов, которое будет действовать ссылка,
request - будет при переходе формироваться запрос на вступление или нет.
При передаче параметра member_limit значение параметра request автоматически заменится на False. Если же нужно принимать заяв ки на вступление, то параметр member_limit оставляем пустым.
tg_revoke_chat_invite_link(platform_id, invite_link)
где platform_id — id чата в мессенджере, invite_link - ссылка, которую надо удалить

Для принятия заявки и добавления пользователя в канал/чат используется функция:
tg_approve_chat_join_request(chat_id, user_id)
Для того, чтобы отклонить заявку в канал/чат используется: tg_decline_chat_join_request(chat_id, user_id)
где:
chat_id - идентификатор группы/канала внутри мессенджера
user_id - идентификатор пользователя внутри мессенджера
Так как внутри Salebot идентификаторы клиентов (пользователей, групп, каналов) внутри мессенджера записываются в переменной platform_id, то для работы с данными функциями требуется первично запомнить значения platform_id в переменные, например, chat_id и user_id.
Для изменения имени чата через бот используйте в калькуляторе функцию tg_set_group_title с такими параметрами:
platform_id — идентификатор чата,
title — новое название чата

tg_set_group_title(platform_id, 'Тестовый чат')
Для изменения имени чата через бот используйте в калькуляторе функцию tg_set_chat_description с такими параметрами:
platform_id — идентификатор чата,
description — новое описание чата

Для повышения пользователя до уровня Администратора через бот используйте в калькуляторе функцию tg_promote_user с такими параметрами:
platform_id — идентификатор супергруппы или, если используете в канале, имя канала вида @channelusername,
user_id — идентификатор пользователя,
promote_options_list — список прав, которые нужно включить.
В списке прав можно указать следующие права:
is_anonymous — присутствие администратора в чате скрыто,
can_manage_chat — администратор может получить доступ к журналу событий чата, статистике чата, статистике сообщений в каналах, видеть участников канала, видеть анонимных администраторов в супер-группах и игнорировать медленный режим. Этот уровень прав выдается по умолчанию, в случае указания любой из последующих привилегий.
can_post_messages — администратор может создавать сообщения канала, только для каналов,
can_edit_messages — администратор может редактировать сообщения других пользователей и может закреплять сообщения, только для каналов,
can_delete_messages — администратор может удалять сообщения других пользователей, can_manage_video_chats — администратор может управлять видеочатами, can_restrict_members — администратор может ограничивать, ставить/отменять бан участникам чата,
can_promote_members — администратор может добавлять новых администраторов с подмножеством их собственных привилегий или понижать в должности администраторов, которых он повысил, прямо или косвенно (повысили администраторы, которые были им назначены),
can_change_info — администратор может изменить название чата, фото и другие настройки, can_invite_users — администратор может приглашать новых пользователей в чат, can_pin_messages — администратор может закреплять сообщения, только супергруппы.
Пример:
promote_options_list = ‘[“can_promote_members”,”can_change_info”,”can_invite_users”]’ tg_promote_user(platform_id, user_id, promote_options_list)
В данном примере помимо перечисленных прав будут по умолчанию выданы права can_manage_chat.
Пример:


В данном примере в параметр replyfrom записан userid клиента, сообщение которого цитируют и после выдают права Администратора с меткой "огоньтитул"
Внимание!!! Этот метод работает только в том случае, если титул меняете пользователю через бот, который данного пользователя назначил администратором текущей группы.
Внимание!!! Этот способ работает только для супер-групп.
Для изменения титула администратора используйте в калькуляторе функцию tg_set_administrator_title с такими параметрами:
platform_id — идентификатор супергруппы,
user_id — идентификатор пользователя,
title — титул администратора. Для титула есть следующие ограничения: 0-16 символов, эмодзи не разрешены.
Пример:
tg_set_administrator_title(platform_id, user_id, ‘Модератор’)
tg_ban_chat_member(chat_id, user_id, hours)
где chat_id — id чата в мессенджере, user_id - id пользователя для блокировки, hours - длительность блокировки в часах, необязательный параметр, по умолчанию блокировка навечно. При указании длительности блокировки свыше 366 дн. блокировка будет установлена навечно
tg_unban_chat_member(chat_id, user_id)
где chat_id — id чата в мессенджере, user_id - id пользователя для блокировки
result = tg_get_chat_member(chat_id, user_id) - получить пользователя из канала\группы (использовать для проверки подписки)
где
chat_id — id чата в мессенджере, user_id - id пользователя, которого проверяем (можно передать через переменную #{platform_id})
Результат: Если есть в канале\группе
{"ok":true,"result":{"user":{"id":613182600,"is_bot":false,"first_name":"NAME","last_name":"LAST_NAME"},"status":"member","until_date":0}}
Результат: Если нет в канале\группе
{"ok":true,"result":{"user":{"id":123456,"is_bot":false,"first_name":"Имя","username":"username","language_code":"ru"},"status":"left"}}
Тут особенность самого Telegram, если клиент напрямую не контактировал с ботом, то при отсутствии его в группе\канале метод возвращает 400 ответ {"ok":false,"error_code":400,"description":"Bad Request: user not found"}
поэтому мы его форматируем под общий вид, для удобства, и отправляем следующий ответ: {"ok":true,"result":{"user":{"id":123456,"status":"left"}} , где 123456 - id пользователя.
Примеры, как можно получить значения:
result = tg_get_chat_member('-10015109988', '613182600')
res = get(result, 'result')
member_status = get(res, 'status')
member_status - left - не состоит в группе\канале
в member_status запишется статус пользователя (member, kicked, creator, administrator и тд) или None если пользователь не найден либо возникла ошибка.Функция some_client_in_list(list_id, recepient), где:
list_id - номер списка;
recepient - это значение id в мессенджере проверяемого. Для чатов значение переменной chat_member_id.
Возвращаемый результат:
True - клиент есть в списке;
False - клиента нет в указанном списке.
Пример:
r = some_client_in_list(123456, chat_member_id)
Редактировать можно только инлайн-клавиатуру.
- Редактирование текста в сообщении: tg_edit_message_text(platform_id, message_id, text, reply_markup, parse_mode, disable_web_page_preview) где: Параметры parse_mode, reply_markup, disable_web_page_preview необязательные для вкл ючения disable_web_page_preview в этом параметре нужно передать 1, а для выключения - 0.
- Редактирование описания: tg_edit_message_caption(platform_id, message_id, caption, reply_markup, parse_mode) гд е: Параметр reply_markup необязательный. Параметр parse_mode — выделение текста в описании жирным или курсивом(необязательный параметр)
- Редактирование сообщения с медиа: tg_edit_message_media(platform_id, message_id, media, reply_markup) Параметр media представляет собой словарь вида '{"type": "photo", "media": "<файл для отправки>"}', где в качестве <файл для отправки> рекомендуется указать file_id, полученный через @RawDataBot, или URL-адрес HTTP для Telegram. подробнее читайте тут Параметр reply_markup необязательный
- Редактировать только инлайн-клавиатуру в сообщении: tg_edit_message_reply_markup(platform_id, message_id, reply_markup). Все параметры обязательны
tg_copy_message(platform_id, from_chat_id, message_id, reply_to_message_id, reply_markup, parse_mode, protect_content, disable_notification, message_thread_id )
, где
platform_id - id чата, в который копирыем сообщение (обязательный параметр);
from_chat_id - id чата, из которого копируем сообщение (обязательный параметр);
message_id - id сообщения, которое копируем (обязательный параметр);
reply_to_message_id - id исходного сообщения, если копируемое сообщение являеся комментарием (необязательный параметр);
reply_markup — настройки кнопок (необязательный параметр);
parse_mode — выделение текста в описании жирным или курсивом (необязательный параметр);
protect_content — для защиты от копирования. Если нужно включить выделение текста в описании жирным или курсивом, то передайте в качестве параметра 1 (необязательный параметр);
disable_notification- отправить сообщение молча, без уведомления (необязательный параметр)
message_thread_id — идентификатор темы (до ступно для супергрупп при наличии функционала форума).
tg_delete_message(platform_id, message_id)
где где platform_id — id клиента в мессенджере, message_id — id сообщения
parse_mode выделяет весь текст/его часть курсивом или жирным шрифтом. Может иметь значения html или markdown.
Если выбираете html:
для жирного шрифта используете
"<b>caption</b>"
для курсива
"<i>caption</i>"
Для Markdown:
для жирного шрифта используете
"*caption*"
для курсива
"_caption_"
Пример:


Для работы этой функции ваш бот должен быть администратором канала/чата.
Для определения числа участников в калькуляторе используйте функцию tg_get_chat_member_count(platform_id)
где platform_id - это идентификатор группы. Присвойте переменной значение этой функции как показано в примере:
count = tg_get_chat_member_count(-100160754137668)
В данную переменную попадет ответ сервера такого вида: {"ok":true,"result":6}
Где result и есть число пользователей в группе вместе с админами и ботами.
Для работы этой функции ваш бот должен быть администратором канала/чата.
Для того, чтобы показать действия бота в данный момент (сделать некий анонс следующего сообщения), используйте функцию:
tg_send_chat_action(platform_id, bot_action, message_thread_id ),
где platform_id - это идентификатор группы, а bot_action - действие бота из списка. В приведенном примере пока обрабатывается запрос, будет выводится уведомление “бот печатает”, так как действие написано с ошибкой, message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума) .
tg_send_chat_action(-100160754137668, 'choose_sticker') - правильное написание
Выберите одно из действий в зависимости от того, что по итогу придет пользователю:
typing для текстовых сообщений,
upload_photo для фотографий,
record_video или upload_video для видео ,
record_voice или upload_voice для голосовых заметок,
upload_document для общих файлов,
choose_sticker для стикеров,
find_location для данных о местоположении,
record_video_note или upload_video_note для видеозаметки.
Данное уведомление будет отображаться, пока не не будет получен какой-либо ответ от бота, но не более 5 секунд.
Работает только при отправке файлов в группу. На каналах работать не будет!
Когда пользователь отправит в бота файл размером более 20 Мб, ему добавится переменная с идентификатором этог о сообщения big_message_id. Она нужна для пересылки сообщения в группу.
Создаем группу и добавляем в неё бота как участника группы, от которого будет осуществляться пересылка. Перед этим убедитесь, что в настройках бота в BotFather включена возможность добавлять его в группы (инструкция тут)
После добавления бота в группу в меню Клиенты в salebot появится чат с этой группой. Переходим в него и копируем идентификатор группы.
Далее настраиваем передачу больших файлов в эту группу.
- 1.Для этого добавим блок с типом:
Первостепенная проверка, если пользователь должен перейти в этот блок и продолжить движение от него или
Не состояние с условием, что б клиент остался в том месте воронки из которого отправил файл.
2. В поле "Условие" вставить: attachment_message
3. В поле Переменная для сравнения добавляем следующее:
attachment_url == "File is too big" AND client_type == 1
то есть условие сработает в том случае, если файл превышает 20мб #{attachment_url} == "File is too big" и отправил его пользователь телеграм #{client_type} == 1
4. В поле Калькулятор, настраиваем пересылку сообщения: tg_forward_message(-721342366, platform_id, big_message_id)
где -721342366 — id нужной группы в мессенджере, о нем мы говорили выше (у вас будет другое значение id)
typing для текстовых сообщений
upload_photo для фотографий
record_video или upload_video для видео
record_voice или upload_voice для голосовых заметок
upload_document для общих файлов
choose_sticker для стикеров
find_location для данных о местоположении
record_video_note или upload_video_note для видеозаметки.
Данное уведомление будет отображаться пока не придет какой либо ответ от бота, но не более 5 секунд.
Для работы описанных функций ваш бот должен быть адми нистратором канала/чата.
Для ограничения возможностей всех пользователей (кроме админов) в калькуляторе можно использовать функцию
tg_chat_permission(platform_id, permission)
platform_id - идентификатор чата, а permission - массив значений для списка ограничений, приведенного ниже. В массиве значение 1 разрешает действие, а 0 - запрещает. Порядковый номер соответствует позиции в массиве
1. can_send_messages - разрешение отправлять текстовые сообщения, контакты, местоположения и места проведения
2. can_send_media_messages - разрешение отправлять аудио, документы, фотографии, видео, видеозаметки и голосовые заметки, подразумевается наличие разрешения can_send_messages
3. can_send_polls - разрешение отправлять опросы, подразумевается наличие разрешения can_send_messages
4. can_send_other_messages - разрешение отправлять анимацию, игры, стикеры и использовать встроенных ботов, подразумевается наличие разрешения can_send_media_messages
5. can_add_web_page_previews - разрешение добавлять превью веб-страницы к своим сообщениям, подразумевается наличие разрешения can_send_media_messages
6. can_change_info - раз решение изменять название чата, фото и другие настройки. Игнорируется в публичных супер группах
7. can_invite_users - разрешение приглашать пользователей
8. can_pin_messages - разрешение закреплять сообщения. Игнорируется в публичных супер группах
В этом примере пользователям запрещаются любые действия:
permission = [0, 0, 0, 0, 0, 0, 0, 0]
tg_chat_permission(-10016071312347668, permission)
В этом примере разрешается абсолютно все:
permission = [1, 1, 1, 1, 1, 1, 1, 1]
tg_chat_permission(-10016071312347668, permission)
Массив с разрешениями лучше поместить в отдельную переменную.
Также для того, чтобы ограничить какого либо пользователя, есть возможность прописать ему персональные ограничения через функцию
tg_restrict_chat_member(platform_id, user_id, minutes, permission).
platform_id - идентификатор чата
user_id - идентификатор пользователя
minutes - кол-во минут, в течении которого будет действовать ограничение (если не указать явно, по умолчанию будет применено значение 3600, что соответствует 60 часам, а если указать 0, то ограничения будут действовать бессрочно)
permission - массив значений для списка ограничений, аналогичный такому в функции tg_chat_permission
Пример применения функции, в котором пользователю запретили все на 3 минуты:
permission = [0, 0, 0, 0, 0, 0, 0, 0]
tg_restrict_chat_member(-1001607137668, 473737685, 3, permission)
При входе в чат пользователю будет показано уведомление о невозможности писать в чат и если ограничение по времени было выставлено, то он увидит срок действия данного ограничения.
Использовать с осторожностью. Все существующие ссылки для входа в вашу группу станут неактивными.
tg_export_chat_link(platform_id)
где platform_id — id группы в Телеграм, в которой нужно сделать все существующие ссылки неактивными. В случае успеха будет возвращена ссылка, которая будет единственным способом попасть в группу до тех пор, пока вновь не будут созданы дополнительные ссылки прочими способами.
tg_pin_chat_message(platform_id, message_id, disable_notification)
где
platform_id — id группы в Телеграм, в которой нужно закрепить сообщение,
message_id – id сообщения которое нужно закрепить,
disable_notification – параметр определяет нужно ли отправлять уведомление всем участникам чата о новом закрепленном сообщении (уведомления всегда отключены в каналах и приватных чатах).
Если не нужно отправлять уведомления, то в качестве значения параметра disable_notification передайте 1, если нужно - 0.
tg_unpin_chat_message(platform_id, message_id)
где platform_id — id группы в Телеграм, в которой нужно открепить сообщение, а message_id (необязательный параметр) – id сообщения которое нужно открепить. Если message_id не указано, то самое последнее закрепленное сообщение (по дате отправки) будет откреплено.
tg_unpin_all(platform_id)
где platform_id — id группы в Телеграм, в которой нужно открепить все сообщения.
tg_set_chat_photo(platform_id, photo), где platform_id — идентификатор чата, в котором Вы хотите установить аватарку, photo — ссылка на фото.
Фото по ссылке не должно иметь объем свыше 10 МБ
tg_set_chat_photo(-1001607137668123, 'https://static10.tgstat.ru/channels/_0/f8/f8198fa2a902c0538ef425f284f03e9d.jpg')
tg_delete_chat_photo(platform_id), где platform_id — идентификатор чата, в котором Вы хотите удалить аватарку.
tg_delete_chat_photo(-1001607137668123)
Данные уведомления показываются только в результате нажатия на callback-кнопку в телеграмме.
Для примера будут использоваться следующие кнопки: [{"line":0,"index_in_line":0,"text":"111","type":"inline","callback":"первая"}, {"line":1,"index_in_line":0,"text":"222","type":"inline","callback":"вторая"}, {"line":2,"index_in_line":0,"text":"333","type":"inline","callback":"третья"}]
После нажатия на такую кнопку приходит callback с текстом, содержащимся в соответствующем поле.
При нажатии на кнопку “111” придет callback с текстом “первая”. Далее создаем блок с первостепенной проверкой условия и в условие пишем желаемый текст. В нашем случае “первая”:
Если в поле Выбор соответствия выбрать Игнорируя ошибки и неточности, то в дальнейшем можно будет такой блок использовать для всех вариантов, которые отличаются на 1-2 символа. Например, благодарить за поставленную такой кнопкой оценку работы.
Далее в калькуляторе используйте функцию tg_answer_callback_query и в нее поместите такие параметры:
callback_query_id - данный id позволяет идентифицировать нажавшего кнопку и продемонстрировать ему Alert-уведомление,
text - текст Alert-уведомления.
tg_answer_callback_query('#{callback_query_id}', "Вы нажали кнопку 111")
Важно! Параметр callback_query_id нужно передавать так, как показано в примере, т.е. в '#{}'
Если все подготовлено правильно, то результатом нажатия на кнопку будет Alert-уведомление с заданным текстом. В мобильной версии имя бота будет как заголовок над текстом.
Если же вы хотите показать простое всплывающее сообщение, то передайте третьим параметром False, как в примере ниже:
tg_answer_callback_query('#{callback_query_id}', "Вы нажали кнопку 222", False)
В случае нажатия на кнопку при таких параметрах на несколько секунд появиться уведомление такого вида:
Для перехода в бот с параметром по нажатию callback-кнопки в телеграм используйте функцию tg_callback_url_open(callback_query_id, url), где
callback_query_id - данный id позволяет идентифицировать нажавшего кнопку и продемонстрировать ему Alert-уведомление,
url - URL-адрес, указывающий бота и параметр (выглядит так: t.me/your_bot?start=XXXX, вместо your_bot - имя бота)
tg_callback_url_open('#{callback_query_id}', 't.me/bot_name?start=XXXX')
tg_set_command(commands, language, scope, platform_id, user_id), где
commands — команды для бота в виде списка списков, каждый вложенный список состоит из 2 элементов из которых 1 - наименование команды, а 2 - ее описание (существует ограничение в 100 команд),
language – двухбуквенный код языка ISO 639-1, например 'ru' или 'en' (необязательный параметр, если не указан, то команды будут применяться ко всем пользователям из заданной области, для языка которых нет выделенных команд),
scope – параметр описывающий круг пользователей, для которых создаются команды(необязательный параметр, если не используете, то по умолчанию будет применено значение 'default'),
platform_id - идентификатор чата (необязательный параметр, применяется только при определенных значениях параметра scope),
user_id – идентификатор пользователя (необязательный параметр, применяется только при определенных значениях параметра scope).

command = [["count", "return count of user"],["unpin", "unpin all message"]] tg_set_command(command, '', 'all_chat_administrators')
В этом примере команды вынесены в отдельную переменную. Также можно добавить эти команды прямо в функцию:
tg_set_command('[["count", "return count of user"],["unpin", "unpin all message"]]', '', 'all_chat_administrators')
Для дальнейшего вызова команд в поле ввода сообщения введите символ '/'. Если все было сделано верно, то увидите подсказку в виде списка команд. Жирным шрифтом выделены команды, правее их описание.
Для использования команд настройте реакцию на сообщения содержащие команды.
Для команд в переписке с ботом реагировать нужно на сообщения вида:
'/command_name' – в этом примере command_name – команда.
для команд в чатах при вводе команды будут приходить сообщения вида:
Для команд в группах и чатах реагировать нужно на сообщения вида:
'/[email protected]_username' – в этом примере command_name – команда, а @bot_username – username бота.
Варианты параметра scope:
'default' - параметр по-умолчанию, подразумевает что команды будут работать в личных сообщениях с ботом.
'all_private_chats' – все закрытые чаты, команды доступны всем в закрытых чатах, в которых до бавлен бот.
'all_group_chats' – все групповые и супергрупповые чаты, команды доступны всем в указанных видах чатов, в которых добавлен бот.
'all_chat_administrators' – команды для администраторов всех групповых и супергрупповых чатов, в которых добавлен бот.
'chat' – команды для определенного чата (если выбрали данный вариант, то необходимо указать platform_id).
'chat_administrators' – команды для администраторов определенного чата (если выбрали данны й вариант, то необходимо указать platform_id).
'chat_member' – команды для конкретного участника определенного чата (если выбрали данный вариант, то необходимо указать platform_id и user_id, указанный пользователь должен состоять в указанном чате).
Если Вы не хотите использовать параметр language, но при этом используете параметр scope, то не забудьте указать после команд пустой параметр, как в примере:
tg_set_command(command, '', scope)
tg_get_command(language, scope, platform_id, user_id), где
language – двухбуквенный код языка ISO 639-1, например 'ru' или 'en' (необязательный параметр, если не указан, то будут показаны команды, применяемые ко всем пользователям из заданной области, для языка которых нет выделенных команд),
scope – параметр описывающий круг пользователей, для которых должны быть показаны команды(необязательный параметр, если не используете, то по умолчанию будет применено значение 'default'),
platform_id - идентификатор чата (необязательный параметр, применяется только при определенных значениях параметра scope),
user_id – идентификатор пользователя (необязательный параметр, применяется только при определенных значениях параметра scope).
command = tg_get_command('', 'all_chat_administrators')
Переменной присваиваем в качестве значения эту функцию и внутри переменной после выполнения будет ответ сервера с командами для заданного в параметре scope круга пользователей.
{"ok":true,"result":[{"command":"count","description":"return count of user"},{"command":"unpin","description":"unpin all message"}]}
Если вызвать функцию без параметров, то scope по умолчанию примет значение 'default'.
command = tg_get_command()
Если Вы не хотите использовать параметр language, но при этом используете параметр scope, то не забудьте указать в начале пустой параметр, как в примере:
tg_get_command('', scope)
tg_delete_command(language, scope, platform_id, user_id), где
language – двухбуквенный код языка ISO 639-1, например 'ru' или 'en' (необязательный параметр, если не указан, то будут удалены команды, которые применяться ко всем пользователям из заданной области, для языка которых нет выделенных команд),
scope – параметр описывающий круг пользователей, для которых удаляются команды(необязательный параметр, если не используете, то по умолчанию будет применено значение 'default'),
platform_id - идентификатор чата (необязательный параметр, применяется только при определенных значениях параметра scope),
user_id – идентификатор пользователя (необязательный параметр, применяется только при определенных значениях параметра scope).
tg_delete_command('', 'all_chat_administrators')
Если Вы не хотите использовать параметр language, но при этом используете параметр scope, то не забудьте указать в начале пустой параметр, как в примере:
tg_delete_command('', scope)
Команда вида tg_delete_command() удалит команды без указания параметра language из параметра scope по-умолчанию.
В методах send_document, send_voice, send_animation, send_video, send_photo можно не вставлять ссылки на внешние ресурсы, а пользоваться файлами в Telegram.
Например, нам нужно отправить голосовое сообщение. Для этого мы воспользуемся ботом https://t.me/mp3toolsbot. Отправляем ему нужный файл, который нужно сконвертировать в OGG формат. Далее нажимаем Voice Converter, а потом Save.
На выходе получаем:

Далее мы пересылаем это сообщение своему боту, а оттуда пересылаем в https://t.me/RawDataBot. Нам приходит ответ, где нужно скопировать последнее значение file_id

Его мы вставляем сюда:

И получаем

Если вы будете пересылать файл напрямую из бота mp3 Tools в Telegram bot Raw, то будет ошибка:

Поэтому сначала необходимо отправить в своего бота, а из него —Telegram bot Raw,
Если нужно отправить видео, фото, документ, то отправляете нужный файл своему боту и оттуда пересылаете в Telegram bot Raw. Далее копируете file_id и т.д., как описано выше.
Для создания обычного опроса используется функция
tg_send_poll(platform_id, question, options, is_anonymous, allows_multiple_answers, reply_markup, disable_notification, protect_content, token, reply_to_message_id, message_thread_id )
Обязательные параметры:
platform_id - id в Телеграм, куда нужно прислать сообщение
question - вопрос options - массив вариантов ответов
Необязательные параметры:
is_anonymous - 1 - анонимный опрос, '' - не анонимный
allows_multiple_answers - 1 - возможны несколько ответов, '' - один ответ
reply_markup - клавиатура или '' - без клавиатуры
disable_notification - 1 - отправить с уведомлением, '' - без уведомления
protect_content - 1 защитить от копирования и скриншотов, '' - без защиты
token - токен бота, если не передан используется текущий
reply_to_message_id - ид цитируемого сообщения
message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума)
Пример:
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, reply_to_message_id, message_thread_id )
Обязательные параметры:
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 - токен бота, если не передан используется текущий
reply_to_message_id - ид цитируемого сообщения
message_thread_id — идентификатор темы (доступно для супергрупп при наличии функционала форума)
Пример:
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}}