1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-03-29 21:57:16 +02:00

TG: Функции изменения сообщений

This commit is contained in:
Anton Titovets 2025-01-16 21:09:50 +03:00
parent 99895d0d6c
commit 19db55f57c
7 changed files with 6629 additions and 6251 deletions

File diff suppressed because it is too large Load Diff

View File

@ -674,6 +674,133 @@
КонецФункции
// Удалить сообщение
// Удаляет указанное сообщение из чата или канала
//
// Примечание:
// Метод в документации API: [deleteMessage](@core.telegram.org/bots/api#deletemessage)
//
// Параметры:
// Токен - Строка - Токен - token
// IDЧата - Строка, Число - ID целевого чата - chat
// IDСообщения - Строка, Число - ID удаляемого сообщения - message
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция УдалитьСообщение(Знач Токен, Знач IDЧата, Знач IDСообщения) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
URL = "api.telegram.org/bot" + Токен + "/deleteMessage";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("message_id", IDСообщения, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры);
Возврат Ответ;
КонецФункции
// Заменить клавиатуру сообщения
// Заменяет клавиатуру сообщения на новую
//
// Примечание:
// Метод в документации API: [editMessageReplyMarkup](@core.telegram.org/bots/api#editmessagereplymarkup)
//
// Параметры:
// Токен - Строка - Токен - token
// IDЧата - Строка, Число - ID целевого чата - chat
// IDСообщения - Строка, Число - ID удаляемого сообщения - message
// Клавиатура - Строка, Структура Из КлючИЗначение - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция ЗаменитьКлавиатуруСообщения(Знач Токен, Знач IDЧата, Знач IDСообщения, Знач Клавиатура) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Строка_ = "Строка";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("message_id" , IDСообщения, Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("reply_markup", Клавиатура , "СтрокаФайла", Параметры);
ДобавитьИдентификаторЧата(IDЧата, Параметры);
URL = "api.telegram.org/bot" + Токен + "/editMessageReplyMarkup";
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
// Заменить текст сообщения
// Заменяет текст сообщения на новый
//
// Примечание:
// Метод в документации API: [editMessageText](@core.telegram.org/bots/api#editmessagetext)
//
// Параметры:
// Токен - Строка - Токен - token
// IDЧата - Строка, Число - ID целевого чата - chat
// IDСообщения - Строка, Число - ID удаляемого сообщения - message
// Текст - Строка - Новый текст сообщения - text
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция ЗаменитьТекстСообщения(Знач Токен, Знач IDЧата, Знач IDСообщения, Знач Текст) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Строка_ = "Строка";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("message_id", IDСообщения, Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("text" , Текст , Строка_, Параметры);
ДобавитьИдентификаторЧата(IDЧата, Параметры);
URL = "api.telegram.org/bot" + Токен + "/editMessageText";
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
// Заменить описание сообщения
// Заменяет текст в сообщении с вложениями
//
// Примечание:
// Метод в документации API: [editMessageCaption](@core.telegram.org/bots/api#editmessagecaption)
//
// Параметры:
// Токен - Строка - Токен - token
// IDЧата - Строка, Число - ID целевого чата - chat
// IDСообщения - Строка, Число - ID удаляемого сообщения - message
// Описание - Строка - Новое описание сообщения - caption
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция ЗаменитьОписаниеСообщения(Знач Токен, Знач IDЧата, Знач IDСообщения, Знач Описание) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Строка_ = "Строка";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("message_id", IDСообщения, Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("caption" , Описание , Строка_, Параметры);
ДобавитьИдентификаторЧата(IDЧата, Параметры);
URL = "api.telegram.org/bot" + Токен + "/editMessageCaption";
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
// Сформировать клавиатуру по массиву кнопок
// Формирует простую JSON клавиатуру из массив кнопок для сообщения или нижней панели
//
@ -910,34 +1037,6 @@
КонецФункции
// Удалить сообщение
// Удаляет указанное сообщение из чата или канала
//
// Примечание:
// Метод в документации API: [deleteMessage](@core.telegram.org/bots/api#deletemessage)
//
// Параметры:
// Токен - Строка - Токен - token
// IDЧата - Строка, Число - ID целевого чата - chat
// IDСообщения - Строка, Число - ID удаляемого сообщения - message
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция УдалитьСообщение(Знач Токен, Знач IDЧата, Знач IDСообщения) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
URL = "api.telegram.org/bot" + Токен + "/deleteMessage";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("message_id", IDСообщения, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область РаботаСТемамиФорума

View File

@ -113,6 +113,8 @@
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста);
Telegram_ОтправитьТекстовоеСообщение(ПараметрыТеста);
Telegram_ЗаменитьТекстСообщения(ПараметрыТеста);
Telegram_ЗаменитьКлавиатуруСообщения(ПараметрыТеста);
Telegram_СформироватьКлавиатуруПоМассивуКнопок(ПараметрыТеста);
КонецПроцедуры
@ -127,6 +129,7 @@
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
Telegram_ОтправитьКартинку(ПараметрыТеста);
Telegram_ЗаменитьОписаниеСообщения(ПараметрыТеста);
Telegram_СкачатьФайл(ПараметрыТеста);
КонецПроцедуры
@ -2388,30 +2391,37 @@
IDЧата = ПараметрыФункции["Telegram_ChatID"];
IDКанала = ПараметрыФункции["Telegram_ChannelID"];
Текст = ПараметрыФункции["String"];
МассивКнопокКлавиатуры = Новый Массив;
МассивКнопокКлавиатуры.Добавить("Кнопка1");
МассивКнопокКлавиатуры.Добавить("Кнопка2");
Клавиатура = OPI_Telegram.СформироватьКлавиатуруПоМассивуКнопок(МассивКнопокКлавиатуры, Истина);
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст, Клавиатура);
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение", "Telegram");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСообщение(Результат, Текст); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение", "Telegram"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСообщение(Результат, Текст); // SKIP
IDСообщения = OPI_Инструменты.ЧислоВСтроку(Результат["result"]["message_id"]); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_MessageID", IDСообщения); // SKIP
OPI_Инструменты.ДобавитьПоле("Telegram_MessageID", IDСообщения, "Строка", ПараметрыФункции); // SKIP
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDКанала, Текст);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (канал)");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСообщение(Результат, Текст);
IDСообщения = OPI_Инструменты.ЧислоВСтроку(Результат["result"]["message_id"]);
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_ChannelMessageID", IDСообщения);
OPI_Инструменты.ДобавитьПоле("Telegram_ChannelMessageID", IDСообщения, "Строка", ПараметрыФункции);
Текст = "<b>Текст html %F0%9F%93%9E 10%</b>";
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDКанала, Текст, , "HTML");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (HTML)");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОк(Результат);
Текст = "%F0%9F%A4%BC";
@ -2419,7 +2429,6 @@
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (emoji)");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОк(Результат);
Текст = "Текст %F0%9F%A5%9D и emoji \(10%\)";
@ -2427,7 +2436,6 @@
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDКанала, Текст, , "MarkdownV2");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (текст и emoji)");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОк(Результат);
OPI_Инструменты.Пауза(5);
@ -2465,9 +2473,12 @@
Результат = OPI_Telegram.ОтправитьКартинку(Токен, IDЧата, Текст, Картинка);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьКартинку", "Telegram");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКартинка(Результат, Текст); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьКартинку", "Telegram"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКартинка(Результат, Текст); // SKIP
IDСообщения = OPI_Инструменты.ЧислоВСтроку(Результат["result"]["message_id"]); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_PicMessageID", IDСообщения); // SKIP
OPI_Инструменты.ДобавитьПоле("Telegram_PicMessageID", IDСообщения, "Строка", ПараметрыФункции); // SKIP
Результат = OPI_Telegram.ОтправитьКартинку(Токен, IDКанала, Текст, КартинкаПуть);
@ -3183,6 +3194,60 @@
КонецПроцедуры
Процедура Telegram_ЗаменитьТекстСообщения(ПараметрыФункции)
Токен = ПараметрыФункции["Telegram_Token"];
IDЧата = ПараметрыФункции["Telegram_ChannelID"];
IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"];
Текст = "Новый текст сообщения";
Результат = OPI_Telegram.ЗаменитьТекстСообщения(Токен, IDЧата, IDСообщения, Текст);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗаменитьТекстСообщения", "Telegram");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСообщение(Результат, Текст);
КонецПроцедуры
Процедура Telegram_ЗаменитьКлавиатуруСообщения(ПараметрыФункции)
Токен = ПараметрыФункции["Telegram_Token"];
IDЧата = ПараметрыФункции["Telegram_ChatID"];
IDСообщения = ПараметрыФункции["Telegram_MessageID"];
МассивКнопок = Новый Массив;
МассивКнопок.Добавить("Новая кнопка 1");
МассивКнопок.Добавить("Новая кнопка 2");
МассивКнопок.Добавить("Новая кнопка 3");
Клавиатура = OPI_Telegram.СформироватьКлавиатуруПоМассивуКнопок(МассивКнопок, Истина, Ложь);
Результат = OPI_Telegram.ЗаменитьКлавиатуруСообщения(Токен, IDЧата, IDСообщения, Клавиатура);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗаменитьКлавиатуруСообщения", "Telegram");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКлавиатураСообщения(Результат, Клавиатура);
КонецПроцедуры
Процедура Telegram_ЗаменитьОписаниеСообщения(ПараметрыФункции)
Токен = ПараметрыФункции["Telegram_Token"];
IDЧата = ПараметрыФункции["Telegram_ChatID"];
IDСообщения = ПараметрыФункции["Telegram_PicMessageID"];
Описание = "Новое описание картинки";
Результат = OPI_Telegram.ЗаменитьОписаниеСообщения(Токен, IDЧата, IDСообщения, Описание);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗаменитьОписаниеСообщения", "Telegram");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКартинка(Результат, Описание);
КонецПроцедуры
#КонецОбласти
#Область VK

