mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-01-26 05:37:27 +02:00
YAX: тесты для Telegram API
This commit is contained in:
parent
9e27f8eafa
commit
e5971481c7
@ -21,7 +21,6 @@
|
||||
// SOFTWARE.
|
||||
|
||||
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
#Область ДанныеИНастройка
|
||||
@ -35,8 +34,8 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция ПолучитьИнформациюБота(Знач Токен) Экспорт
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/getMe");
|
||||
Возврат Ответ;
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/getMe");
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -49,8 +48,8 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция ПолучитьОбновления(Знач Токен) Экспорт
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/getUpdates");
|
||||
Возврат Ответ;
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/getUpdates");
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -64,11 +63,11 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция УстановитьWebhook(Знач Токен, Знач URL) Экспорт
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("url", URL);
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("url", URL);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/setWebHook", Параметры_);
|
||||
Возврат Ответ;
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/setWebHook", Параметры_);
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -104,83 +103,80 @@
|
||||
Функция ОбработатьДанные(Знач Запрос) Экспорт
|
||||
// BSLLS:DuplicateStringLiteral-off
|
||||
|
||||
Message = "message";
|
||||
From = "from";
|
||||
Chat = "chat";
|
||||
Id_ = "id";
|
||||
Username = "username";
|
||||
MessageId = "message_id";
|
||||
Message = "message";
|
||||
From = "from";
|
||||
Chat = "chat";
|
||||
Id_ = "id";
|
||||
Username = "username";
|
||||
MessageId = "message_id";
|
||||
|
||||
ЧтениеJSON = Новый ЧтениеJSON;
|
||||
ЧтениеJSON.УстановитьСтроку(Запрос.ПолучитьТелоКакСтроку());
|
||||
ЧтениеJSON = Новый ЧтениеJSON;
|
||||
ЧтениеJSON.УстановитьСтроку(Запрос.ПолучитьТелоКакСтроку());
|
||||
|
||||
СтруктураПараметровВходная = ПрочитатьJSON(ЧтениеJSON);
|
||||
СтруктураПараметровВыходная = Новый Структура;
|
||||
СтруктураПараметровВходная = ПрочитатьJSON(ЧтениеJSON);
|
||||
СтруктураПараметровВыходная = Новый Структура;
|
||||
|
||||
Если СтруктураПараметровВходная.Свойство(Message) Тогда
|
||||
Если СтруктураПараметровВходная.Свойство(Message) Тогда
|
||||
|
||||
СтруктураСообщения = СтруктураПараметровВходная[Message];
|
||||
СтруктураПользователя = СтруктураСообщения[From];
|
||||
СтруктураЧата = СтруктураСообщения[Chat];
|
||||
СтруктураСообщения = СтруктураПараметровВходная[Message];
|
||||
СтруктураПользователя = СтруктураСообщения[From];
|
||||
СтруктураЧата = СтруктураСообщения[Chat];
|
||||
|
||||
СтруктураПараметровВыходная.Вставить("Вид" , "Сообщение");
|
||||
СтруктураПараметровВыходная.Вставить("Никнейм" , СтруктураПользователя[Username]);
|
||||
СтруктураПараметровВыходная.Вставить("IDПользователя" , СтруктураПользователя[Id_]);
|
||||
СтруктураПараметровВыходная.Вставить("IDСообщения" , СтруктураСообщения[MessageId]);
|
||||
СтруктураПараметровВыходная.Вставить("IDЧата" , СтруктураЧата[Id_]);
|
||||
СтруктураПараметровВыходная.Вставить("Сообщение" , СтруктураСообщения["text"]);
|
||||
СтруктураПараметровВыходная.Вставить("Дата"
|
||||
, Дата(1970, 1, 1, 1, 0, 0) + СтруктураСообщения["date"]);
|
||||
СтруктураПараметровВыходная.Вставить("Вид", "Сообщение");
|
||||
СтруктураПараметровВыходная.Вставить("Никнейм", СтруктураПользователя[Username]);
|
||||
СтруктураПараметровВыходная.Вставить("IDПользователя", СтруктураПользователя[Id_]);
|
||||
СтруктураПараметровВыходная.Вставить("IDСообщения", СтруктураСообщения[MessageId]);
|
||||
СтруктураПараметровВыходная.Вставить("IDЧата", СтруктураЧата[Id_]);
|
||||
СтруктураПараметровВыходная.Вставить("Сообщение", СтруктураСообщения["text"]);
|
||||
СтруктураПараметровВыходная.Вставить("Дата", Дата(1970, 1, 1, 1, 0, 0) + СтруктураСообщения["date"]);
|
||||
|
||||
СтруктураПараметровВыходная.Вставить("БотОтключен" , Ложь);
|
||||
СтруктураПараметровВыходная.Вставить("БотОтключен", Ложь);
|
||||
|
||||
ИначеЕсли СтруктураПараметровВходная.Свойство("my_chat_member") Тогда
|
||||
ИначеЕсли СтруктураПараметровВходная.Свойство("my_chat_member") Тогда
|
||||
|
||||
СтруктураСообщения = СтруктураПараметровВходная["my_chat_member"];
|
||||
СтруктураПользователя = СтруктураСообщения[From];
|
||||
СтруктураЧата = СтруктураСообщения[Chat];
|
||||
СтруктураСообщения = СтруктураПараметровВходная["my_chat_member"];
|
||||
СтруктураПользователя = СтруктураСообщения[From];
|
||||
СтруктураЧата = СтруктураСообщения[Chat];
|
||||
|
||||
СтруктураПараметровВыходная.Вставить("Вид" , "Запуск/Остановка");
|
||||
СтруктураПараметровВыходная.Вставить("Никнейм" , СтруктураПользователя[Username]);
|
||||
СтруктураПараметровВыходная.Вставить("IDПользователя" , СтруктураПользователя[Id_]);
|
||||
СтруктураПараметровВыходная.Вставить("IDСообщения" , "");
|
||||
СтруктураПараметровВыходная.Вставить("IDЧата" , СтруктураЧата[Id_]);
|
||||
СтруктураПараметровВыходная.Вставить("Сообщение" , СтруктураСообщения["new_chat_member"]["status"]);
|
||||
СтруктураПараметровВыходная.Вставить("Дата"
|
||||
, Дата(1970, 1, 1, 1, 0, 0) + СтруктураСообщения["date"]);
|
||||
СтруктураПараметровВыходная.Вставить("Вид", "Запуск/Остановка");
|
||||
СтруктураПараметровВыходная.Вставить("Никнейм", СтруктураПользователя[Username]);
|
||||
СтруктураПараметровВыходная.Вставить("IDПользователя", СтруктураПользователя[Id_]);
|
||||
СтруктураПараметровВыходная.Вставить("IDСообщения", "");
|
||||
СтруктураПараметровВыходная.Вставить("IDЧата", СтруктураЧата[Id_]);
|
||||
СтруктураПараметровВыходная.Вставить("Сообщение", СтруктураСообщения["new_chat_member"]["status"]);
|
||||
СтруктураПараметровВыходная.Вставить("Дата", Дата(1970, 1, 1, 1, 0, 0) + СтруктураСообщения["date"]);
|
||||
|
||||
СтруктураПараметровВыходная.Вставить("БотОтключен"
|
||||
, ?(СтруктураСообщения["new_chat_member"]["status"] = "kicked", Истина, Ложь));
|
||||
СтруктураПараметровВыходная.Вставить("БотОтключен", ?(СтруктураСообщения["new_chat_member"]["status"]
|
||||
= "kicked", Истина, Ложь));
|
||||
|
||||
ИначеЕсли СтруктураПараметровВходная.Свойство("callback_query") Тогда
|
||||
ИначеЕсли СтруктураПараметровВходная.Свойство("callback_query") Тогда
|
||||
|
||||
СтруктураСообщения = СтруктураПараметровВходная["callback_query"];
|
||||
СтруктураПользователя = СтруктураСообщения[From];
|
||||
СтруктураСообщения = СтруктураПараметровВходная["callback_query"];
|
||||
СтруктураПользователя = СтруктураСообщения[From];
|
||||
|
||||
СтруктураПараметровВыходная.Вставить("Вид" , "Кнопка под сообщением");
|
||||
СтруктураПараметровВыходная.Вставить("Никнейм" , СтруктураПользователя[Username]);
|
||||
СтруктураПараметровВыходная.Вставить("IDПользователя" , СтруктураПользователя[Id_]);
|
||||
СтруктураПараметровВыходная.Вставить("IDСообщения" , СтруктураСообщения[Message][MessageId]);
|
||||
СтруктураПараметровВыходная.Вставить("IDЧата" , СтруктураСообщения[Message][Chat][Id_]);
|
||||
СтруктураПараметровВыходная.Вставить("Сообщение" , СтруктураСообщения["data"]);
|
||||
СтруктураПараметровВыходная.Вставить("БотОтключен" , Ложь);
|
||||
СтруктураПараметровВыходная.Вставить("Дата"
|
||||
, Дата(1970, 1, 1, 1, 0, 0) + СтруктураСообщения[Message]["date"]);
|
||||
СтруктураПараметровВыходная.Вставить("Вид", "Кнопка под сообщением");
|
||||
СтруктураПараметровВыходная.Вставить("Никнейм", СтруктураПользователя[Username]);
|
||||
СтруктураПараметровВыходная.Вставить("IDПользователя", СтруктураПользователя[Id_]);
|
||||
СтруктураПараметровВыходная.Вставить("IDСообщения", СтруктураСообщения[Message][MessageId]);
|
||||
СтруктураПараметровВыходная.Вставить("IDЧата", СтруктураСообщения[Message][Chat][Id_]);
|
||||
СтруктураПараметровВыходная.Вставить("Сообщение", СтруктураСообщения["data"]);
|
||||
СтруктураПараметровВыходная.Вставить("БотОтключен", Ложь);
|
||||
СтруктураПараметровВыходная.Вставить("Дата", Дата(1970, 1, 1, 1, 0, 0) + СтруктураСообщения[Message]["date"]);
|
||||
|
||||
Иначе
|
||||
Иначе
|
||||
|
||||
СтруктураПараметровВыходная.Вставить("Вид" , "");
|
||||
СтруктураПараметровВыходная.Вставить("Никнейм" , "");
|
||||
СтруктураПараметровВыходная.Вставить("IDПользователя" , "");
|
||||
СтруктураПараметровВыходная.Вставить("IDСообщения" , "");
|
||||
СтруктураПараметровВыходная.Вставить("IDЧата" , "");
|
||||
СтруктураПараметровВыходная.Вставить("Сообщение" , "");
|
||||
СтруктураПараметровВыходная.Вставить("Дата" , ТекущаяДатаСеанса());
|
||||
СтруктураПараметровВыходная.Вставить("БотОтключен" , Ложь);
|
||||
СтруктураПараметровВыходная.Вставить("Вид", "");
|
||||
СтруктураПараметровВыходная.Вставить("Никнейм", "");
|
||||
СтруктураПараметровВыходная.Вставить("IDПользователя", "");
|
||||
СтруктураПараметровВыходная.Вставить("IDСообщения", "");
|
||||
СтруктураПараметровВыходная.Вставить("IDЧата", "");
|
||||
СтруктураПараметровВыходная.Вставить("Сообщение", "");
|
||||
СтруктураПараметровВыходная.Вставить("Дата", ТекущаяДатаСеанса());
|
||||
СтруктураПараметровВыходная.Вставить("БотОтключен", Ложь);
|
||||
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СтруктураПараметровВыходная;
|
||||
Возврат СтруктураПараметровВыходная;
|
||||
|
||||
// BSLLS:DuplicateStringLiteral-on
|
||||
КонецФункции
|
||||
@ -201,18 +197,18 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция ОтправитьТекстовоеСообщение(Знач Токен, Знач IDЧата, Знач Текст, Знач Клавиатура = "") Экспорт
|
||||
|
||||
OPI_Инструменты.ЗаменитьСпецСимволы(Текст);
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
OPI_Инструменты.ЗаменитьСпецСимволы(Текст);
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("text" , Текст);
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("reply_markup" , Клавиатура);
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("text", Текст);
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("reply_markup", Клавиатура);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/sendMessage", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/sendMessage", Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -229,7 +225,7 @@
|
||||
// Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram
|
||||
Функция ОтправитьКартинку(Знач Токен, Знач IDЧата, Знач Текст, Знач Картинка, Знач Клавиатура = "") Экспорт
|
||||
|
||||
Возврат ОтправитьФайл(Токен, IDЧата, Текст, Картинка, "photo", Клавиатура);
|
||||
Возврат ОтправитьФайл(Токен, IDЧата, Текст, Картинка, "photo", Клавиатура);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -246,7 +242,7 @@
|
||||
// Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram
|
||||
Функция ОтправитьВидео(Знач Токен, Знач IDЧата, Знач Текст, Знач Видео, Знач Клавиатура = "") Экспорт
|
||||
|
||||
Возврат ОтправитьФайл(Токен, IDЧата, Текст, Видео, "video", Клавиатура);
|
||||
Возврат ОтправитьФайл(Токен, IDЧата, Текст, Видео, "video", Клавиатура);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -263,7 +259,7 @@
|
||||
// Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram
|
||||
Функция ОтправитьАудио(Знач Токен, Знач IDЧата, Знач Текст, Знач Аудио, Знач Клавиатура = "") Экспорт
|
||||
|
||||
Возврат ОтправитьФайл(Токен, IDЧата, Текст, Аудио, "audio", Клавиатура);
|
||||
Возврат ОтправитьФайл(Токен, IDЧата, Текст, Аудио, "audio", Клавиатура);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -280,7 +276,7 @@
|
||||
// Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram
|
||||
Функция ОтправитьДокумент(Знач Токен, Знач IDЧата, Знач Текст, Знач Документ, Знач Клавиатура = "") Экспорт
|
||||
|
||||
Возврат ОтправитьФайл(Токен, IDЧата, Текст, Документ, "document", Клавиатура);
|
||||
Возврат ОтправитьФайл(Токен, IDЧата, Текст, Документ, "document", Клавиатура);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -297,7 +293,7 @@
|
||||
// Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram
|
||||
Функция ОтправитьГифку(Знач Токен, Знач IDЧата, Знач Текст, Знач Гифка, Знач Клавиатура = "") Экспорт
|
||||
|
||||
Возврат ОтправитьФайл(Токен, IDЧата, Текст, Гифка, "animation", Клавиатура);
|
||||
Возврат ОтправитьФайл(Токен, IDЧата, Текст, Гифка, "animation", Клавиатура);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -314,68 +310,62 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный, HTTPОтвет - Ответ сервера Telegram
|
||||
Функция ОтправитьМедиагруппу(Знач Токен
|
||||
, Знач IDЧата
|
||||
, Знач Текст
|
||||
, Знач СоответствиеФайлов
|
||||
, Знач Клавиатура = "") Экспорт
|
||||
Функция ОтправитьМедиагруппу(Знач Токен, Знач IDЧата, Знач Текст, Знач СоответствиеФайлов, Знач Клавиатура = "") Экспорт
|
||||
|
||||
// СоответствиеФайлов
|
||||
// Ключ - Файл, Значение - Тип
|
||||
// Типы: audio, document, photo, video
|
||||
// Нельзя замешивать разные типы!
|
||||
|
||||
OPI_Инструменты.ЗаменитьСпецсимволы(Текст);
|
||||
OPI_Инструменты.ЗаменитьСпецсимволы(Текст);
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
СтруктураФайлов = Новый Структура;
|
||||
Медиа = Новый Массив;
|
||||
Счетчик = 0;
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
СтруктураФайлов = Новый Структура;
|
||||
Медиа = Новый Массив;
|
||||
Счетчик = 0;
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("caption" , Текст);
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("reply_markup" , Клавиатура);
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("caption", Текст);
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("reply_markup", Клавиатура);
|
||||
|
||||
Для Каждого ТекущийФайл Из СоответствиеФайлов Цикл
|
||||
Для Каждого ТекущийФайл Из СоответствиеФайлов Цикл
|
||||
|
||||
Если Не ТипЗнч(ТекущийФайл.Ключ) = Тип("ДвоичныеДанные") Тогда
|
||||
ДД = Новый ДвоичныеДанные(ТекущийФайл.Ключ);
|
||||
ЭтотФайл = Новый Файл(ТекущийФайл.Ключ);
|
||||
ИмяМедиа = ТекущийФайл.Значение
|
||||
+ Строка(Счетчик)
|
||||
+ ?(ТекущийФайл.Значение = "document", ЭтотФайл.Расширение, "");
|
||||
ПолноеИмяМедиа = СтрЗаменить(ИмяМедиа, ".", "___");
|
||||
Иначе
|
||||
ДД = ТекущийФайл.Ключ;
|
||||
ИмяМедиа = ТекущийФайл.Значение + Строка(Счетчик);
|
||||
ПолноеИмяМедиа = ИмяМедиа;
|
||||
КонецЕсли;
|
||||
Если Не ТипЗнч(ТекущийФайл.Ключ) = Тип("ДвоичныеДанные") Тогда
|
||||
ДД = Новый ДвоичныеДанные(ТекущийФайл.Ключ);
|
||||
ЭтотФайл = Новый Файл(ТекущийФайл.Ключ);
|
||||
ИмяМедиа = ТекущийФайл.Значение + Строка(Счетчик) + ?(ТекущийФайл.Значение = "document",
|
||||
ЭтотФайл.Расширение, "");
|
||||
ПолноеИмяМедиа = СтрЗаменить(ИмяМедиа, ".", "___");
|
||||
Иначе
|
||||
ДД = ТекущийФайл.Ключ;
|
||||
ИмяМедиа = ТекущийФайл.Значение + Строка(Счетчик);
|
||||
ПолноеИмяМедиа = ИмяМедиа;
|
||||
КонецЕсли;
|
||||
|
||||
СтруктураФайлов.Вставить(ПолноеИмяМедиа , ДД);
|
||||
СтруктураФайлов.Вставить(ПолноеИмяМедиа, ДД);
|
||||
|
||||
СтруктураМедиа = Новый Структура;
|
||||
СтруктураМедиа.Вставить("type" , ТекущийФайл.Значение);
|
||||
СтруктураМедиа.Вставить("media", "attach://" + ИмяМедиа);
|
||||
СтруктураМедиа = Новый Структура;
|
||||
СтруктураМедиа.Вставить("type", ТекущийФайл.Значение);
|
||||
СтруктураМедиа.Вставить("media", "attach://" + ИмяМедиа);
|
||||
|
||||
Если Счетчик = 0 Тогда
|
||||
СтруктураМедиа.Вставить("caption", Текст);
|
||||
КонецЕсли;
|
||||
Если Счетчик = 0 Тогда
|
||||
СтруктураМедиа.Вставить("caption", Текст);
|
||||
КонецЕсли;
|
||||
|
||||
Медиа.Добавить(СтруктураМедиа);
|
||||
Медиа.Добавить(СтруктураМедиа);
|
||||
|
||||
Счетчик = Счетчик + 1;
|
||||
Счетчик = Счетчик + 1;
|
||||
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
Параметры_.Вставить("media", OPI_Инструменты.JSONСтрокой(Медиа));
|
||||
Параметры_.Вставить("media", OPI_Инструменты.JSONСтрокой(Медиа));
|
||||
|
||||
Ответ = OPI_Инструменты.PostMultipart("api.telegram.org/bot"
|
||||
+ Токен
|
||||
+ "/sendMediaGroup", Параметры_, СтруктураФайлов, "mixed");
|
||||
Ответ = OPI_Инструменты.PostMultipart("api.telegram.org/bot" + Токен + "/sendMediaGroup", Параметры_,
|
||||
СтруктураФайлов, "mixed");
|
||||
|
||||
Возврат Ответ;
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -392,18 +382,18 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция ОтправитьМестоположение(Знач Токен, Знач IDЧата, Знач Широта, Знач Долгота, Знач Клавиатура = "") Экспорт
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("latitude" , OPI_Инструменты.ЧислоВСтроку(Широта));
|
||||
Параметры_.Вставить("longitude" , OPI_Инструменты.ЧислоВСтроку(Долгота));
|
||||
Параметры_.Вставить("reply_markup" , Клавиатура);
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("latitude", OPI_Инструменты.ЧислоВСтроку(Широта));
|
||||
Параметры_.Вставить("longitude", OPI_Инструменты.ЧислоВСтроку(Долгота));
|
||||
Параметры_.Вставить("reply_markup", Клавиатура);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/sendLocation", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/sendLocation", Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -421,19 +411,19 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция ОтправитьКонтакт(Знач Токен, Знач IDЧата, Знач Имя, Знач Фамилия, Знач Телефон, Знач Клавиатура = "") Экспорт
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("first_name" , Имя);
|
||||
Параметры_.Вставить("last_name" , Фамилия);
|
||||
Параметры_.Вставить("phone_number" , Строка(Телефон));
|
||||
Параметры_.Вставить("reply_markup" , Клавиатура);
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("first_name", Имя);
|
||||
Параметры_.Вставить("last_name", Фамилия);
|
||||
Параметры_.Вставить("phone_number", Строка(Телефон));
|
||||
Параметры_.Вставить("reply_markup", Клавиатура);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/sendContact", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/sendContact", Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -450,22 +440,22 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция ОтправитьОпрос(Знач Токен, Знач IDЧата, Знач Вопрос, Знач МассивОтветов, Знач Анонимный = Истина) Экспорт
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
Ответы = OPI_Инструменты.JSONСтрокой(МассивОтветов);
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
Ответы = OPI_Инструменты.JSONСтрокой(МассивОтветов);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("question" , Вопрос);
|
||||
Параметры_.Вставить("options" , Ответы);
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("question", Вопрос);
|
||||
Параметры_.Вставить("options", Ответы);
|
||||
|
||||
Если Не Анонимный Тогда
|
||||
Параметры_.Вставить("is_anonymous", Ложь);
|
||||
КонецЕсли;
|
||||
Если Не Анонимный Тогда
|
||||
Параметры_.Вставить("is_anonymous", Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/sendPoll", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/sendPoll", Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -481,18 +471,18 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция ПереслатьСообщение(Знач Токен, Знач IDОригинала, Знач ОткудаID, Знач КудаID) Экспорт
|
||||
|
||||
IDОригинала = OPI_Инструменты.ЧислоВСтроку(IDОригинала);
|
||||
ОткудаID = OPI_Инструменты.ЧислоВСтроку(ОткудаID);
|
||||
КудаID = OPI_Инструменты.ЧислоВСтроку(КудаID);
|
||||
IDОригинала = OPI_Инструменты.ЧислоВСтроку(IDОригинала);
|
||||
ОткудаID = OPI_Инструменты.ЧислоВСтроку(ОткудаID);
|
||||
КудаID = OPI_Инструменты.ЧислоВСтроку(КудаID);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("chat_id" , КудаID);
|
||||
Параметры_.Вставить("from_chat_id" , ОткудаID);
|
||||
Параметры_.Вставить("message_id" , IDОригинала);
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("chat_id", КудаID);
|
||||
Параметры_.Вставить("from_chat_id", ОткудаID);
|
||||
Параметры_.Вставить("message_id", IDОригинала);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/forwardMessage", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/forwardMessage", Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -511,17 +501,17 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция Бан(Знач Токен, Знач IDЧата, Знач IDПользователя) Экспорт
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
IDПользователя = OPI_Инструменты.ЧислоВСтроку(IDПользователя);
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
IDПользователя = OPI_Инструменты.ЧислоВСтроку(IDПользователя);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("user_id" , IDПользователя);
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("user_id", IDПользователя);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/banChatMember", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/banChatMember", Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -536,18 +526,18 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция Разбан(Знач Токен, Знач IDЧата, Знач IDПользователя) Экспорт
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
IDПользователя = OPI_Инструменты.ЧислоВСтроку(IDПользователя);
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
IDПользователя = OPI_Инструменты.ЧислоВСтроку(IDПользователя);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("user_id" , IDПользователя);
|
||||
Параметры_.Вставить("only_if_banned" , Истина);
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("user_id", IDПользователя);
|
||||
Параметры_.Вставить("only_if_banned", Истина);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/unbanChatMember", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/unbanChatMember", Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -562,28 +552,25 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция СоздатьСсылкуПриглашение(Знач Токен
|
||||
, Знач IDЧата
|
||||
, Знач Заголовок = ""
|
||||
, Знач ДатаИстечения = ""
|
||||
, Знач ЛимитПользователей = 0) Экспорт
|
||||
Функция СоздатьСсылкуПриглашение(Знач Токен, Знач IDЧата, Знач Заголовок = "", Знач ДатаИстечения = "",
|
||||
Знач ЛимитПользователей = 0) Экспорт
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("name" , Заголовок);
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("name", Заголовок);
|
||||
|
||||
Если ЗначениеЗаполнено(ДатаИстечения) Тогда
|
||||
Параметры_.Вставить("expire_date", Формат(ДатаИстечения - Дата(1970, 1, 1, 1, 0, 0), "ЧГ=0"));
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(ДатаИстечения) Тогда
|
||||
Параметры_.Вставить("expire_date", Формат(ДатаИстечения - Дата(1970, 1, 1, 1, 0, 0), "ЧГ=0"));
|
||||
КонецЕсли;
|
||||
|
||||
Параметры_.Вставить("member_limit", ЛимитПользователей);
|
||||
Параметры_.Вставить("member_limit", ЛимитПользователей);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/createChatInviteLink", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/createChatInviteLink", Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -598,18 +585,18 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция ЗакрепитьСообщение(Знач Токен, Знач IDЧата, Знач IDСообщения) Экспорт
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
IDСообщения = OPI_Инструменты.ЧислоВСтроку(IDСообщения);
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
IDСообщения = OPI_Инструменты.ЧислоВСтроку(IDСообщения);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("message_id" , IDСообщения);
|
||||
Параметры_.Вставить("disable_notification" , Истина);
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("message_id", IDСообщения);
|
||||
Параметры_.Вставить("disable_notification", Истина);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/pinChatMessage", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/pinChatMessage", Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -624,17 +611,17 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция ОткрепитьСообщение(Знач Токен, Знач IDЧата, Знач IDСообщения) Экспорт
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
IDСообщения = OPI_Инструменты.ЧислоВСтроку(IDСообщения);
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
IDСообщения = OPI_Инструменты.ЧислоВСтроку(IDСообщения);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("message_id" , IDСообщения);
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("message_id", IDСообщения);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/unpinChatMessage", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/unpinChatMessage", Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -648,15 +635,15 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Получить число участников
|
||||
Функция ПолучитьЧислоУчастников(Знач Токен, Знач IDЧата) Экспорт
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/getChatMemberCount", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/getChatMemberCount", Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -674,56 +661,55 @@
|
||||
// Соответствие из Строка - Обработанные данные с признаком достоверности
|
||||
Функция ОбработатьДанныеTMA(Знач СтрокаДанных, Знач Токен) Экспорт
|
||||
|
||||
СтрокаДанных = РаскодироватьСтроку(СтрокаДанных, СпособКодированияСтроки.КодировкаURL);
|
||||
СтруктураДанных = OPI_Инструменты.ПараметрыЗапросаВСоответствие(СтрокаДанных);
|
||||
Ключ = "WebAppData";
|
||||
Хэш = "";
|
||||
СтрокаДанных = РаскодироватьСтроку(СтрокаДанных, СпособКодированияСтроки.КодировкаURL);
|
||||
СтруктураДанных = OPI_Инструменты.ПараметрыЗапросаВСоответствие(СтрокаДанных);
|
||||
Ключ = "WebAppData";
|
||||
Хэш = "";
|
||||
|
||||
Результат = OPI_Криптография.HMACSHA256(ПолучитьДвоичныеДанныеИзСтроки(Ключ)
|
||||
, ПолучитьДвоичныеДанныеИзСтроки(Токен));
|
||||
Результат = OPI_Криптография.HMACSHA256(ПолучитьДвоичныеДанныеИзСтроки(Ключ), ПолучитьДвоичныеДанныеИзСтроки(Токен));
|
||||
|
||||
ТЗнач = Новый ТаблицаЗначений;
|
||||
ТЗнач.Колонки.Добавить("Ключ");
|
||||
ТЗнач.Колонки.Добавить("Значение");
|
||||
ТЗнач = Новый ТаблицаЗначений;
|
||||
ТЗнач.Колонки.Добавить("Ключ");
|
||||
ТЗнач.Колонки.Добавить("Значение");
|
||||
|
||||
Для Каждого Данные Из СтруктураДанных Цикл
|
||||
Для Каждого Данные Из СтруктураДанных Цикл
|
||||
|
||||
НоваяСтрока = ТЗнач.Добавить();
|
||||
НоваяСтрока.Ключ = Данные.Ключ;
|
||||
НоваяСтрока.Значение = Данные.Значение;
|
||||
НоваяСтрока = ТЗнач.Добавить();
|
||||
НоваяСтрока.Ключ = Данные.Ключ;
|
||||
НоваяСтрока.Значение = Данные.Значение;
|
||||
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
ТЗнач.Сортировать("Ключ");
|
||||
ТЗнач.Сортировать("Ключ");
|
||||
|
||||
СоответствиеВозврата = Новый Соответствие;
|
||||
DCS = "";
|
||||
СоответствиеВозврата = Новый Соответствие;
|
||||
DCS = "";
|
||||
|
||||
Для Каждого СтрокаТЗ Из ТЗнач Цикл
|
||||
Для Каждого СтрокаТЗ Из ТЗнач Цикл
|
||||
|
||||
Если СтрокаТЗ.Ключ <> "hash" Тогда
|
||||
DCS = DCS + СтрокаТЗ.Ключ + "=" + СтрокаТЗ.Значение + Символы.ПС;
|
||||
СоответствиеВозврата.Вставить(СтрокаТЗ.Ключ, СтрокаТЗ.Значение);
|
||||
Иначе
|
||||
Хэш = СтрокаТЗ.Значение;
|
||||
КонецЕсли;
|
||||
Если СтрокаТЗ.Ключ <> "hash" Тогда
|
||||
DCS = DCS + СтрокаТЗ.Ключ + "=" + СтрокаТЗ.Значение + Символы.ПС;
|
||||
СоответствиеВозврата.Вставить(СтрокаТЗ.Ключ, СтрокаТЗ.Значение);
|
||||
Иначе
|
||||
Хэш = СтрокаТЗ.Значение;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
DCS = Лев(DCS, СтрДлина(DCS) - 1);
|
||||
Подпись = OPI_Криптография.HMACSHA256(Результат, ПолучитьДвоичныеДанныеИзСтроки(DCS));
|
||||
DCS = Лев(DCS, СтрДлина(DCS) - 1);
|
||||
Подпись = OPI_Криптография.HMACSHA256(Результат, ПолучитьДвоичныеДанныеИзСтроки(DCS));
|
||||
|
||||
Финал = ПолучитьHexСтрокуИзДвоичныхДанных(Подпись);
|
||||
Финал = ПолучитьHexСтрокуИзДвоичныхДанных(Подпись);
|
||||
|
||||
Если Финал = вРег(Хэш) Тогда
|
||||
Ответ = Истина;
|
||||
Иначе
|
||||
Ответ = Ложь;
|
||||
КонецЕсли;
|
||||
Если Финал = вРег(Хэш) Тогда
|
||||
Ответ = Истина;
|
||||
Иначе
|
||||
Ответ = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
СоответствиеВозврата.Вставить("passed", Ответ);
|
||||
СоответствиеВозврата.Вставить("passed", Ответ);
|
||||
|
||||
Возврат СоответствиеВозврата;
|
||||
Возврат СоответствиеВозврата;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -740,47 +726,45 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - JSON клавиатуры
|
||||
Функция СформироватьКлавиатуруПоМассивуКнопок(Знач МассивКнопок
|
||||
, Знач ПодСообщением = Ложь
|
||||
, Знач ОднаПодОдной = Истина) Экспорт
|
||||
Функция СформироватьКлавиатуруПоМассивуКнопок(Знач МассивКнопок, Знач ПодСообщением = Ложь, Знач ОднаПодОдной = Истина) Экспорт
|
||||
|
||||
Если ОднаПодОдной Тогда
|
||||
Если ОднаПодОдной Тогда
|
||||
|
||||
Строки = Новый Массив;
|
||||
Строки = Новый Массив;
|
||||
|
||||
Для Каждого Кнопка Из МассивКнопок Цикл
|
||||
Кнопки = Новый Массив;
|
||||
Кнопка = OPI_Инструменты.ЧислоВСтроку(Кнопка);
|
||||
Кнопки.Добавить(Новый Структура("text,callback_data", Кнопка, Кнопка));
|
||||
Строки.Добавить(Кнопки);
|
||||
КонецЦикла;
|
||||
Для Каждого Кнопка Из МассивКнопок Цикл
|
||||
Кнопки = Новый Массив;
|
||||
Кнопка = OPI_Инструменты.ЧислоВСтроку(Кнопка);
|
||||
Кнопки.Добавить(Новый Структура("text,callback_data", Кнопка, Кнопка));
|
||||
Строки.Добавить(Кнопки);
|
||||
КонецЦикла;
|
||||
|
||||
Иначе
|
||||
Иначе
|
||||
|
||||
Строки = Новый Массив;
|
||||
Кнопки = Новый Массив;
|
||||
Строки = Новый Массив;
|
||||
Кнопки = Новый Массив;
|
||||
|
||||
Для Каждого Кнопка Из МассивКнопок Цикл
|
||||
Кнопка = OPI_Инструменты.ЧислоВСтроку(Кнопка);
|
||||
Кнопки.Добавить(Новый Структура("text,callback_data", Кнопка, Кнопка));
|
||||
КонецЦикла;
|
||||
Для Каждого Кнопка Из МассивКнопок Цикл
|
||||
Кнопка = OPI_Инструменты.ЧислоВСтроку(Кнопка);
|
||||
Кнопки.Добавить(Новый Структура("text,callback_data", Кнопка, Кнопка));
|
||||
КонецЦикла;
|
||||
|
||||
Строки.Добавить(Кнопки);
|
||||
КонецЕсли;
|
||||
Строки.Добавить(Кнопки);
|
||||
КонецЕсли;
|
||||
|
||||
Если ПодСообщением Тогда
|
||||
СтруктураПараметра = Новый Структура("inline_keyboard,rows", Строки, 1);
|
||||
Иначе
|
||||
СтруктураПараметра = Новый Структура("keyboard,resize_keyboard", Строки, Истина);
|
||||
КонецЕсли;
|
||||
Если ПодСообщением Тогда
|
||||
СтруктураПараметра = Новый Структура("inline_keyboard,rows", Строки, 1);
|
||||
Иначе
|
||||
СтруктураПараметра = Новый Структура("keyboard,resize_keyboard", Строки, Истина);
|
||||
КонецЕсли;
|
||||
|
||||
ЗаписьJSON = Новый ЗаписьJSON;
|
||||
ПЗJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, , , ЭкранированиеСимволовJSON.СимволыВнеASCII);
|
||||
ЗаписьJSON.УстановитьСтроку(ПЗJSON);
|
||||
ЗаписьJSON = Новый ЗаписьJSON;
|
||||
ПЗJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, , , ЭкранированиеСимволовJSON.СимволыВнеASCII);
|
||||
ЗаписьJSON.УстановитьСтроку(ПЗJSON);
|
||||
|
||||
ЗаписатьJSON(ЗаписьJSON, СтруктураПараметра);
|
||||
ЗаписатьJSON(ЗаписьJSON, СтруктураПараметра);
|
||||
|
||||
Возврат ЗаписьJSON.Закрыть();
|
||||
Возврат ЗаписьJSON.Закрыть();
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -794,46 +778,44 @@
|
||||
|
||||
Расширение = "";
|
||||
|
||||
Если Вид = "photo" Тогда
|
||||
Метод = "/sendPhoto";
|
||||
ИначеЕсли Вид = "video" Тогда
|
||||
Метод = "/sendVideo";
|
||||
ИначеЕсли Вид = "audio" Тогда
|
||||
Метод = "/sendAudio";
|
||||
ИначеЕсли Вид = "document" Тогда
|
||||
Метод = "/sendDocument";
|
||||
ИначеЕсли Вид = "animation" Тогда
|
||||
Метод = "/sendAnimation";
|
||||
Если Вид = "photo" Тогда
|
||||
Метод = "/sendPhoto";
|
||||
ИначеЕсли Вид = "video" Тогда
|
||||
Метод = "/sendVideo";
|
||||
ИначеЕсли Вид = "audio" Тогда
|
||||
Метод = "/sendAudio";
|
||||
ИначеЕсли Вид = "document" Тогда
|
||||
Метод = "/sendDocument";
|
||||
ИначеЕсли Вид = "animation" Тогда
|
||||
Метод = "/sendAnimation";
|
||||
Расширение = ".gif";
|
||||
Иначе
|
||||
Возврат "";
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Возврат "";
|
||||
КонецЕсли;
|
||||
|
||||
OPI_Инструменты.ЗаменитьСпецсимволы(Текст);
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
OPI_Инструменты.ЗаменитьСпецсимволы(Текст);
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
|
||||
Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
||||
ТекущийФайл = Новый Файл(Файл);
|
||||
Расширение = ?(Вид = "document" Или Вид = "animation", ТекущийФайл.Расширение, "");
|
||||
Файл = Новый ДвоичныеДанные(Файл);
|
||||
КонецЕсли;
|
||||
Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
||||
ТекущийФайл = Новый Файл(Файл);
|
||||
Расширение = ?(Вид = "document" Или Вид = "animation", ТекущийФайл.Расширение, "");
|
||||
Файл = Новый ДвоичныеДанные(Файл);
|
||||
КонецЕсли;
|
||||
|
||||
Расширение = СтрЗаменить(Расширение, ".", "___");
|
||||
Расширение = СтрЗаменить(Расширение, ".", "___");
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("caption" , Текст);
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("reply_markup" , Клавиатура);
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("caption", Текст);
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("reply_markup", Клавиатура);
|
||||
|
||||
СтруктураФайлов = Новый Структура;
|
||||
СтруктураФайлов.Вставить(Вид + Расширение, Файл);
|
||||
СтруктураФайлов = Новый Структура;
|
||||
СтруктураФайлов.Вставить(Вид + Расширение, Файл);
|
||||
|
||||
Ответ = OPI_Инструменты.PostMultipart("api.telegram.org/bot"
|
||||
+ Токен
|
||||
+ Метод, Параметры_, СтруктураФайлов, "mixed");
|
||||
Ответ = OPI_Инструменты.PostMultipart("api.telegram.org/bot" + Токен + Метод, Параметры_, СтруктураФайлов, "mixed");
|
||||
|
||||
Возврат Ответ;
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -16,7 +16,12 @@
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьВидео" , "Отправить видео")
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьАудио" , "Отправить аудио")
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьДокумент" , "Отправить документ")
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьГифку" , "Отправить гифку");
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьГифку" , "Отправить гифку")
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьМедиагруппу" , "Отправить медиагруппу")
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьМестоположение" , "Отправить местоположение")
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьКонтакт" , "Отправить контакт")
|
||||
.ДобавитьСерверныйТест("Телеграм_ОтправитьОпрос" , "Отправить опрос")
|
||||
.ДобавитьСерверныйТест("Телеграм_ПереслатьСообщение" , "Переслать сообщение");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -94,6 +99,9 @@
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDКанала, Текст));
|
||||
|
||||
IDСообщения = OPI_Инструменты.ЧислоВСтроку(МассивРезультатов[1]["result"]["message_id"]);
|
||||
ЗаписатьПараметр("Телеграм_IDСообщенияКанала", IDСообщения);
|
||||
|
||||
Для Каждого Результат Из МассивРезультатов Цикл
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
@ -143,19 +151,18 @@
|
||||
IDЧата = ПолучитьПараметр("Телеграм_Чат");
|
||||
IDКанала = ПолучитьПараметр("Телеграм_Канал");
|
||||
Текст = "Сообщение из автоматического теста";
|
||||
Картинка = ПолучитьДвоичные("Видео");
|
||||
Видео = ПолучитьДвоичные("Видео");
|
||||
ИВФ = ПолучитьИмяВременногоФайла("mp4");
|
||||
Картинка.Записать(ИВФ);
|
||||
Видео.Записать(ИВФ);
|
||||
|
||||
МассивРезультатов = Новый Массив;
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDЧата , Текст, Картинка));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDКанала, Текст, Картинка));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDЧата , Текст, Видео));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDКанала, Текст, Видео));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDЧата , Текст, ИВФ));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьВидео(Токен, IDКанала, Текст, ИВФ));
|
||||
|
||||
Для Каждого Результат Из МассивРезультатов Цикл
|
||||
|
||||
//@skip-warning
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
@ -263,6 +270,143 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Телеграм_ОтправитьМедиагруппу() Экспорт
|
||||
|
||||
Токен = ПолучитьПараметр("Телеграм_Токен");
|
||||
IDЧата = ПолучитьПараметр("Телеграм_Чат");
|
||||
IDКанала = ПолучитьПараметр("Телеграм_Канал");
|
||||
Текст = "Сообщение из автоматического теста";
|
||||
|
||||
Картинка = ПолучитьДвоичные("Картинка");
|
||||
ИВФ_Картинка = ПолучитьИмяВременногоФайла("png");
|
||||
Картинка.Записать(ИВФ_Картинка);
|
||||
|
||||
Видео = ПолучитьДвоичные("Видео");
|
||||
ИВФ_Видео = ПолучитьИмяВременногоФайла("mp4");
|
||||
Видео.Записать(ИВФ_Видео);
|
||||
|
||||
МедиагруппаЧат = Новый Соответствие;
|
||||
МедиагруппаЧат.Вставить(Картинка , "photo");
|
||||
МедиагруппаЧат.Вставить(ИВФ_Видео, "video");
|
||||
|
||||
МедиагруппаКанал = Новый Соответствие;
|
||||
МедиагруппаКанал.Вставить(ИВФ_Картинка, "photo");
|
||||
МедиагруппаКанал.Вставить(Видео , "video");
|
||||
|
||||
МассивРезультатов = Новый Массив;
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьМедиагруппу(Токен, IDЧата, Текст, МедиагруппаЧат));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьМедиагруппу(Токен, IDКанала, Текст, МедиагруппаКанал));
|
||||
|
||||
Для Каждого Результат Из МассивРезультатов Цикл
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
.Свойство("ok").Равно(Истина)
|
||||
.Свойство("result").ИмеетТип("Массив").ИмеетДлину(2)
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
УдалитьФайлы(ИВФ_Картинка);
|
||||
УдалитьФайлы(ИВФ_Видео);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Телеграм_ОтправитьМестоположение() Экспорт
|
||||
|
||||
Токен = ПолучитьПараметр("Телеграм_Токен");
|
||||
IDЧата = ПолучитьПараметр("Телеграм_Чат");
|
||||
IDКанала = ПолучитьПараметр("Телеграм_Канал");
|
||||
Ширина = "48.87373649724122";
|
||||
Долгота = "48.87373649724122";
|
||||
|
||||
МассивРезультатов = Новый Массив;
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьМестоположение(Токен, IDЧата , Ширина, Долгота));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьМестоположение(Токен, IDКанала, Ширина, Долгота));
|
||||
|
||||
Для Каждого Результат Из МассивРезультатов Цикл
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
.Свойство("ok").Равно(Истина)
|
||||
.Свойство("result.location").ИмеетТип("Соответствие").Заполнено();
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Телеграм_ОтправитьКонтакт() Экспорт
|
||||
|
||||
Токен = ПолучитьПараметр("Телеграм_Токен");
|
||||
IDЧата = ПолучитьПараметр("Телеграм_Чат");
|
||||
IDКанала = ПолучитьПараметр("Телеграм_Канал");
|
||||
Имя = "Петр";
|
||||
Фамилия = "Петров";
|
||||
Телефон = "88005553535";
|
||||
|
||||
МассивРезультатов = Новый Массив;
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьКонтакт(Токен, IDЧата , Имя, Фамилия, Телефон));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьКонтакт(Токен, IDКанала, Имя, Фамилия, Телефон));
|
||||
|
||||
Для Каждого Результат Из МассивРезультатов Цикл
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
.Свойство("ok").Равно(Истина)
|
||||
.Свойство("result.contact").ИмеетТип("Соответствие").Заполнено()
|
||||
.Свойство("result.contact.first_name").Равно(Имя);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Телеграм_ОтправитьОпрос() Экспорт
|
||||
|
||||
Токен = ПолучитьПараметр("Телеграм_Токен");
|
||||
IDЧата = ПолучитьПараметр("Телеграм_Чат");
|
||||
IDКанала = ПолучитьПараметр("Телеграм_Канал");
|
||||
|
||||
Вопрос = "Какой ваш любимый цвет?";
|
||||
|
||||
МассивОтветов = Новый Массив;
|
||||
МассивОтветов.Добавить("Красный");
|
||||
МассивОтветов.Добавить("Желтый");
|
||||
МассивОтветов.Добавить("Зеленый");
|
||||
|
||||
МассивРезультатов = Новый Массив;
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьОпрос(Токен, IDЧата , Вопрос, МассивОтветов, Ложь));
|
||||
МассивРезультатов.Добавить(OPI_Telegram.ОтправитьОпрос(Токен, IDКанала, Вопрос, МассивОтветов, Истина));
|
||||
|
||||
Для Каждого Результат Из МассивРезультатов Цикл
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
.Свойство("ok").Равно(Истина)
|
||||
.Свойство("result.poll").ИмеетТип("Соответствие").Заполнено()
|
||||
.Свойство("result.poll.question").Равно(Вопрос);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Телеграм_ПереслатьСообщение() Экспорт
|
||||
|
||||
Токен = ПолучитьПараметр("Телеграм_Токен");
|
||||
IDЧата = ПолучитьПараметр("Телеграм_Чат");
|
||||
IDКанала = ПолучитьПараметр("Телеграм_Канал");
|
||||
IDСообщения = ПолучитьПараметр("Телеграм_IDСообщенияКанала");
|
||||
|
||||
ЮТест.ОжидаетЧто(OPI_Telegram.ПереслатьСообщение(Токен, IDСообщения, IDКанала, IDЧата))
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
.Свойство("ok").Равно(Истина)
|
||||
.Свойство("result.forward_origin.message_id").Равно(Число(IDСообщения));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@ -308,7 +452,13 @@
|
||||
ИмяРеквизита = "Значение";
|
||||
|
||||
ЭлементСпр = Справочники[ИмяСправочника].НайтиПоНаименованию(Параметр);
|
||||
ОбъектСпр = ЭлементСпр.ПолучитьОбъект();
|
||||
|
||||
Если ЗначениеЗаполнено(ЭлементСпр) Тогда
|
||||
ОбъектСпр = ЭлементСпр.ПолучитьОбъект();
|
||||
Иначе
|
||||
ОбъектСпр = Справочники[ИмяСправочника].СоздатьЭлемент();
|
||||
ОбъектСпр.Наименование = Параметр;
|
||||
КонецЕсли;
|
||||
|
||||
ОбъектСпр[ИмяРеквизита] = Значение;
|
||||
ОбъектСпр.Записать();
|
||||
|
Loading…
x
Reference in New Issue
Block a user