Як надсилати повідомлення за допомогою Telegram Business акаунта

tg_send_message(platform_id, text, client_message_id, reply_markup, parse_mode, disable_web_page_preview, protect_content, disable_notification, message_thread_id, entities)

Параметри:

Параметр Опис
**!** platform_id ID користувача Telegram, якому потрібно надіслати повідомлення *
**!** text Текст повідомлення
client_message_id ID повідомлення, яке потрібно процитувати
reply_markup Налаштування кнопок **
parse_mode Форматування тексту жирним і курсивом в описі ***. Може мати значення html, markdown, markdownV2.
disable_web_page_preview Показувати попередній перегляд посилання. Щоб вимкнути, передайте 1; інакше передайте 0 або залиште порожнім "".
protect_content Прапорець захисту вмісту. Передайте будь-яке значення, крім 0, False або '', щоб увімкнути.
disable_notification Прапорець звукового сповіщення (за замовчуванням: 0). Передайте 1, щоб вимкнути сповіщення, 0 — щоб увімкнути.
message_thread_id ID теми (доступно для супергруп з увімкненою функцією форуму)
entities Це дозволяє скопіювати попередньо відформатований текст разом з усіма його стилями та просто вказати діапазон символів, де потрібно застосувати певний шрифт. Приклад можна знайти в tg\_request у відповідному полі. Параметр має бути словником. Дивіться вкладку з прикладом для довідки.
**Детальний приклад**

Розглянемо простий приклад з набором обов'язкових параметрів:

platform_id вказує ідентифікатор конкретного клієнта.

Подивіться той самий приклад, але з використанням змінних:

У цьому прикладі змінна soob міститиме відповідь сервера після надсилання повідомлення.

Якщо ви збережете message_id з отриманої відповіді, це дозволить вам пізніше працювати з цим повідомленням (редагувати, видаляти, пересилати, коментувати).

Часто виникають труднощі при використанні всіх параметрів. Розглянемо наступний приклад:

  • Спочатку оголосіть усі параметри, що використовуються у функції. Пам'ятайте, параметри можна передавати не лише як значення, але й як змінні, що часто зручніше та зрозуміліше. Змінні, такі як platform_id та client_message_id, можна отримати з картки профілю клієнта.
    platform_id — ID клієнта Telegram, якому потрібно надіслати повідомлення *\ >Ми відповімо в тому ж чаті, де пише клієнт

    text - текст повідомлення. \ >Використовуємо форматування тексту - наприклад, виділення жирним.

    client_message_id - ID повідомлення, яке потрібно процитувати\ >У чатах ця змінна отримує своє значення автоматично.
    reply_markup — налаштування кнопок **. \ >Призначимо її змінній opts.
    parse_mode — Форматування тексту жирним і курсивом в описі ***. Може мати значення html, markdown, markdownV2. Символи, що використовуються для форматування тексту повідомлення, описані тут. \ >Використаємо markdown.
    disable_web_page_preview - Показувати попередній перегляд посилання. Щоб вимкнути, передайте 1; інакше передайте 0 або залиште порожнім "".\ >Ми можемо передати будь-яке значення, оскільки текст повідомлення не містить посилання.
    protect_content — Прапорець захисту вмісту. Передайте будь-яке значення, крім 0, False або '', щоб увімкнути.\ >Нам не потрібен захист вмісту, тому передамо порожній рядок ''.
    disable_notification — Прапорець звукового сповіщення (за замовчуванням: 0). Передайте 1, щоб вимкнути сповіщення, 0 — щоб увімкнути.\ >Сповіщення — це спливаюче вікно з текстом повідомлення. Увімкнемо його.

  • Далі збираємо функцію. Не забудьте призначити функцію змінній — це дозволить відстежувати статус надсилання повідомлення.

Ось що ми отримали:

Після того, як клієнт надішле нам ключове слово test, ми відповідаємо, цитуючи його повідомлення.

У ok ми бачимо статус надсилання; далі йде інформація про саме повідомлення — його ID, дані відправника та вміст.

Приклад з параметром entities