View File

@ -824,6 +824,19 @@
КонецПроцедуры
Процедура Проверка_ТелеграмКлавиатураСообщения(Знач Результат, Знач Клавиатура) Экспорт
КлавиатураСообщения = Результат["result"]["reply_markup"];
Клавиатура_ = OPI_Инструменты.JsonВСтруктуру(Клавиатура);
Клавиатура_.Удалить("rows");
Клавиатура_ = OPI_Инструменты.JSONСтрокой(Клавиатура_);
ОжидаетЧто(Результат["ok"]).Равно(Истина);
ОжидаетЧто(OPI_Инструменты.JSONСтрокой(КлавиатураСообщения)).Равно(Клавиатура_);
КонецПроцедуры
Процедура Проверка_ВКПост(Знач Результат) Экспорт
ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
@ -2142,9 +2155,9 @@
КонецФункции
Функция ПолучитьОбщийМодуль(Знач Имя)
Модуль = Вычислить(Имя);
Возврат Модуль;
КонецФункции

View File

@ -294,12 +294,12 @@
// Метод в документации API: [sendMessage](@core.telegram.org/bots/api#sendmessage)
//
// Параметры:
// Токен - Строка - Токен бота - token
// IDЧата - Строка, Число - ID целевого чата или IDЧата*IDТемы - chat
// Текст - Строка - Текст сообщения - text
// Клавиатура - Строка - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
// Разметка - Строка - Вид обработки текста (HTML, Markdown, MarkdownV2) - parsemode
// IDВходящего - Строка, Число - ID сообщения на которое надо ответить - reply
// Токен - Строка - Токен бота - token
// IDЧата - Строка, Число - ID целевого чата или IDЧата*IDТемы - chat
// Текст - Строка - Текст сообщения - text
// Клавиатура - Строка, Структура Из КлючИЗначение - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
// Разметка - Строка - Вид обработки текста (HTML, Markdown, MarkdownV2) - parsemode
// IDВходящего - Строка, Число - ID сообщения на которое надо ответить - reply
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
@ -340,12 +340,12 @@
// Метод в документации API: [sendPhoto](@core.telegram.org/bots/api#sendphoto)
//
// Параметры:
// Токен - Строка - Токен бота - token
// IDЧата - Строка, Число - ID целевого чата или IDЧата*IDТемы - chat
// Текст - Строка - Текст сообщения - text
// Картинка - ДвоичныеДанные, Строка - Файл картинки - picture
// Клавиатура - Строка - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
// Разметка - Строка - Вид обработки текста (HTML, Markdown, MarkdownV2) - parsemode
// Токен - Строка - Токен бота - token
// IDЧата - Строка, Число - ID целевого чата или IDЧата*IDТемы - chat
// Текст - Строка - Текст сообщения - text
// Картинка - ДвоичныеДанные, Строка - Файл картинки - picture
// Клавиатура - Строка, Структура Из КлючИЗначение - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
// Разметка - Строка - Вид обработки текста (HTML, Markdown, MarkdownV2) - parsemode
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
@ -367,12 +367,12 @@
// Метод в документации API: [sendVideo](@core.telegram.org/bots/api#sendvideo)
//
// Параметры:
// Токен - Строка - Токен бота - token
// IDЧата - Строка, Число - ID целевого чата или IDЧата*IDТемы - chat
// Текст - Строка - Текст сообщения - text
// Видео - ДвоичныеДанные, Строка - Файл видео - video
// Клавиатура - Строка - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
// Разметка - Строка - Вид обработки текста (HTML, Markdown, MarkdownV2) - parsemode
// Токен - Строка - Токен бота - token
// IDЧата - Строка, Число - ID целевого чата или IDЧата*IDТемы - chat
// Текст - Строка - Текст сообщения - text
// Видео - ДвоичныеДанные, Строка - Файл видео - video
// Клавиатура - Строка, Структура Из КлючИЗначение - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
// Разметка - Строка - Вид обработки текста (HTML, Markdown, MarkdownV2) - parsemode
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
@ -394,12 +394,12 @@
// Метод в документации API: [sendAudio](@core.telegram.org/bots/api#sendaudio)
//
// Параметры:
// Токен - Строка - Токен бота - token
// IDЧата - Строка, Число - ID целевого чата или IDЧата*IDТемы - chat
// Текст - Строка - Текст сообщения - text
// Аудио - ДвоичныеДанные, Строка - Файл аудио - audio
// Клавиатура - Строка - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
// Разметка - Строка - Вид обработки текста (HTML, Markdown, MarkdownV2) - parsemode
// Токен - Строка - Токен бота - token
// IDЧата - Строка, Число - ID целевого чата или IDЧата*IDТемы - chat
// Текст - Строка - Текст сообщения - text
// Аудио - ДвоичныеДанные, Строка - Файл аудио - audio
// Клавиатура - Строка, Структура Из КлючИЗначение - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
// Разметка - Строка - Вид обработки текста (HTML, Markdown, MarkdownV2) - parsemode
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
@ -421,13 +421,13 @@
// Метод в документации API: [sendDocument](@core.telegram.org/bots/api#senddocument)
//
// Параметры:
// Токен - Строка - Токен бота - token
// IDЧата - Строка,Число - ID целевого чата или IDЧата*IDТемы - chat
// Текст - Строка - Текст сообщения - text
// Документ - ДвоичныеДанные, Строка - Файл документа - doc
// Клавиатура - Строка - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
// Разметка - Строка - Вид обработки текста (HTML, Markdown, MarkdownV2) - parsemode
// ИмяФайла - Строка - Отображаемое имя файла c расширением, если необходимо - filename
// Токен - Строка - Токен бота - token
// IDЧата - Строка,Число - ID целевого чата или IDЧата*IDТемы - chat
// Текст - Строка - Текст сообщения - text
// Документ - ДвоичныеДанные, Строка - Файл документа - doc
// Клавиатура - Строка, Структура Из КлючИЗначение - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
// Разметка - Строка - Вид обработки текста (HTML, Markdown, MarkdownV2) - parsemode
// ИмяФайла - Строка - Отображаемое имя файла c расширением, если необходимо - filename
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
@ -450,12 +450,12 @@
// Метод в документации API: [sendAnimation](@core.telegram.org/bots/api#sendanimation)
//
// Параметры:
// Токен - Строка - Токен бота - token
// IDЧата - Строка, Число - ID целевого чата или IDЧата*IDТемы - chat
// Текст - Строка - Текст сообщения - text
// Гифка - ДвоичныеДанные, Строка - Файл гифки - gif
// Клавиатура - Строка - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
// Разметка - Строка - Вид обработки текста (HTML, Markdown, MarkdownV2) - parsemode
// Токен - Строка - Токен бота - token
// IDЧата - Строка, Число - ID целевого чата или IDЧата*IDТемы - chat
// Текст - Строка - Текст сообщения - text
// Гифка - ДвоичныеДанные, Строка - Файл гифки - gif
// Клавиатура - Строка, Структура Из КлючИЗначение - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
// Разметка - Строка - Вид обработки текста (HTML, Markdown, MarkdownV2) - parsemode
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
@ -531,11 +531,11 @@
// Метод в документации API: [sendLocation](@core.telegram.org/bots/api#sendlocation)
//
// Параметры:
// Токен - Строка - Токен бота - token
// IDЧата - Строка, Число - ID целевого чата или IDЧата*IDТемы - chat
// Широта - Строка, Число - Географическая широта - lat
// Долгота - Строка, Число - Географическая долгота - long
// Клавиатура - Строка - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
// Токен - Строка - Токен бота - token
// IDЧата - Строка, Число - ID целевого чата или IDЧата*IDТемы - chat
// Широта - Строка, Число - Географическая широта - lat
// Долгота - Строка, Число - Географическая долгота - long
// Клавиатура - Строка, Структура Из КлючИЗначение - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
@ -568,12 +568,12 @@
// Метод в документации API: [sendContact](@core.telegram.org/bots/api#sendcontact)
//
// Параметры:
// Токен - Строка - Токен бота - token
// IDЧата - Строка, Число - ID целевого чата или IDЧата*IDТемы - chat
// Имя - Строка - Имя контакта - name
// Фамилия - Строка - Фамилия контакта - surname
// Телефон - Строка - Телефон контакта - phone
// Клавиатура - Строка - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
// Токен - Строка - Токен бота - token
// IDЧата - Строка, Число - ID целевого чата или IDЧата*IDТемы - chat
// Имя - Строка - Имя контакта - name
// Фамилия - Строка - Фамилия контакта - surname
// Телефон - Строка - Телефон контакта - phone
// Клавиатура - Строка, Структура Из КлючИЗначение - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
@ -674,6 +674,133 @@
КонецФункции
// Удалить сообщение
// Удаляет указанное сообщение из чата или канала
//
// Примечание:
// Метод в документации API: [deleteMessage](@core.telegram.org/bots/api#deletemessage)
//
// Параметры:
// Токен - Строка - Токен - token
// IDЧата - Строка, Число - ID целевого чата - chat
// IDСообщения - Строка, Число - ID удаляемого сообщения - message
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция УдалитьСообщение(Знач Токен, Знач IDЧата, Знач IDСообщения) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
URL = "api.telegram.org/bot" + Токен + "/deleteMessage";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("message_id", IDСообщения, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры);
Возврат Ответ;
КонецФункции
// Заменить клавиатуру сообщения
// Заменяет клавиатуру сообщения на новую
//
// Примечание:
// Метод в документации API: [editMessageReplyMarkup](@core.telegram.org/bots/api#editmessagereplymarkup)
//
// Параметры:
// Токен - Строка - Токен - token
// IDЧата - Строка, Число - ID целевого чата - chat
// IDСообщения - Строка, Число - ID удаляемого сообщения - message
// Клавиатура - Строка, Структура Из КлючИЗначение - Клавиатура. См. СформироватьКлавиатуруПоМассивуКнопок - keyboard
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция ЗаменитьКлавиатуруСообщения(Знач Токен, Знач IDЧата, Знач IDСообщения, Знач Клавиатура) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Строка_ = "Строка";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("message_id" , IDСообщения, Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("reply_markup", Клавиатура , "СтрокаФайла", Параметры);
ДобавитьИдентификаторЧата(IDЧата, Параметры);
URL = "api.telegram.org/bot" + Токен + "/editMessageReplyMarkup";
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
// Заменить текст сообщения
// Заменяет текст сообщения на новый
//
// Примечание:
// Метод в документации API: [editMessageText](@core.telegram.org/bots/api#editmessagetext)
//
// Параметры:
// Токен - Строка - Токен - token
// IDЧата - Строка, Число - ID целевого чата - chat
// IDСообщения - Строка, Число - ID удаляемого сообщения - message
// Текст - Строка - Новый текст сообщения - text
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция ЗаменитьТекстСообщения(Знач Токен, Знач IDЧата, Знач IDСообщения, Знач Текст) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Строка_ = "Строка";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("message_id", IDСообщения, Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("text" , Текст , Строка_, Параметры);
ДобавитьИдентификаторЧата(IDЧата, Параметры);
URL = "api.telegram.org/bot" + Токен + "/editMessageText";
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
// Заменить описание сообщения
// Заменяет текст в сообщении с вложениями
//
// Примечание:
// Метод в документации API: [editMessageCaption](@core.telegram.org/bots/api#editmessagecaption)
//
// Параметры:
// Токен - Строка - Токен - token
// IDЧата - Строка, Число - ID целевого чата - chat
// IDСообщения - Строка, Число - ID удаляемого сообщения - message
// Описание - Строка - Новое описание сообщения - caption
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция ЗаменитьОписаниеСообщения(Знач Токен, Знач IDЧата, Знач IDСообщения, Знач Описание) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
Строка_ = "Строка";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("message_id", IDСообщения, Строка_, Параметры);
OPI_Инструменты.ДобавитьПоле("caption" , Описание , Строка_, Параметры);
ДобавитьИдентификаторЧата(IDЧата, Параметры);
URL = "api.telegram.org/bot" + Токен + "/editMessageCaption";
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;
КонецФункции
// Сформировать клавиатуру по массиву кнопок
// Формирует простую JSON клавиатуру из массив кнопок для сообщения или нижней панели
//
@ -910,34 +1037,6 @@
КонецФункции
// Удалить сообщение
// Удаляет указанное сообщение из чата или канала
//
// Примечание:
// Метод в документации API: [deleteMessage](@core.telegram.org/bots/api#deletemessage)
//
// Параметры:
// Токен - Строка - Токен - token
// IDЧата - Строка, Число - ID целевого чата - chat
// IDСообщения - Строка, Число - ID удаляемого сообщения - message
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от Telegram
Функция УдалитьСообщение(Знач Токен, Знач IDЧата, Знач IDСообщения) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
URL = "api.telegram.org/bot" + Токен + "/deleteMessage";
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("message_id", IDСообщения, "Строка", Параметры);
OPI_Инструменты.ДобавитьПоле("chat_id" , IDЧата , "Строка", Параметры);
Ответ = OPI_Инструменты.Get(URL, Параметры);
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область РаботаСТемамиФорума

View File

@ -824,6 +824,19 @@
КонецПроцедуры
Процедура Проверка_ТелеграмКлавиатураСообщения(Знач Результат, Знач Клавиатура) Экспорт
КлавиатураСообщения = Результат["result"]["reply_markup"];
Клавиатура_ = OPI_Инструменты.JsonВСтруктуру(Клавиатура);
Клавиатура_.Удалить("rows");
Клавиатура_ = OPI_Инструменты.JSONСтрокой(Клавиатура_);
ОжидаетЧто(Результат["ok"]).Равно(Истина);
ОжидаетЧто(OPI_Инструменты.JSONСтрокой(КлавиатураСообщения)).Равно(Клавиатура_);
КонецПроцедуры
Процедура Проверка_ВКПост(Знач Результат) Экспорт
ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();

View File

@ -113,6 +113,8 @@
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("String" , ПараметрыТеста);
Telegram_ОтправитьТекстовоеСообщение(ПараметрыТеста);
Telegram_ЗаменитьТекстСообщения(ПараметрыТеста);
Telegram_ЗаменитьКлавиатуруСообщения(ПараметрыТеста);
Telegram_СформироватьКлавиатуруПоМассивуКнопок(ПараметрыТеста);
КонецПроцедуры
@ -127,6 +129,7 @@
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
Telegram_ОтправитьКартинку(ПараметрыТеста);
Telegram_ЗаменитьОписаниеСообщения(ПараметрыТеста);
Telegram_СкачатьФайл(ПараметрыТеста);
КонецПроцедуры
@ -2388,30 +2391,37 @@
IDЧата = ПараметрыФункции["Telegram_ChatID"];
IDКанала = ПараметрыФункции["Telegram_ChannelID"];
Текст = ПараметрыФункции["String"];
МассивКнопокКлавиатуры = Новый Массив;
МассивКнопокКлавиатуры.Добавить("Кнопка1");
МассивКнопокКлавиатуры.Добавить("Кнопка2");
Клавиатура = OPI_Telegram.СформироватьКлавиатуруПоМассивуКнопок(МассивКнопокКлавиатуры, Истина);
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст, Клавиатура);
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение", "Telegram");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСообщение(Результат, Текст); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение", "Telegram"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСообщение(Результат, Текст); // SKIP
IDСообщения = OPI_Инструменты.ЧислоВСтроку(Результат["result"]["message_id"]); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_MessageID", IDСообщения); // SKIP
OPI_Инструменты.ДобавитьПоле("Telegram_MessageID", IDСообщения, "Строка", ПараметрыФункции); // SKIP
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDКанала, Текст);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (канал)");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСообщение(Результат, Текст);
IDСообщения = OPI_Инструменты.ЧислоВСтроку(Результат["result"]["message_id"]);
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_ChannelMessageID", IDСообщения);
OPI_Инструменты.ДобавитьПоле("Telegram_ChannelMessageID", IDСообщения, "Строка", ПараметрыФункции);
Текст = "<b>Текст html %F0%9F%93%9E 10%</b>";
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDКанала, Текст, , "HTML");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (HTML)");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОк(Результат);
Текст = "%F0%9F%A4%BC";
@ -2419,7 +2429,6 @@
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (emoji)");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОк(Результат);
Текст = "Текст %F0%9F%A5%9D и emoji \(10%\)";
@ -2427,8 +2436,13 @@
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDКанала, Текст, , "MarkdownV2");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (текст и emoji)");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОк(Результат);
Клавиатура = OPI_Инструменты.JsonВСтруктуру(Клавиатура, Ложь);
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст, Клавиатура);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (клавиатура структура)", "Telegram");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмОк(Результат);
OPI_Инструменты.Пауза(5);
@ -2465,9 +2479,12 @@
Результат = OPI_Telegram.ОтправитьКартинку(Токен, IDЧата, Текст, Картинка);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьКартинку", "Telegram");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКартинка(Результат, Текст); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьКартинку", "Telegram"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКартинка(Результат, Текст); // SKIP
IDСообщения = OPI_Инструменты.ЧислоВСтроку(Результат["result"]["message_id"]); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_PicMessageID", IDСообщения); // SKIP
OPI_Инструменты.ДобавитьПоле("Telegram_PicMessageID", IDСообщения, "Строка", ПараметрыФункции); // SKIP
Результат = OPI_Telegram.ОтправитьКартинку(Токен, IDКанала, Текст, КартинкаПуть);
@ -3183,6 +3200,60 @@
КонецПроцедуры
Процедура Telegram_ЗаменитьТекстСообщения(ПараметрыФункции)
Токен = ПараметрыФункции["Telegram_Token"];
IDЧата = ПараметрыФункции["Telegram_ChannelID"];
IDСообщения = ПараметрыФункции["Telegram_ChannelMessageID"];
Текст = "Новый текст сообщения";
Результат = OPI_Telegram.ЗаменитьТекстСообщения(Токен, IDЧата, IDСообщения, Текст);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗаменитьТекстСообщения", "Telegram");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмСообщение(Результат, Текст);
КонецПроцедуры
Процедура Telegram_ЗаменитьКлавиатуруСообщения(ПараметрыФункции)
Токен = ПараметрыФункции["Telegram_Token"];
IDЧата = ПараметрыФункции["Telegram_ChatID"];
IDСообщения = ПараметрыФункции["Telegram_MessageID"];
МассивКнопок = Новый Массив;
МассивКнопок.Добавить("Новая кнопка 1");
МассивКнопок.Добавить("Новая кнопка 2");
МассивКнопок.Добавить("Новая кнопка 3");
Клавиатура = OPI_Telegram.СформироватьКлавиатуруПоМассивуКнопок(МассивКнопок, Истина, Ложь);
Результат = OPI_Telegram.ЗаменитьКлавиатуруСообщения(Токен, IDЧата, IDСообщения, Клавиатура);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗаменитьКлавиатуруСообщения", "Telegram");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКлавиатураСообщения(Результат, Клавиатура);
КонецПроцедуры
Процедура Telegram_ЗаменитьОписаниеСообщения(ПараметрыФункции)
Токен = ПараметрыФункции["Telegram_Token"];
IDЧата = ПараметрыФункции["Telegram_ChatID"];
IDСообщения = ПараметрыФункции["Telegram_PicMessageID"];
Описание = "Новое описание картинки";
Результат = OPI_Telegram.ЗаменитьОписаниеСообщения(Токен, IDЧата, IDСообщения, Описание);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗаменитьОписаниеСообщения", "Telegram");
OPI_ПолучениеДанныхТестов.Проверка_ТелеграмКартинка(Результат, Описание);
КонецПроцедуры
#КонецОбласти
#Область VK