mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2024-12-12 11:15:07 +02:00
251 lines
11 KiB
Plaintext
251 lines
11 KiB
Plaintext
#Использовать cmdline
|
|
#Использовать oint
|
|
|
|
Процедура ОсновнойОбработчик()
|
|
|
|
Парсер = Новый ПарсерАргументовКоманднойСтроки();
|
|
|
|
ДобавитьКомандуТелеграм(Парсер);
|
|
|
|
Результат = Парсер.Разобрать(АргументыКоманднойСтроки);
|
|
ТекущаяКоманда = Результат["Команда"];
|
|
|
|
Если ТекущаяКоманда = Неопределено Тогда
|
|
ВывестиСправку();
|
|
Иначе
|
|
ВыполнитьОбработкуКоманды(Результат);
|
|
КонецЕсли;
|
|
|
|
КонецПроцедуры
|
|
|
|
Процедура ВывестиСправку()
|
|
|
|
Сообщить("-----------------------------------------------------", СтатусСообщения.Информация);
|
|
Сообщить("
|
|
|
|
|
| _______ _____________ ___ _______
|
|
| __ __ ___/__ _/_ / | / /___ __/
|
|
| _ / / / __ / __ / __ /
|
|
| / /_/ / __/ / _ /| / _ /
|
|
| \____/ /___/ /_/ |_/ /_/
|
|
|
|
|
|
|
|
| Добро пожаловать в OInt!
|
|
|
|
|
| Структура команд:
|
|
| OInt БИБЛИОТЕКА ""МЕТОД"" [Параметры]
|
|
|
|
|
| Вызов библиотеки без метода или метода без параметров возвращает справку
|
|
| Список доступных библиотек: telegram
|
|
|", СтатусСообщения.Внимание);
|
|
|
|
Сообщить("Полную документацию можно найти по адресу: https://opi.neocities.org" + Символы.ПС, СтатусСообщения.Информация);
|
|
|
|
КонецПроцедуры
|
|
|
|
Процедура ВывестиСправкуПоПараметрам(Знач ТаблицаПараметров)
|
|
|
|
Если ТаблицаПараметров.Количество() = 0 Тогда
|
|
Возврат;
|
|
КонецЕсли;
|
|
|
|
ИмяМетода = ТаблицаПараметров[0].Метод;
|
|
ТекстСправки = "";
|
|
|
|
Сообщить("
|
|
| ## Метод " + ИмяМетода , СтатусСообщения.Информация);
|
|
|
|
Для Каждого ПараметрМетода Из ТаблицаПараметров Цикл
|
|
|
|
ТекстСправки = ТекстСправки
|
|
+ Символы.ПС
|
|
+ " "
|
|
+ ПараметрМетода["Параметр"]
|
|
+ " - "
|
|
+ ПараметрМетода["Описание"];
|
|
|
|
КонецЦикла;
|
|
|
|
Сообщить(ТекстСправки + Символы.ПС, СтатусСообщения.Внимание);
|
|
|
|
КонецПроцедуры
|
|
|
|
Процедура ВывестиСправкуПоМетодам(Знач ТаблицаПараметров)
|
|
|
|
ТаблицаПараметров.Свернуть("Метод");
|
|
МассивМетодов = ТаблицаПараметров.ВыгрузитьКолонку("Метод");
|
|
|
|
Сообщить(" ## Доступные методы: " + Символы.ПС, СтатусСообщения.Информация);
|
|
|
|
Для каждого Метод Из МассивМетодов Цикл
|
|
Сообщить(" - " + Метод + Символы.ПС, СтатусСообщения.Внимание);
|
|
КонецЦикла;
|
|
|
|
КонецПроцедуры
|
|
|
|
Процедура ВыполнитьОбработкуКоманды(Знач Данные)
|
|
|
|
ТекущаяКоманда = Данные["Команда"];
|
|
Вывод = "";
|
|
|
|
Попытка
|
|
|
|
Если ТекущаяКоманда = "telegram" Тогда
|
|
|
|
Вывод = ОбработкаКомандыТелеграм(Данные);
|
|
|
|
Иначе
|
|
Сообщить("Неизвестная команда!", СтатусСообщения.ОченьВажное);
|
|
Возврат;
|
|
КонецЕсли;
|
|
|
|
Если ТипЗнч(Вывод) = Тип("Структура")
|
|
Или ТипЗнч(Вывод) = Тип("Соответствие")
|
|
Или ТипЗнч(Вывод) = Тип("Массив") Тогда
|
|
|
|
Вывод = OPI_Инструменты.JSONСтрокой(Вывод);
|
|
|
|
КонецЕсли;
|
|
|
|
Если ЗначениеЗаполнено(Вывод) Тогда
|
|
Сообщить(Вывод);
|
|
КонецЕсли;
|
|
|
|
Исключение
|
|
|
|
Если ЗначениеЗаполнено(Вывод) Тогда
|
|
Сообщить(Вывод);
|
|
Иначе
|
|
Сообщить(ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
|
|
Сообщить(Символы.ПС);
|
|
КонецЕсли;
|
|
|
|
КонецПопытки;
|
|
|
|
КонецПроцедуры
|
|
|
|
#Область telegram
|
|
|
|
Функция ОбработкаКомандыТелеграм(Знач Данные)
|
|
|
|
Модуль = "OPI_Telegram";
|
|
Параметры = Данные["ЗначенияПараметров"];
|
|
Метод = Параметры["Метод"];
|
|
Ответ = "<пустой возврат>";
|
|
|
|
ТаблицаПараметров = ПолучитьТаблицуПараметровТелеграм();
|
|
|
|
Если Не ЗначениеЗаполнено(Метод) Тогда
|
|
Сообщить(Символы.ПС + " ## Команда - telegram", СтатусСообщения.Информация);
|
|
ВывестиСправкуПоМетодам(ТаблицаПараметров);
|
|
Возврат "";
|
|
КонецЕсли;
|
|
|
|
ОтборКоманды = Новый Структура("МетодПоиска", вРег(Метод));
|
|
ПараметрыМетода = ТаблицаПараметров.НайтиСтроки(ОтборКоманды);
|
|
ТекстВыполнения = "";
|
|
|
|
Если Параметры.Количество() = 1 Тогда
|
|
ВывестиСправкуПоПараметрам(ПараметрыМетода);
|
|
Возврат "";
|
|
КонецЕсли;
|
|
|
|
СтрокаВызова = Модуль + "." + Метод + "(";
|
|
Для Каждого НеобходимыйПараметр Из ПараметрыМетода Цикл
|
|
|
|
ЗначениеПараметра = Параметры.Получить(НеобходимыйПараметр.Параметр);
|
|
|
|
Если ЗначениеЗаполнено(ЗначениеПараметра) Тогда
|
|
|
|
ТекстВыполнения = ТекстВыполнения
|
|
+ Символы.ПС
|
|
+ НеобходимыйПараметр.Имя
|
|
+ " = """
|
|
+ ЗначениеПараметра
|
|
+ """;";
|
|
|
|
СтрокаВызова = СтрокаВызова + НеобходимыйПараметр.Имя + ", ";
|
|
|
|
Иначе
|
|
СтрокаВызова = СтрокаВызова + " , ";
|
|
КонецЕсли;
|
|
|
|
КонецЦикла;
|
|
|
|
СтрокаВызова = Лев(СтрокаВызова, СтрДлина(СтрокаВызова) - 2);
|
|
СтрокаВызова = СтрокаВызова + ");";
|
|
СтрокаВызова = "Ответ = " + СтрокаВызова;
|
|
|
|
ТекстВыполнения = ТекстВыполнения + Символы.ПС + СтрокаВызова;
|
|
|
|
Выполнить(ТекстВыполнения);
|
|
|
|
Возврат Ответ;
|
|
|
|
КонецФункции
|
|
|
|
Процедура ДобавитьКомандуТелеграм(Парсер)
|
|
|
|
Команда = Парсер.ОписаниеКоманды("telegram");
|
|
ТаблицаПараметров = ПолучитьТаблицуПараметровТелеграм();
|
|
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "Метод");
|
|
|
|
ДобавитьПараметрыКоманды(Парсер, Команда, ТаблицаПараметров);
|
|
|
|
Парсер.ДобавитьКоманду(Команда);
|
|
|
|
КонецПроцедуры
|
|
|
|
Функция ПолучитьТаблицуПараметровТелеграм()
|
|
|
|
ТПМ = Новый ТаблицаЗначений();
|
|
|
|
ТПМ.Колонки.Добавить("Метод");
|
|
ТПМ.Колонки.Добавить("МетодПоиска");
|
|
ТПМ.Колонки.Добавить("Параметр");
|
|
ТПМ.Колонки.Добавить("Имя");
|
|
ТПМ.Колонки.Добавить("Описание");
|
|
|
|
ДобавитьПараметрМетода(ТПМ, "ОтправитьТекстовоеСообщение", "--token" , "Токен", "Токен бота");
|
|
ДобавитьПараметрМетода(ТПМ, "ОтправитьТекстовоеСообщение", "--id" , "IDЧата", "ID целевого чата или чата и темы через * (IDЧата*IDТемы)");
|
|
ДобавитьПараметрМетода(ТПМ, "ОтправитьТекстовоеСообщение", "--text" , "Текст", "Текст сообщения");
|
|
ДобавитьПараметрМетода(ТПМ, "ОтправитьТекстовоеСообщение", "--keyboard", "Клавиатура", "JSON клавиатуры (необяз.)");
|
|
|
|
Возврат ТПМ;
|
|
|
|
КонецФункции
|
|
|
|
#КонецОбласти
|
|
|
|
Процедура ДобавитьПараметрМетода(Таблица, Знач Метод, Знач Параметр, Знач Имя, Знач Описание)
|
|
|
|
НовыйПараметр = Таблица.Добавить();
|
|
НовыйПараметр.МетодПоиска = вРег(Метод);
|
|
НовыйПараметр.Метод = Метод;
|
|
НовыйПараметр.Параметр = Параметр;
|
|
НовыйПараметр.Имя = Имя;
|
|
НовыйПараметр.Описание = Описание;
|
|
|
|
КонецПроцедуры
|
|
|
|
Процедура ДобавитьПараметрыКоманды(Парсер, Команда, Знач ТаблицаПараметров);
|
|
|
|
ТаблицаПараметров.Свернуть("Параметр");
|
|
|
|
МассивПараметров = ТаблицаПараметров.ВыгрузитьКолонку("Параметр");
|
|
|
|
Для Каждого Параметр Из МассивПараметров Цикл
|
|
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, Параметр);
|
|
КонецЦикла;
|
|
|
|
КонецПроцедуры
|
|
|
|
|
|
Попытка
|
|
ОсновнойОбработчик();
|
|
Исключение
|
|
Сообщить(Символы.ПС + "!!! ОШИБКА: Проверьте корректность введенных данных" + Символы.ПС, СтатусСообщения.ОченьВажное);
|
|
Сообщить(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()) + Символы.ПС, СтатусСообщения.Важное);
|
|
КонецПопытки;
|
|
|