Ви можете зберігати оригінальний рядок у змінній, як показано нижче:

text = "qwert asdfg zxcvb poiuy lkjhg 12345"

Параметр слід записувати як словник з даними та вказати бажане форматування, зазначивши шрифти:

entities = [{"offset":0,"length":5,"type":"bold"},{"offset":6,"length":4,"type":"text_link","url":"`` https://mavibot.ai"},{"offset":11,"length":9,"type":"strikethrough"},{"offset":21,"length":6,"type":"spoiler"},{"offset":29,"length":12,"type":"code"}]

Передайте параметр останнім у функції, яку ви використовуєте. Параметр можна передавати як функції tg_send_message, так і tg_send_message_1:

x = tg_send_message(platform_id, text, None, None, None, False, False, False, None, entities)

Щоб призначити змінній текст з перенесенням рядків, вкажіть значення наступним чином:

text = "Перший рядок тексту" + "\n" + "Другий рядок тексту" + "\n" + "Третій рядок"

Як надіслати повідомлення, вказавши конкретного Telegram бота

tg_send_message_1(token, platform_id, text, client_message_id, reply_markup, parse_mode, disable_web_page_preview, protect_content, disable_notification, message_thread_id, entities, business_connection_id)

Параметр Опис
**!** token Токен бота Telegram, отриманий від BotFather
**!** platform_id ID користувача Telegram, якому потрібно надіслати повідомлення *
**!** text Текст повідомлення
client_message_id ID повідомлення, яке потрібно процитувати
reply_markup Налаштування кнопок **
parse_mode Форматування тексту жирним і курсивом в описі ***. Може мати значення html, markdown, markdownV2.
disable_web_page_preview Показувати попередній перегляд посилання. Щоб вимкнути, передайте 1; інакше передайте 0 або залиште порожнім "".
protect_content Прапорець захисту вмісту. Передайте будь-яке значення, крім 0, False або '', щоб увімкнути.
disable_notification Прапорець звукового сповіщення (за замовчуванням: 0). Передайте 1, щоб вимкнути сповіщення, 0 — щоб увімкнути.
message_thread_id ID теми (доступно для супергруп з увімкненою функцією форуму)
entities Це дозволяє скопіювати попередньо відформатований текст разом з усіма його стилями та просто вказати діапазон символів, де потрібно застосувати певний шрифт. Приклад можна знайти в tg\_request у відповідному полі. Параметр має бути словником.
business_connection_id Значення Business ID використовується при підключенні бота та відображається в каналах. Його слід вказувати, якщо в параметрах є токен бота і повідомлення потрібно надіслати через обліковий запис користувача, пов'язаний з ботом.
Приклад

Приклад передачі параметра:
entities = [{"offset":0,"length":5,"type":"bold"},{"offset":6,"length":4,"type":"text_link","url":"https://mavibot.ai"},{"offset":11,"length":9,"type":"strikethrough"},{"offset":21,"length":6,"type":"spoiler"},{"offset":29,"length":12,"type":"code"}]

У прикладі показано лише словник, тоді як текст самого повідомлення призначається окремій змінній.

Як редагувати текст у повідомленні Telegram

Зверніть увагу!

Функція редагування повідомлення доступна лише для нових і нещодавно надісланих повідомлень.

Часовий проміжок, протягом якого дозволено редагування повідомлення, визначається самим месенджером і залежить від навантаження/активності вашого бота; для редагування він може бути скорочений.

За даними технічної підтримки месенджера, оптимальний час для редагування повідомлення становить 48 годин.

tg_edit_message_text(platform_id, message_id, text, reply_markup, parse_mode, disable_web_page_preview, entities)

