mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-01-18 05:18:06 +02:00
Деффекты SC и форматирование
This commit is contained in:
parent
b1cf0ee23a
commit
7d6bcaa8b2
@ -1,26 +1,26 @@
|
|||||||
//MIT License
|
// MIT License
|
||||||
|
|
||||||
//Copyright (c) 2023 Anton Tsitavets
|
// Copyright (c) 2023 Anton Tsitavets
|
||||||
|
|
||||||
//Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
//of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
//in the Software without restriction, including without limitation the rights
|
// in the Software without restriction, including without limitation the rights
|
||||||
//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
//copies of the Software, and to permit persons to whom the Software is
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
//furnished to do so, subject to the following conditions:
|
// furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
//The above copyright notice and this permission notice shall be included in all
|
// The above copyright notice and this permission notice shall be included in all
|
||||||
//copies or substantial portions of the Software.
|
// copies or substantial portions of the Software.
|
||||||
|
|
||||||
//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
//SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
//https://github.com/Bayselonarrend/OpenIntegrations
|
// https://github.com/Bayselonarrend/OpenIntegrations
|
||||||
|
|
||||||
#Область ПрограммныйИнтерфейс
|
#Область ПрограммныйИнтерфейс
|
||||||
|
|
||||||
@ -38,7 +38,7 @@
|
|||||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/getMe");
|
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/getMe");
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
Конецфункции
|
КонецФункции
|
||||||
|
|
||||||
// Получить обновления.
|
// Получить обновления.
|
||||||
//
|
//
|
||||||
@ -63,11 +63,11 @@
|
|||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||||
Функция УстановитьWebhook(Знач Токен, Знач URL) Экспорт
|
Функция УстановитьWebhook(Знач Токен, Знач URL) Экспорт
|
||||||
|
|
||||||
Параметры_ = Новый Структура;
|
Параметры_ = Новый Структура;
|
||||||
Параметры_.Вставить("url", URL);
|
Параметры_.Вставить("url", URL);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/setWebHook", Параметры_);
|
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/setWebHook", Параметры_);
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -90,82 +90,85 @@
|
|||||||
Функция ОбработатьДанные(Знач Запрос) Экспорт
|
Функция ОбработатьДанные(Знач Запрос) Экспорт
|
||||||
// BSLLS:DuplicateStringLiteral-off
|
// BSLLS:DuplicateStringLiteral-off
|
||||||
|
|
||||||
Message = "message";
|
Message = "message";
|
||||||
From = "from";
|
From = "from";
|
||||||
Chat = "chat";
|
Chat = "chat";
|
||||||
Id_ = "id";
|
Id_ = "id";
|
||||||
Username = "username";
|
Username = "username";
|
||||||
MessageId = "message_id";
|
MessageId = "message_id";
|
||||||
|
|
||||||
ЧтениеJSON = Новый ЧтениеJSON;
|
ЧтениеJSON = Новый ЧтениеJSON;
|
||||||
ЧтениеJSON.УстановитьСтроку(Запрос.ПолучитьТелоКакСтроку());
|
ЧтениеJSON.УстановитьСтроку(Запрос.ПолучитьТелоКакСтроку());
|
||||||
|
|
||||||
СтруктураПараметровВходная = ПрочитатьJSON(ЧтениеJSON);
|
СтруктураПараметровВходная = ПрочитатьJSON(ЧтениеJSON);
|
||||||
СтруктураПараметровВыходная = Новый Структура;
|
СтруктураПараметровВыходная = Новый Структура;
|
||||||
|
|
||||||
Если СтруктураПараметровВходная.Свойство(Message) Тогда
|
Если СтруктураПараметровВходная.Свойство(Message) Тогда
|
||||||
|
|
||||||
СтруктураСообщения = СтруктураПараметровВходная[Message];
|
СтруктураСообщения = СтруктураПараметровВходная[Message];
|
||||||
СтруктураПользователя = СтруктураСообщения[From];
|
СтруктураПользователя = СтруктураСообщения[From];
|
||||||
СтруктураЧата = СтруктураСообщения[Chat];
|
СтруктураЧата = СтруктураСообщения[Chat];
|
||||||
|
|
||||||
СтруктураПараметровВыходная.Вставить("Вид" , "Сообщение");
|
СтруктураПараметровВыходная.Вставить("Вид" , "Сообщение");
|
||||||
СтруктураПараметровВыходная.Вставить("Никнейм" , СтруктураПользователя[Username]);
|
СтруктураПараметровВыходная.Вставить("Никнейм" , СтруктураПользователя[Username]);
|
||||||
СтруктураПараметровВыходная.Вставить("IDПользователя" , СтруктураПользователя[Id_]);
|
СтруктураПараметровВыходная.Вставить("IDПользователя" , СтруктураПользователя[Id_]);
|
||||||
СтруктураПараметровВыходная.Вставить("IDСообщения" , СтруктураСообщения[MessageId]);
|
СтруктураПараметровВыходная.Вставить("IDСообщения" , СтруктураСообщения[MessageId]);
|
||||||
СтруктураПараметровВыходная.Вставить("IDЧата" , СтруктураЧата[Id_]);
|
СтруктураПараметровВыходная.Вставить("IDЧата" , СтруктураЧата[Id_]);
|
||||||
СтруктураПараметровВыходная.Вставить("Сообщение" , СтруктураСообщения["text"]);
|
СтруктураПараметровВыходная.Вставить("Сообщение" , СтруктураСообщения["text"]);
|
||||||
СтруктураПараметровВыходная.Вставить("Дата" , Дата(1970,1,1,1,0,0) + СтруктураСообщения["date"]);
|
СтруктураПараметровВыходная.Вставить("Дата"
|
||||||
СтруктураПараметровВыходная.Вставить("БотОтключен" , Ложь);
|
, Дата(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Сообщения" , "");
|
СтруктураПараметровВыходная.Вставить("Никнейм" , СтруктураПользователя[Username]);
|
||||||
СтруктураПараметровВыходная.Вставить("IDЧата" , СтруктураЧата[Id_]);
|
СтруктураПараметровВыходная.Вставить("IDПользователя" , СтруктураПользователя[Id_]);
|
||||||
СтруктураПараметровВыходная.Вставить("Сообщение" , СтруктураСообщения["new_chat_member"]["status"]);
|
СтруктураПараметровВыходная.Вставить("IDСообщения" , "");
|
||||||
СтруктураПараметровВыходная.Вставить("Дата" , Дата(1970,1,1,1,0,0) + СтруктураСообщения["date"]);
|
СтруктураПараметровВыходная.Вставить("IDЧата" , СтруктураЧата[Id_]);
|
||||||
СтруктураПараметровВыходная.Вставить("БотОтключен"
|
СтруктураПараметровВыходная.Вставить("Сообщение" , СтруктураСообщения["new_chat_member"]["status"]);
|
||||||
, ?(СтруктураСообщения["new_chat_member"]["status"] = "kicked", Истина, Ложь));
|
СтруктураПараметровВыходная.Вставить("Дата"
|
||||||
|
, Дата(1970, 1, 1, 1, 0, 0) + СтруктураСообщения["date"]);
|
||||||
|
|
||||||
|
СтруктураПараметровВыходная.Вставить("БотОтключен"
|
||||||
|
, ?(СтруктураСообщения["new_chat_member"]["status"] = "kicked", Истина, Ложь));
|
||||||
|
|
||||||
ИначеЕсли СтруктураПараметровВходная.Свойство("callback_query") Тогда
|
ИначеЕсли СтруктураПараметровВходная.Свойство("callback_query") Тогда
|
||||||
|
|
||||||
|
СтруктураСообщения = СтруктураПараметровВходная["callback_query"];
|
||||||
СтруктураСообщения = СтруктураПараметровВходная["callback_query"];
|
СтруктураПользователя = СтруктураСообщения[From];
|
||||||
СтруктураПользователя = СтруктураСообщения[From];
|
|
||||||
|
|
||||||
СтруктураПараметровВыходная.Вставить("Вид" , "Кнопка под сообщением");
|
СтруктураПараметровВыходная.Вставить("Вид" , "Кнопка под сообщением");
|
||||||
СтруктураПараметровВыходная.Вставить("Никнейм" , СтруктураПользователя[Username]);
|
СтруктураПараметровВыходная.Вставить("Никнейм" , СтруктураПользователя[Username]);
|
||||||
СтруктураПараметровВыходная.Вставить("IDПользователя" , СтруктураПользователя[Id_]);
|
СтруктураПараметровВыходная.Вставить("IDПользователя" , СтруктураПользователя[Id_]);
|
||||||
СтруктураПараметровВыходная.Вставить("IDСообщения" , СтруктураСообщения[Message][MessageId]);
|
СтруктураПараметровВыходная.Вставить("IDСообщения" , СтруктураСообщения[Message][MessageId]);
|
||||||
СтруктураПараметровВыходная.Вставить("IDЧата" , СтруктураСообщения[Message][Chat][Id_]);
|
СтруктураПараметровВыходная.Вставить("IDЧата" , СтруктураСообщения[Message][Chat][Id_]);
|
||||||
СтруктураПараметровВыходная.Вставить("Сообщение" , СтруктураСообщения["data"]);
|
СтруктураПараметровВыходная.Вставить("Сообщение" , СтруктураСообщения["data"]);
|
||||||
СтруктураПараметровВыходная.Вставить("БотОтключен" , Ложь);
|
СтруктураПараметровВыходная.Вставить("БотОтключен" , Ложь);
|
||||||
СтруктураПараметровВыходная.Вставить("Дата"
|
СтруктураПараметровВыходная.Вставить("Дата"
|
||||||
, Дата(1970,1,1,1,0,0) + СтруктураСообщения[Message]["date"]);
|
, Дата(1970, 1, 1, 1, 0, 0) + СтруктураСообщения[Message]["date"]);
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
СтруктураПараметровВыходная.Вставить("Вид", "");
|
СтруктураПараметровВыходная.Вставить("Вид" , "");
|
||||||
СтруктураПараметровВыходная.Вставить("Никнейм", "");
|
СтруктураПараметровВыходная.Вставить("Никнейм" , "");
|
||||||
СтруктураПараметровВыходная.Вставить("IDПользователя", "");
|
СтруктураПараметровВыходная.Вставить("IDПользователя" , "");
|
||||||
СтруктураПараметровВыходная.Вставить("IDСообщения", "");
|
СтруктураПараметровВыходная.Вставить("IDСообщения" , "");
|
||||||
СтруктураПараметровВыходная.Вставить("IDЧата", "");
|
СтруктураПараметровВыходная.Вставить("IDЧата" , "");
|
||||||
СтруктураПараметровВыходная.Вставить("Сообщение", "");
|
СтруктураПараметровВыходная.Вставить("Сообщение" , "");
|
||||||
СтруктураПараметровВыходная.Вставить("Дата", ТекущаяДатаСеанса());
|
СтруктураПараметровВыходная.Вставить("Дата" , ТекущаяДатаСеанса());
|
||||||
СтруктураПараметровВыходная.Вставить("БотОтключен", Ложь);
|
СтруктураПараметровВыходная.Вставить("БотОтключен" , Ложь);
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат СтруктураПараметровВыходная;
|
Возврат СтруктураПараметровВыходная;
|
||||||
|
|
||||||
// BSLLS:DuplicateStringLiteral-on
|
// BSLLS:DuplicateStringLiteral-on
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -291,22 +294,22 @@
|
|||||||
// IDЧата - Строка,Число - ID целевого чата
|
// IDЧата - Строка,Число - ID целевого чата
|
||||||
// Текст - Строка - Текст
|
// Текст - Строка - Текст
|
||||||
// СоответствиеФайлов - Соответствие из Строка,ДвоичныеДанные - Коллекция файлов:
|
// СоответствиеФайлов - Соответствие из Строка,ДвоичныеДанные - Коллекция файлов:
|
||||||
// * Ключ - ДвоичныеДанные,Строка - Файл
|
// * Ключ - ДвоичныеДанные,Строка - Файл
|
||||||
// * Значение - Строка - Тип файла: audio, document, photo, video
|
// * Значение - Строка - Тип файла: audio, document, photo, video
|
||||||
// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок
|
// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок
|
||||||
//
|
//
|
||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Произвольный, HTTPОтвет - Ответ сервера Telegram
|
// Произвольный, HTTPОтвет - Ответ сервера Telegram
|
||||||
Функция ОтправитьМедиагруппу(Знач Токен
|
Функция ОтправитьМедиагруппу(Знач Токен
|
||||||
, Знач IDЧата
|
, Знач IDЧата
|
||||||
, Знач Текст
|
, Знач Текст
|
||||||
, Знач СоответствиеФайлов
|
, Знач СоответствиеФайлов
|
||||||
, Знач Клавиатура = "") Экспорт
|
, Знач Клавиатура = "") Экспорт
|
||||||
|
|
||||||
//СоответствиеФайлов
|
// СоответствиеФайлов
|
||||||
//Ключ - Файл, Значение - Тип
|
// Ключ - Файл, Значение - Тип
|
||||||
//Типы: audio, document, photo, video
|
// Типы: audio, document, photo, video
|
||||||
//Нельзя замешивать разные типы!
|
// Нельзя замешивать разные типы!
|
||||||
|
|
||||||
OPI_Инструменты.ЗаменитьСпецсимволы(Текст);
|
OPI_Инструменты.ЗаменитьСпецсимволы(Текст);
|
||||||
|
|
||||||
@ -320,8 +323,7 @@
|
|||||||
Параметры_.Вставить("caption" , Текст);
|
Параметры_.Вставить("caption" , Текст);
|
||||||
Параметры_.Вставить("chat_id" , IDЧата);
|
Параметры_.Вставить("chat_id" , IDЧата);
|
||||||
Параметры_.Вставить("reply_markup" , Клавиатура);
|
Параметры_.Вставить("reply_markup" , Клавиатура);
|
||||||
|
|
||||||
|
|
||||||
Для Каждого ТекущийФайл Из СоответствиеФайлов Цикл
|
Для Каждого ТекущийФайл Из СоответствиеФайлов Цикл
|
||||||
|
|
||||||
Если Не ТипЗнч(ТекущийФайл.Ключ) = Тип("ДвоичныеДанные") Тогда
|
Если Не ТипЗнч(ТекущийФайл.Ключ) = Тип("ДвоичныеДанные") Тогда
|
||||||
@ -340,7 +342,7 @@
|
|||||||
СтруктураФайлов.Вставить(ПолноеИмяМедиа , ДД);
|
СтруктураФайлов.Вставить(ПолноеИмяМедиа , ДД);
|
||||||
|
|
||||||
СтруктураМедиа = Новый Структура;
|
СтруктураМедиа = Новый Структура;
|
||||||
СтруктураМедиа.Вставить("type", ТекущийФайл.Значение);
|
СтруктураМедиа.Вставить("type" , ТекущийФайл.Значение);
|
||||||
СтруктураМедиа.Вставить("media", "attach://" + ИмяМедиа);
|
СтруктураМедиа.Вставить("media", "attach://" + ИмяМедиа);
|
||||||
|
|
||||||
Если Счетчик = 0 Тогда
|
Если Счетчик = 0 Тогда
|
||||||
@ -359,7 +361,6 @@
|
|||||||
+ Токен
|
+ Токен
|
||||||
+ "/sendMediaGroup", Параметры_, СтруктураФайлов, "mixed");
|
+ "/sendMediaGroup", Параметры_, СтруктураФайлов, "mixed");
|
||||||
|
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
@ -439,14 +440,14 @@
|
|||||||
Ответы = OPI_Инструменты.JSONСтрокой(МассивОтветов);
|
Ответы = OPI_Инструменты.JSONСтрокой(МассивОтветов);
|
||||||
|
|
||||||
Параметры_ = Новый Структура;
|
Параметры_ = Новый Структура;
|
||||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||||
Параметры_.Вставить("chat_id" , IDЧата);
|
Параметры_.Вставить("chat_id" , IDЧата);
|
||||||
Параметры_.Вставить("question" , Вопрос);
|
Параметры_.Вставить("question" , Вопрос);
|
||||||
Параметры_.Вставить("options" , Ответы);
|
Параметры_.Вставить("options" , Ответы);
|
||||||
|
|
||||||
Если Не Анонимный Тогда
|
Если Не Анонимный Тогда
|
||||||
Параметры_.Вставить("is_anonymous" , Ложь);
|
Параметры_.Вставить("is_anonymous", Ложь);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/sendPoll", Параметры_);
|
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/sendPoll", Параметры_);
|
||||||
|
|
||||||
@ -548,22 +549,22 @@
|
|||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||||
Функция СоздатьСсылкуПриглашение(Знач Токен
|
Функция СоздатьСсылкуПриглашение(Знач Токен
|
||||||
, Знач IDЧата
|
, Знач IDЧата
|
||||||
, Знач Заголовок = ""
|
, Знач Заголовок = ""
|
||||||
, Знач ДатаИстечения = ""
|
, Знач ДатаИстечения = ""
|
||||||
, Знач ЛимитПользователей = 0) Экспорт
|
, Знач ЛимитПользователей = 0) Экспорт
|
||||||
|
|
||||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||||
|
|
||||||
Параметры_ = Новый Структура;
|
Параметры_ = Новый Структура;
|
||||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
Параметры_.Вставить("parse_mode", "Markdown");
|
||||||
Параметры_.Вставить("chat_id" , IDЧата);
|
Параметры_.Вставить("chat_id" , IDЧата);
|
||||||
Параметры_.Вставить("name" , Заголовок);
|
Параметры_.Вставить("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", Параметры_);
|
||||||
@ -613,9 +614,9 @@
|
|||||||
IDСообщения = OPI_Инструменты.ЧислоВСтроку(IDСообщения);
|
IDСообщения = OPI_Инструменты.ЧислоВСтроку(IDСообщения);
|
||||||
|
|
||||||
Параметры_ = Новый Структура;
|
Параметры_ = Новый Структура;
|
||||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||||
Параметры_.Вставить("chat_id" , IDЧата);
|
Параметры_.Вставить("chat_id" , IDЧата);
|
||||||
Параметры_.Вставить("message_id" , IDСообщения);
|
Параметры_.Вставить("message_id" , IDСообщения);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/unpinChatMessage", Параметры_);
|
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/unpinChatMessage", Параметры_);
|
||||||
|
|
||||||
@ -636,8 +637,8 @@
|
|||||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||||
|
|
||||||
Параметры_ = Новый Структура;
|
Параметры_ = Новый Структура;
|
||||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
Параметры_.Вставить("parse_mode", "Markdown");
|
||||||
Параметры_.Вставить("chat_id" , IDЧата);
|
Параметры_.Вставить("chat_id" , IDЧата);
|
||||||
|
|
||||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/getChatMemberCount", Параметры_);
|
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/getChatMemberCount", Параметры_);
|
||||||
|
|
||||||
@ -658,58 +659,58 @@
|
|||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Соответствие из Строка - Обработанные данные с признаком достоверности
|
// Соответствие из Строка - Обработанные данные с признаком достоверности
|
||||||
Функция ОбработатьДанныеTMA(Знач СтрокаДанных, Знач Токен) Экспорт
|
Функция ОбработатьДанныеTMA(Знач СтрокаДанных, Знач Токен) Экспорт
|
||||||
|
|
||||||
СтрокаДанных = РаскодироватьСтроку(СтрокаДанных, СпособКодированияСтроки.КодировкаURL);
|
СтрокаДанных = РаскодироватьСтроку(СтрокаДанных, СпособКодированияСтроки.КодировкаURL);
|
||||||
СтруктураДанных = OPI_Инструменты.ПараметрыЗапросаВСоответствие(СтрокаДанных);
|
СтруктураДанных = OPI_Инструменты.ПараметрыЗапросаВСоответствие(СтрокаДанных);
|
||||||
Ключ = "WebAppData";
|
Ключ = "WebAppData";
|
||||||
Хэш = "";
|
Хэш = "";
|
||||||
|
|
||||||
Результат = OPI_Криптография.HMACSHA256(ПолучитьДвоичныеДанныеИзСтроки(Ключ)
|
Результат = OPI_Криптография.HMACSHA256(ПолучитьДвоичныеДанныеИзСтроки(Ключ)
|
||||||
, ПолучитьДвоичныеДанныеИзСтроки(Токен));
|
, ПолучитьДвоичныеДанныеИзСтроки(Токен));
|
||||||
|
|
||||||
ТЗнач = Новый ТаблицаЗначений;
|
ТЗнач = Новый ТаблицаЗначений;
|
||||||
ТЗнач.Колонки.Добавить("Ключ");
|
ТЗнач.Колонки.Добавить("Ключ");
|
||||||
ТЗнач.Колонки.Добавить("Значение");
|
ТЗнач.Колонки.Добавить("Значение");
|
||||||
|
|
||||||
Для Каждого Данные Из СтруктураДанных Цикл
|
Для Каждого Данные Из СтруктураДанных Цикл
|
||||||
|
|
||||||
НоваяСтрока = ТЗнач.Добавить();
|
НоваяСтрока = ТЗнач.Добавить();
|
||||||
НоваяСтрока.Ключ = Данные.Ключ;
|
НоваяСтрока.Ключ = Данные.Ключ;
|
||||||
НоваяСтрока.Значение = Данные.Значение;
|
НоваяСтрока.Значение = Данные.Значение;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
ТЗнач.Сортировать("Ключ");
|
ТЗнач.Сортировать("Ключ");
|
||||||
|
|
||||||
СоответствиеВозврата = Новый Соответствие;
|
СоответствиеВозврата = Новый Соответствие;
|
||||||
DCS = "";
|
DCS = "";
|
||||||
|
|
||||||
Для Каждого СтрокаТЗ Из ТЗнач Цикл
|
Для Каждого СтрокаТЗ Из ТЗнач Цикл
|
||||||
|
|
||||||
Если СтрокаТЗ.Ключ <> "hash" Тогда
|
Если СтрокаТЗ.Ключ <> "hash" Тогда
|
||||||
DCS = DCS + СтрокаТЗ.Ключ + "=" + СтрокаТЗ.Значение + Символы.ПС;
|
DCS = DCS + СтрокаТЗ.Ключ + "=" + СтрокаТЗ.Значение + Символы.ПС;
|
||||||
СоответствиеВозврата.Вставить(СтрокаТЗ.Ключ, СтрокаТЗ.Значение);
|
СоответствиеВозврата.Вставить(СтрокаТЗ.Ключ, СтрокаТЗ.Значение);
|
||||||
Иначе
|
Иначе
|
||||||
Хэш = СтрокаТЗ.Значение;
|
Хэш = СтрокаТЗ.Значение;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
DCS = Лев(DCS, СтрДлина(DCS) - 1);
|
DCS = Лев(DCS, СтрДлина(DCS) - 1);
|
||||||
Подпись = OPI_Криптография.HMACSHA256(Результат, ПолучитьДвоичныеДанныеИзСтроки(DCS));
|
Подпись = OPI_Криптография.HMACSHA256(Результат, ПолучитьДвоичныеДанныеИзСтроки(DCS));
|
||||||
|
|
||||||
Финал = ПолучитьHexСтрокуИзДвоичныхДанных(Подпись);
|
Финал = ПолучитьHexСтрокуИзДвоичныхДанных(Подпись);
|
||||||
|
|
||||||
Если Финал = вРег(Хэш) Тогда
|
Если Финал = вРег(Хэш) Тогда
|
||||||
Ответ = Истина;
|
Ответ = Истина;
|
||||||
Иначе
|
Иначе
|
||||||
Ответ = Ложь;
|
Ответ = Ложь;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
СоответствиеВозврата.Вставить("passed", Ответ);
|
СоответствиеВозврата.Вставить("passed", Ответ);
|
||||||
|
|
||||||
Возврат СоответствиеВозврата;
|
Возврат СоответствиеВозврата;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
#КонецОбласти
|
#КонецОбласти
|
||||||
@ -726,33 +727,33 @@
|
|||||||
// Возвращаемое значение:
|
// Возвращаемое значение:
|
||||||
// Строка - JSON клавиатуры
|
// Строка - JSON клавиатуры
|
||||||
Функция СформироватьКлавиатуруПоМассивуКнопок(Знач МассивКнопок
|
Функция СформироватьКлавиатуруПоМассивуКнопок(Знач МассивКнопок
|
||||||
, Знач ПодСообщением = Ложь
|
, Знач ПодСообщением = Ложь
|
||||||
, Знач ОднаПодОдной = Истина) Экспорт
|
, Знач ОднаПодОдной = Истина) Экспорт
|
||||||
|
|
||||||
Если ОднаПодОдной Тогда
|
Если ОднаПодОдной Тогда
|
||||||
|
|
||||||
Строки = Новый Массив;
|
Строки = Новый Массив;
|
||||||
|
|
||||||
Для Каждого Кнопка Из МассивКнопок Цикл
|
Для Каждого Кнопка Из МассивКнопок Цикл
|
||||||
Кнопки = Новый Массив;
|
Кнопки = Новый Массив;
|
||||||
Кнопка = OPI_Инструменты.ЧислоВСтроку(Кнопка);
|
Кнопка = OPI_Инструменты.ЧислоВСтроку(Кнопка);
|
||||||
Кнопки.Добавить(Новый Структура("text,callback_data", Кнопка, Кнопка));
|
Кнопки.Добавить(Новый Структура("text,callback_data", Кнопка, Кнопка));
|
||||||
Строки.Добавить(Кнопки);
|
Строки.Добавить(Кнопки);
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Иначе
|
Иначе
|
||||||
|
|
||||||
Строки = Новый Массив;
|
Строки = Новый Массив;
|
||||||
Кнопки = Новый Массив;
|
Кнопки = Новый Массив;
|
||||||
|
|
||||||
Для Каждого Кнопка Из МассивКнопок Цикл
|
Для Каждого Кнопка Из МассивКнопок Цикл
|
||||||
Кнопка = OPI_Инструменты.ЧислоВСтроку(Кнопка);
|
Кнопка = OPI_Инструменты.ЧислоВСтроку(Кнопка);
|
||||||
Кнопки.Добавить(Новый Структура("text,callback_data", Кнопка, Кнопка));
|
Кнопки.Добавить(Новый Структура("text,callback_data", Кнопка, Кнопка));
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
Строки.Добавить(Кнопки);
|
Строки.Добавить(Кнопки);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если ПодСообщением Тогда
|
Если ПодСообщением Тогда
|
||||||
СтруктураПараметра = Новый Структура("inline_keyboard,rows", Строки, 1);
|
СтруктураПараметра = Новый Структура("inline_keyboard,rows", Строки, 1);
|
||||||
Иначе
|
Иначе
|
||||||
@ -796,7 +797,7 @@
|
|||||||
|
|
||||||
Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
||||||
ТекущийФайл = Новый Файл(Файл);
|
ТекущийФайл = Новый Файл(Файл);
|
||||||
Расширение = ?(Вид = "document" или Вид = "animation", ТекущийФайл.Расширение, "");
|
Расширение = ?(Вид = "document" Или Вид = "animation", ТекущийФайл.Расширение, "");
|
||||||
Файл = Новый ДвоичныеДанные(Файл);
|
Файл = Новый ДвоичныеДанные(Файл);
|
||||||
Иначе
|
Иначе
|
||||||
Расширение = "";
|
Расширение = "";
|
||||||
@ -816,8 +817,7 @@
|
|||||||
Ответ = OPI_Инструменты.PostMultipart("api.telegram.org/bot"
|
Ответ = OPI_Инструменты.PostMultipart("api.telegram.org/bot"
|
||||||
+ Токен
|
+ Токен
|
||||||
+ Метод, Параметры_, СтруктураФайлов, "mixed");
|
+ Метод, Параметры_, СтруктураФайлов, "mixed");
|
||||||
|
|
||||||
|
|
||||||
Возврат Ответ;
|
Возврат Ответ;
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
Loading…
Reference in New Issue
Block a user