Параметр Опис
**!** platform_id ID користувача Telegram, якому потрібно надіслати повідомлення *
**!** message_id ID повідомлення, яке потрібно відредагувати. Цей ID потрібно попередньо зберегти під час надсилання повідомлення.
**!** text Текст повідомлення
reply_markup Налаштування кнопок **
parse_mode Форматування тексту жирним і курсивом в описі ***. Може мати значення html, markdown, markdownV2.
disable_web_page_preview Показувати попередній перегляд посилання. Щоб вимкнути, передайте 1; інакше передайте 0 або залиште порожнім "".
entities Це дозволяє скопіювати попередньо відформатований текст разом з усіма його стилями та просто вказати діапазон символів, де потрібно застосувати певний шрифт. Приклад можна знайти в tg\_request у відповідному полі. Параметр має бути словником.

Як надіслати реакцію на повідомлення

tg_set_reaction(platform_id, message_id, reaction)

Параметр Опис
**!** platform_id ID чату Telegram
**!** message_id ID повідомлення
**!** reaction Необхідна реакція передається як рядок.
Приклад

Приклад коду для копіювання:

react = tg_set_reaction(platform_id, 1556, '👌')

Приклад у калькуляторі:

Як редагувати опис вкладення

tg_edit_message_caption(platform_id, message_id, caption, reply_markup, parse_mode, entities, show_caption_above_media)

Параметр Опис
**!** platform_id ID користувача Telegram, якому потрібно надіслати повідомлення *
**!** message_id ID повідомлення, яке потрібно відредагувати
**!** caption Текст опису
reply_markup Налаштування кнопок **
parse_mode Форматування тексту жирним і курсивом в описі ***. Може мати значення html, markdown, markdownV2.
entities

Це дозволяє скопіювати попередньо відформатований текст разом з усіма його стилями та просто вказати діапазон символів, де потрібно застосувати певний шрифт. Приклад можна знайти в tg\_request у відповідному полі. Параметр має бути словником.

Приклад передачі параметра:
entities = [{"offset":0,"length":5,"type":"bold"},{"offset":6,"length":4,"type":"text_link","url":"**https://,mavibot.ai"}**,{"offset":11,"length":9,"type":"strikethrough"},{"offset":21,"length":6,"type":"spoiler"},{"offset":29,"length":12,"type":"code"}]

У прикладі показано лише словник, тоді як текст самого повідомлення призначається окремій змінній.

show_caption_above_media Приймає значення True; якщо цей параметр вказано, текст повідомлення буде відображатися над вкладенням.

Як редагувати медіавкладення в повідомленні

Параметр Опис
**!** platform_id ID користувача Telegram, якому потрібно надіслати повідомлення *
**!** message_id ID повідомлення, яке потрібно відредагувати. Цей ID потрібно попередньо зберегти під час надсилання повідомлення.
**!** media

Словник, що описує медіафайл:
Приклад JSON словника для заміни раніше надісланого фото:
media = '{"type": "photo", "media": "<file_to_send>"}'

де <file_to_send> рекомендується використовувати file_id, отриманий через повний вебхук Telegram.

Детальніше параметри для словника описані в офіційній документації Telegram.

reply_markup Налаштування кнопок **

Як редагувати вбудовану клавіатуру в повідомленні

Параметр Опис
**!** platform_id ID користувача Telegram, якому потрібно надіслати повідомлення *
**!** message_id ID повідомлення, яке потрібно відредагувати. Цей ID потрібно попередньо зберегти під час надсилання повідомлення.
**!** reply_markup Налаштування кнопок **

Ви можете редагувати лише вбудовану клавіатуру.

Приклад: редагування повідомлення за допомогою Telegram API

Детальний приклад роботи з функціями Telegram API для редагування повідомлень ви можете знайти нижче.

Як скопіювати повідомлення

tg_copy_message(platform_id, from_chat_id, message_id, reply_to_message_id, reply_markup, parse_mode, protect_content, disable_notification, caption, message_thread_id, entities, show_caption_above_media)

Параметр Опис
**!** platform_id ID користувача Telegram, КУДИ потрібно скопіювати повідомлення *
**!** from_chat_id ID користувача Telegram, ЗВІДКИ потрібно скопіювати повідомлення *
**!** message_id ID повідомлення, яке потрібно скопіювати
reply_to_message_id ID оригінального повідомлення, якщо скопійоване повідомлення є коментарем
reply_markup Налаштування кнопок **
parse_mode

Форматування тексту жирним і курсивом в описі ***.

Може мати значення html, markdown, markdownV2.

protect_content Прапорець захисту вмісту. Передайте будь-яке значення, крім 0, False або '', щоб увімкнути.
disable_notification Прапорець звукового сповіщення (за замовчуванням: 0). Передайте 1, щоб вимкнути сповіщення, 0 — щоб увімкнути.
caption - Опис до 1024 символів.
message_thread_id ID теми (доступно для супергруп з увімкненою функцією форуму)
entities Це дозволяє скопіювати попередньо відформатований текст разом з усіма його стилями та просто вказати діапазон символів, де потрібно застосувати певний шрифт. Приклад можна знайти в tg\_request у відповідному полі. Параметр має бути словником.

Приклад передачі параметра:
entities = [{"offset":0,"length":5,"type":"bold"},{"offset":6,"length":4,"type":"text_link","url":**"https://mavibot.ai"}**,{"offset":11,"length":9,"type":"strikethrough"},{"offset":21,"length":6,"type":"spoiler"},{"offset":29,"length":12,"type":"code"}]

У прикладі показано лише словник, тоді як текст самого повідомлення призначається окремій змінній.
show_caption_above_media Приймає значення True; якщо цей параметр вказано, текст повідомлення буде відображатися над вкладенням.

Як переслати повідомлення

tg_forward_message(platform_id, from_chat_id, message_id, protect_content, disable_notification, message_thread_id)

Параметр Опис
**!** platform_id ID користувача Telegram, КУДИ потрібно надіслати повідомлення *
**!** from_chat_id ID користувача Telegram, ЗВІДКИ потрібно надіслати повідомлення *
**!** message_id ID повідомлення для пересилання
protect_content Прапорець захисту вмісту. Передайте будь-яке значення, крім 0, False або '', щоб увімкнути.
disable_notification Прапорець звукового сповіщення (за замовчуванням: 0). Передайте 1, щоб вимкнути сповіщення, 0 — щоб увімкнути.
message_thread_id ID теми (доступно для супергруп з увімкненою функцією форуму)

Як видалити повідомлення

tg_delete_message(platform_id, message_id)

! Використовуйте цей метод для видалення повідомлення, включаючи службові повідомлення, з наступними обмеженнями:

  • Повідомлення можна видалити лише якщо воно було надіслано менше ніж 48 годин тому.
  • Повідомлення з гральним кубиком в особистому чаті можна видалити лише якщо вони були надіслані більше ніж 24 години тому.
  • Боти можуть видаляти вихідні повідомлення в особистих чатах, групах і супергрупах.
  • Боти можуть видаляти вхідні повідомлення в особистих чатах.
  • Боти з дозволом can_post_messages можуть видаляти вихідні повідомлення в каналах.
  • Якщо бот є адміністратором групи, він може видалити будь-яке повідомлення в ній.
  • Якщо бот має дозвіл can_delete_messages у супергрупі або каналі, він може видалити будь-яке повідомлення там.
Параметр Опис
**!** platform_id ID користувача Telegram *
**!** message_id ID повідомлення, яке потрібно видалити

Як видалити кілька повідомлень

tg_delete_messages(platform_id, message_ids)

! Використовуйте цей метод для видалення повідомлення, включаючи службові повідомлення, з наступними обмеженнями:

  • Повідомлення можна видалити лише якщо воно було надіслано менше ніж 48 годин тому.
  • Повідомлення з гральним кубиком в особистому чаті можна видалити лише якщо вони були надіслані більше ніж 24 години тому.
  • Боти можуть видаляти вихідні повідомлення в особистих чатах, групах і супергрупах.
  • Боти можуть видаляти вхідні повідомлення в особистих чатах.
  • Боти з дозволом can_post_messages можуть видаляти вихідні повідомлення в каналах.
  • Якщо бот є адміністратором групи, він може видалити будь-яке повідомлення в ній.
  • Якщо бот має дозвіл can_delete_messages у супергрупі або каналі, він може видалити будь-яке повідомлення там.
Параметр Опис
**!** platform_id ID користувача Telegram
**!** message_ids Масив ID повідомлень для видалення. Максимум 100 елементів.

Приклад: надсилання повідомлення за допомогою Telegram API

Приклад коду для копіювання

Приклад 1

/*Зручно попередньо визначити текст у змінній*/
text='Пишу-пишу-пишу текст'
/*Функція надсилання повідомлення*/
soob=tg_send_message(platform_id, text)
/*Зберегти ID надісланого повідомлення*/
soob_id=soob['result']['message_id']

Приклад 2

id_group=-1001847103100
text='Тестування надсилання повідомлення через метод API. Наприклад, *жирний текст*'
opts = {"inline_keyboard": [[{"text": "👍","callback_data":1}, {"text": "👎","callback_data":2}]]}
disable_web_page_preview=1
protect_content=''
disable_notification=1
parse_mode='markdown'
soob=tg_send_message(id_group, text,client_message_id, opts, parse_mode, disable_web_page_preview, protect_content, disable_notification) 


Приклад: редагування повідомлення за допомогою Telegram API

Приклад налаштування

Отже, надішлемо собі повідомлення з вбудованою клавіатурою:

Далі відредагуємо текст повідомлення:

І відредагуємо кнопки:

Спробуємо відредагувати повідомлення із зображенням. Для цього надішліть повідомлення із зображенням і збережіть ID надісланого повідомлення. Детальні інструкції про те, як отримати URL зображення, читайте тут:

Тепер відредагуємо зображення та його опис:

Приклад коду для копіювання
/*Зручно попередньо визначити параметри у змінній.*/
text='Який пакет ви хотіли б обрати?'
opts = {"inline_keyboard": [[{"text": "Пакет 1","callback_data":1}, {"text": "Пакет 2","callback_data":2}]]}
/*Функція надсилання повідомлення*/
soob=tg_send_message(platform_id, text, None, opts)
/*Зберегти ID надісланого повідомлення*/
soob_id=soob['result']['message_id']

/*Редагувати повідомлення*/
text='Який пакет вас цікавить?'
tg_edit_message_text(platform_id, soob_id, text, opts)  

/*Редагувати вбудовану клавіатуру*/
opts = {"inline_keyboard": [[{"text": "Стандартний","callback_data":1}, {"text": "Преміум","callback_data":2}]]}
tg_edit_message_reply_markup(platform_id, soob_id, opts)


/*Надіслати зображення з описом*/
soob=tg_send_photo(platform_id, "AgACAgIAAxkBAAIPpWO4T7jhOgYHq6uR8rjnq9rIvBs-AAJlwDEb5fHASaGdhzgWjyn7AQADAgADeAADLQQ", "Це зображення")
/*Зберегти ID надісланого повідомлення*/
soob_id=soob['result']['message_id']

/*Редагувати зображення*/
media='{"type": "photo", "media": "AgACAgIAAxkBAAIPrmO4UiH7Tazqn-3IbFVzPKNsVEZmAAJ1wDEb5fHASWcNXKah-egvAQADAgADeQADLQQ"}'
tg_edit_message_media(platform_id, soob_id, media)
/*Редагувати опис зображення*/
tg_edit_message_caption(platform_id, soob_id, 'Це Я!')

Приклад: копіювання повідомлення за допомогою Telegram API

Приклад

Надішлемо повідомлення та збережемо його ID.

І скопіюємо раніше надіслане повідомлення.

Приклад коду для копіювання
/*Зручно попередньо визначити параметри у змінній.*/
text='Який пакет ви хотіли б обрати?'
opts = {"inline_keyboard": [[{"text": "Пакет 1","callback_data":1}, {"text": "Пакет 2","callback_data":2}]]}
/*Функція надсилання повідомлення*/
soob=tg_send_message(platform_id, text, None, opts)
/*Зберегти ID надісланого повідомлення*/
soob_id=soob['result']['message_id']


/*Скопіювати надіслане повідомлення*/
tg_copy_message('5081438490', '1840834360', soob_id, None, opts, None, None, 1)