diff --git a/OPI/src/CommonModules/OPI_Telegram/Module.bsl b/OPI/src/CommonModules/OPI_Telegram/Module.bsl index 7146f95b12..ab85f4698f 100644 --- a/OPI/src/CommonModules/OPI_Telegram/Module.bsl +++ b/OPI/src/CommonModules/OPI_Telegram/Module.bsl @@ -36,7 +36,7 @@ // Получить информацию бота. // // Параметры: -// Токен - Строка - Токен +// Токен - Строка - Токен - token - token // // Возвращаемое значение: // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram @@ -52,7 +52,7 @@ // Получить обновления. // // Параметры: -// Токен - Строка - Токен +// Токен - Строка - Токен - token - token // // Возвращаемое значение: // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram @@ -67,8 +67,8 @@ // Установить Webhook. // // Параметры: -// Токен - Строка - Токен -// URL - Строка - Адрес обработки запросов от Telegram (с https://) +// Токен - Строка - Токен - token +// URL - Строка - Адрес обработки запросов от Telegram (с https://) - url // // Возвращаемое значение: // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram @@ -87,7 +87,7 @@ // Удалить Webhook. // // Параметры: -// Токен - Строка - Токен +// Токен - Строка - Токен - token // // Возвращаемое значение: // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram @@ -106,10 +106,10 @@ // Отправить текстовое сообщение. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID целевого чата -// Текст - Строка - Текст сообщения -// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID целевого чата - chat +// Текст - Строка - Текст сообщения - text +// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок - keyboard // // Возвращаемое значение: // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram @@ -134,11 +134,11 @@ // Отправить картинку. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - IDЧата -// Текст - Строка - Текст -// Картинка - ДвоичныеДанные,Строка - Двоичные данные или путь к картинке -// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - IDЧата - chat +// Текст - Строка - Текст - text +// Картинка - ДвоичныеДанные,Строка - Двоичные данные или путь к картинке - path +// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок - keyboard // // Возвращаемое значение: // Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram @@ -151,11 +151,11 @@ // Отправить видео. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID целевого чата -// Текст - Строка - Текст -// Видео - ДвоичныеДанные,Строка - Двоичные данные или путь к видео -// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID целевого чата - chat +// Текст - Строка - Текст - text +// Видео - ДвоичныеДанные,Строка - Двоичные данные или путь к видео - path +// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок - keyboard // // Возвращаемое значение: // Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram @@ -168,11 +168,11 @@ // Отправить аудио. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID целевого чата -// Текст - Строка - Текст -// Аудио - ДвоичныеДанные,Строка - Двоичные данные или путь к аудио -// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID целевого чата - chat +// Текст - Строка - Текст - text +// Аудио - ДвоичныеДанные,Строка - Двоичные данные или путь к аудио - path +// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок - keyboard // // Возвращаемое значение: // Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram @@ -185,11 +185,11 @@ // Отправить документ. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID целевого чата -// Текст - Строка - Текст -// Документ - ДвоичныеДанные,Строка - Двоичные данные или путь к документу -// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID целевого чата - chat +// Текст - Строка - Текст - text +// Документ - ДвоичныеДанные,Строка - Двоичные данные или путь к документу - path +// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок - keyboard // // Возвращаемое значение: // Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram @@ -202,11 +202,11 @@ // Отправить гифку. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID целевого чата -// Текст - Строка - Текст -// Гифка - ДвоичныеДанные,Строка - Двоичные данные или путь к гифке -// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID целевого чата - chat +// Текст - Строка - Текст - text +// Гифка - ДвоичныеДанные,Строка - Двоичные данные или путь к гифке - path +// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок - keyboard // // Возвращаемое значение: // Строка, Произвольный, HTTPОтвет - Ответ сервера Telegram @@ -219,13 +219,13 @@ // Отправить набор любых файлов. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID целевого чата -// Текст - Строка - Текст -// СоответствиеФайлов - Соответствие из Строка,ДвоичныеДанные - Коллекция файлов: +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID целевого чата - chat +// Текст - Строка - Текст - text +// СоответствиеФайлов - Соответствие из Строка,ДвоичныеДанные - Коллекция файлов - path: // * Ключ - ДвоичныеДанные,Строка - Файл // * Значение - Строка - Тип файла: audio, document, photo, video -// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок +// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок - keyboard // // Возвращаемое значение: // Произвольный, HTTPОтвет - Ответ сервера Telegram @@ -262,11 +262,11 @@ // Отправить местоположение. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID целевого чата -// Широта - Строка,Число - Географическая широта -// Долгота - Строка,Число - Географическая долгота -// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID целевого чата - chat +// Широта - Строка,Число - Географическая широта - lat +// Долгота - Строка,Число - Географическая долгота - long +// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок - keyboard // // Возвращаемое значение: // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram @@ -292,12 +292,12 @@ // Отправить контакт. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID целевого чата -// Имя - Строка - Имя контакта -// Фамилия - Строка - Фамилия контакта -// Телефон - Строка - Телефон контакта -// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID целевого чата - chat +// Имя - Строка - Имя контакта - name +// Фамилия - Строка - Фамилия контакта - surname +// Телефон - Строка - Телефон контакта - phone +// Клавиатура - Строка - См. СформироватьКлавиатуруПоМассивуКнопок - keyboard // // Возвращаемое значение: // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram @@ -324,11 +324,11 @@ // Отправить опрос. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID целевого чата -// Вопрос - Строка - Вопрос опроса -// МассивОтветов - Массив из строка - Массив вариантов ответа -// Анонимный - Булево - Анонимность опроса +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID целевого чата - chat +// Вопрос - Строка - Вопрос опроса - question +// МассивОтветов - Массив из строка - Массив вариантов ответа - options +// Анонимный - Булево - Анонимность опроса - anonymous // // Возвращаемое значение: // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram @@ -358,10 +358,10 @@ // Переслать сообщение. // // Параметры: -// Токен - Строка - Токен -// IDОригинала - Строка,Число - ID оригинального сообщения -// ОткудаID - Строка,Число - ID чата оригинального сообщения -// КудаID - Строка,Число - ID целевого чата +// Токен - Строка - Токен - token +// IDОригинала - Строка,Число - ID оригинального сообщения - message +// ОткудаID - Строка,Число - ID чата оригинального сообщения - from +// КудаID - Строка,Число - ID целевого чата - to // // Возвращаемое значение: // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram @@ -391,9 +391,9 @@ // Бан. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID целевого чата -// IDПользователя - Строка,Число - ID целевого пользователя +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID целевого чата - chat +// IDПользователя - Строка,Число - ID целевого пользователя - user // // Возвращаемое значение: // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram @@ -417,9 +417,9 @@ // Разбан. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID целевого чата -// IDПользователя - Строка,Число - ID целевого пользователя +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID целевого чата - chat +// IDПользователя - Строка,Число - ID целевого пользователя - user // // Возвращаемое значение: // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram @@ -444,11 +444,11 @@ // Создать ссылку приглашение. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID целевого чата -// Заголовок - Строка - Заголовок приглашения -// ДатаИстечения - Дата - Дата окончания жизни ссылки (безсрочно, если не указано) -// ЛимитПользователей - Число - Лимит пользователей (бесконечно, если не указано) +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID целевого чата - chat +// Заголовок - Строка - Заголовок приглашения - name +// ДатаИстечения - Дата - Дата окончания жизни ссылки (безсрочно, если не указано) - expire +// ЛимитПользователей - Число - Лимит пользователей (бесконечно, если не указано) - limit // // Возвращаемое значение: // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram @@ -482,9 +482,9 @@ // Закрепить сообщение. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID целевого чата -// IDСообщения - Строка,Число - ID целевого сообщения +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID целевого чата - chat +// IDСообщения - Строка,Число - ID целевого сообщения - message // // Возвращаемое значение: // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram @@ -509,9 +509,9 @@ // Открепить сообщение. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка - ID целевого чата -// IDСообщения - Строка,Число - ID целевого сообщения +// Токен - Строка - Токен - token +// IDЧата - Строка - ID целевого чата - chat +// IDСообщения - Строка,Число - ID целевого сообщения - message // // Возвращаемое значение: // ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram @@ -535,8 +535,8 @@ // Получить число участников. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID целевого чата +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID целевого чата - chat // // Возвращаемое значение: // ДвоичныеДанные, Неопределено, Произвольный - Получить число участников @@ -559,11 +559,11 @@ #Область TelegramMiniApp -// Обработать данные TMA и определить их достоверность +// Обработать данные TMA и определить их достоверность !NOCLI // // Параметры: // СтрокаДанных - Строка - querry из Telegram.WebApp.initData -// Токен - Строка - Токен бота +// Токен - Строка - Токен - token бота // // Возвращаемое значение: // Соответствие из Строка - Обработанные данные с признаком достоверности @@ -628,7 +628,7 @@ // Получить список иконок аватаров. // // Параметры: -// Токен - Строка - Токен +// Токен - Строка - Токен - token // // Возвращаемое значение: // Соответствие Из КлючИЗначение - Список иконок аватаров @@ -651,10 +651,10 @@ // Создать тему форума. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID чата создания темы -// Заголовок - Строка - Заголовок темы -// IDИконки - Строка - См.ПолучитьСписокИконокАватаров +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID чата создания темы - chat +// Заголовок - Строка - Заголовок темы - name +// IDИконки - Строка - См.ПолучитьСписокИконокАватаров - icon // // Возвращаемое значение: // HTTPОтвет - Ответ сервера Telegram @@ -665,11 +665,11 @@ // Изменить тему форума. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID чата темы -// IDТемы - Строка,Число - ID темы -// Заголовок - Строка - Новый заголовок -// IDИконки - Строка - См.ПолучитьСписокИконокАватаров +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID чата темы - chat +// IDТемы - Строка,Число - ID темы - topic +// Заголовок - Строка - Новый заголовок - name +// IDИконки - Строка - См.ПолучитьСписокИконокАватаров - icon // // Возвращаемое значение: // HTTPОтвет - Ответ сервера Telegram @@ -685,9 +685,9 @@ // Закрыть тему форума. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID чата темы -// IDТемы - Строка,Число - ID темы +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID чата темы - chat +// IDТемы - Строка,Число - ID темы - topic // // Возвращаемое значение: // Неопределено, HTTPОтвет - Ответ сервера Telegram @@ -698,9 +698,9 @@ // Открыть тему форума. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID чата темы -// IDТемы - Строка,Число - ID темы +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID чата темы - chat +// IDТемы - Строка,Число - ID темы - topic // // Возвращаемое значение: // Неопределено, HTTPОтвет - Ответ сервера Telegram @@ -711,9 +711,9 @@ // Удалить тему форума. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID чата темы -// IDТемы - Строка,Число - ID темы +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID чата темы - chat +// IDТемы - Строка,Число - ID темы - topic // // Возвращаемое значение: // Неопределено, HTTPОтвет - Ответ сервера Telegram @@ -724,8 +724,8 @@ // Скрыть главную тему форума. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID чата темы +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID чата темы - chat // // Возвращаемое значение: // HTTPОтвет - Ответ сервера Telegram @@ -736,8 +736,8 @@ // Показать главную тему форума. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID чата темы +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID чата темы - chat // // Возвращаемое значение: // HTTPОтвет - Ответ сервера Telegram @@ -748,9 +748,9 @@ // Изменить имя главной темы форума. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID Чата темы -// Заголовок - Строка - Новый заголовок +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID Чата темы - chat +// Заголовок - Строка - Новый заголовок - name // // Возвращаемое значение: // HTTPОтвет - Ответ сервера Telegram @@ -771,9 +771,9 @@ // Очистить список закрепленных сообщений темы. // // Параметры: -// Токен - Строка - Токен -// IDЧата - Строка,Число - ID чата темы -// IDТемы - Строка - ID темы. Главная, если не заполнено +// Токен - Строка - Токен - token +// IDЧата - Строка,Число - ID чата темы - chat +// IDТемы - Строка - ID темы. Главная, если не заполнено - topic // // Возвращаемое значение: // HTTPОтвет - Очистить список закрепленных сообщений темы @@ -805,9 +805,9 @@ // Сформировать клавиатуру по массиву кнопок. // // Параметры: -// МассивКнопок - Массив из Строка - Массив кнопок -// ПодСообщением - Булево - Клавиатура под сообщением или на нижней панели -// ОднаПодОдной - Булево - Истина - кнопки выводятся в столбик, Ложь - в строку +// МассивКнопок - Массив из Строка - Массив кнопок - buttons +// ПодСообщением - Булево - Клавиатура под сообщением или на нижней панели - under +// ОднаПодОдной - Булево - Истина -> кнопки выводятся в столбик, Ложь -> в строку - coloumn // // Возвращаемое значение: // Строка - JSON клавиатуры diff --git a/cli/data/Modules/СоставБиблиотеки.os b/cli/data/Modules/СоставБиблиотеки.os new file mode 100644 index 0000000000..5f282702bb --- /dev/null +++ b/cli/data/Modules/СоставБиблиотеки.os @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cli/parse.os b/cli/parse.os new file mode 100644 index 0000000000..b7f2e030ae --- /dev/null +++ b/cli/parse.os @@ -0,0 +1,154 @@ +#Использовать osparser + +Перем КаталогБиблиотеки; +Перем ФайлСоставаОПИ; +Перем МодульСоставаОПИ; +Перем СоответствиеКомандМодулей; +Перем ТекущийМодуль; + +Процедура ПриСозданииОбъекта() + + СоответствиеКомандМодулей = Новый Соответствие(); + СоответствиеКомандМодулей.Вставить("OPI_Telegram", "telegram"); + + КаталогБиблиотеки = "C:\Repos\OPI\OInt\core\Modules"; + ФайлСоставаОПИ = "C:\Repos\OPI\cli\data\Modules\СоставБиблиотеки.os"; + + МодульСоставаОПИ = Новый ТекстовыйДокумент(); + + МодульСоставаОПИ.УстановитьТекст("Функция ПолучитьСостав() Экспорт + | + | ТаблицаСостава = Новый ТаблицаЗначений(); + | ТаблицаСостава.Колонки.Добавить(""Библиотека""); + | ТаблицаСостава.Колонки.Добавить(""Модуль""); + | ТаблицаСостава.Колонки.Добавить(""Метод""); + | ТаблицаСостава.Колонки.Добавить(""МетодПоиска""); + | ТаблицаСостава.Колонки.Добавить(""Параметр""); + | ТаблицаСостава.Колонки.Добавить(""Описание""); + | ТаблицаСостава.Колонки.Добавить(""Обработка""); + |"); + + ЗаполнитьТаблицуСостава(); + + МодульСоставаОПИ.ДобавитьСтроку(" Возврат ТаблицаСостава;"); + МодульСоставаОПИ.ДобавитьСтроку("КонецФункции"); + + МодульСоставаОПИ.Записать(ФайлСоставаОПИ); + +КонецПроцедуры + + +Процедура ЗаполнитьТаблицуСостава() + + ФайлыМодулей = НайтиФайлы(КаталогБиблиотеки, "*.os"); + + Для Каждого Модуль Из ФайлыМодулей Цикл + + ТекущийМодуль = Модуль.ИмяБезРасширения; + + Если Не СоответствиеКомандМодулей[ТекущийМодуль] = Неопределено Тогда + РазобратьМодуль(Модуль); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура РазобратьМодуль(Модуль) + + Парсер = Новый ПарсерВстроенногоЯзыка; + ДокументМодуля = Новый ТекстовыйДокумент; + ДокументМодуля.Прочитать(Модуль.ПолноеИмя); + ТекстМодуля = ДокументМодуля.ПолучитьТекст(); + + СтруктураМодуля = Парсер.Разобрать(ТекстМодуля); + + Для Каждого Метод Из СтруктураМодуля.Объявления Цикл + + Если Метод.Тип = "ОбъявлениеМетода" И Метод.Сигнатура.Экспорт = Истина Тогда + РазобратьКомментарийМетода(ДокументМодуля, Метод.Начало.НомерСтроки, Метод.Сигнатура.Имя); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура РазобратьКомментарийМетода(ТекстовыйДокумент, НомерСтроки, ИмяМетода) + + ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки - 1); + ТекстКомментария = ТекущаяСтрока; + Счетчик = 1; + Записывать = Ложь; + МассивПараметров = Новый Массив; + + Пока СтрНайти(ТекущаяСтрока, "//") > 0 Цикл + + Счетчик = Счетчик + 1; + + ТекущаяСтрока = ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки - Счетчик); + ТекстКомментария = ТекущаяСтрока + Символы.ПС + ТекстКомментария; + + КонецЦикла; + + Если СтрНайти(ТекстКомментария, "!NOCLI") > 0 Тогда + Возврат; + КонецЕсли; + + МассивКомментария = СтрРазделить(ТекстКомментария, "//", Ложь); + + Для Каждого СтрокаКомментария Из МассивКомментария Цикл + + Если СтрНайти(СтрокаКомментария, "Параметры:") > 0 Тогда + Записывать = Истина; + + ИначеЕсли СтрНайти(СтрокаКомментария, "Возвращаемое значение:") > 0 Тогда + Прервать; + + ИначеЕсли Записывать = Истина И ЗначениеЗаполнено(СокрЛП(СтрокаКомментария)) И СтрНайти(СтрокаКомментария, "*") = 0 Тогда + МассивПараметров.Добавить(СтрокаКомментария); + + Иначе + Продолжить; + КонецЕсли; + + КонецЦикла; + + Для Каждого ПараметрМетода Из МассивПараметров Цикл + ЗаписатьСозданиеПараметраСостава(ПараметрМетода, ИмяМетода); + + КонецЦикла; + +КонецПроцедуры + +Процедура ЗаписатьСозданиеПараметраСостава(ПараметрМетода, ИмяМетода) + + МассивЭлементовПараметра = СтрРазделить(ПараметрМетода, " - ", Ложь); + КоличествоЭлементов = МассивЭлементовПараметра.Количество(); + + Для Н = 0 По МассивЭлементовПараметра.ВГраница() Цикл + МассивЭлементовПараметра[Н] = СокрЛП(МассивЭлементовПараметра[Н]); + КонецЦикла; + + Если КоличествоЭлементов < 4 Тогда + Возврат; + КонецЕсли; + + Имя = "--" + МассивЭлементовПараметра[4]; + Обработка = ?(КоличествоЭлементов >= 5, МассивЭлементовПараметра[4], "Строка"); + Описание = ?(КоличествоЭлементов >= 6, МассивЭлементовПараметра[5], МассивЭлементовПараметра[2]); + + МодульСоставаОПИ.ДобавитьСтроку(Символы.ПС); + + МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока = ТаблицаСостава.Добавить();"); + МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Библиотека = """ + СоответствиеКомандМодулей.Получить(ТекущийМодуль) + """;"); + МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Модуль = """ + ТекущийМодуль + """;"); + МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Метод = """ + ИмяМетода + """;"); + МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.МетодПоиска = """ + вРег(ИмяМетода) + """;"); + МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Параметр = """ + Имя + """;"); + МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Описание = """ + Описание + """;"); + МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Обработка = """ + Обработка + """;"); + МодульСоставаОПИ.ДобавитьСтроку(Символы.ПС); + +КонецПроцедуры + +ПриСозданииОбъекта(); \ No newline at end of file diff --git a/cli/tools/Classes/СвязьОПИ.os b/cli/tools/Classes/СвязьОПИ.os index 5aa9a3313f..2a7b98a308 100644 --- a/cli/tools/Classes/СвязьОПИ.os +++ b/cli/tools/Classes/СвязьОПИ.os @@ -1,235 +1,51 @@ +#Использовать "../../data" + Перем СоответствиеТаблицПараметров; Перем СоответствиеКомандМодулей; Процедура ПриСозданииОбъекта() СоответствиеТаблицПараметров = Новый Соответствие(); - СоответствиеКомандМодулей = Новый Соответствие(); - СоответствиеКомандМодулей.Вставить("telegram", "OPI_Telegram"); + СоответствиеКомандМодулей = Новый Соответствие(); + + ТаблицаСостава = СоставБиблиотеки.ПолучитьСостав(); + ТекущаяБиблиотека = ""; + ТекущаяТаблица = ""; + + Для Каждого СтрокаСостава Из ТаблицаСостава Цикл + + Если ТекущаяБиблиотека <> СтрокаСостава.Библиотека Тогда + + Если ЗначениеЗаполнено(ТекущаяБиблиотека) Тогда + СоответствиеТаблицПараметров.Вставить(ТекущаяБиблиотека, ТекущаяТаблица); + КонецЕсли; + + ТекущаяБиблиотека = СтрокаСостава.Библиотека; + ТекущаяТаблица = ПолучитьПустуюТаблицуПараметров(); + + КонецЕсли; + + ЗаполнитьЗначенияСвойств(ТекущаяТаблица, СтрокаСостава); + + КонецЦикла; КонецПроцедуры #Область СлужебныйПрограммныйИнтерфейс -Функция ПолучитьИмяМодуля(Знач ИмяКоманды = "") Экспорт +Функция ПолучитьПустуюТаблицуПараметров() Экспорт - Если ЗначениеЗаполнено(ИмяКоманды) Тогда - Результат = СоответствиеКомандМодулей.Получить(ИмяКоманды); - Иначе - Результат = СоответствиеКомандМодулей; - КонецЕсли; - - Если НЕ ЗначениеЗаполнено(Результат) Тогда - ВызватьИсключение "Неизвестная команда: " + ИмяКоманды; - Иначе - Возврат Результат; - КонецЕсли; + ТПМ = Новый ТаблицаЗначений(); + ТПМ.Колонки.Добавить("Модуль"); + ТПМ.Колонки.Добавить("Метод"); + ТПМ.Колонки.Добавить("МетодПоиска"); + ТПМ.Колонки.Добавить("Параметр"); + ТПМ.Колонки.Добавить("Описание"); + ТПМ.Колонки.Добавить("Обработка"); + КонецФункции -Функция ПолучитьТаблицуПараметров(Знач ИмяКоманды) Экспорт - - ТПМ = СоответствиеТаблицПараметров.Получить(ИмяКоманды); - - Если ТПМ = Неопределено Тогда - - ТПМ = Новый ТаблицаЗначений(); - - ТПМ.Колонки.Добавить("Метод"); - ТПМ.Колонки.Добавить("МетодПоиска"); - ТПМ.Колонки.Добавить("Параметр"); - ТПМ.Колонки.Добавить("Описание"); - ТПМ.Колонки.Добавить("ВариантОбработки"); - - Попытка - Выполнить("ЗаполнитьТаблицуПараметров" + ИмяКоманды + "(ТПМ);"); - Исключение - ВызватьИсключение "Неизвестная команда: " + ИмяКоманды; - КонецПопытки; - - СоответствиеТаблицПараметров.Вставить(ИмяКоманды, ТПМ); - - КонецЕсли; - - Возврат ТПМ; - -КонецФункции - -Процедура ЗаполнитьТаблицуПараметровTelegram(ТПМ) Экспорт - - ДобавитьПараметрМетода(ТПМ, "ПолучитьИнформациюБота" , "--token", "Токен бота"); - - ДобавитьПараметрМетода(ТПМ, "ПолучитьОбновления" , "--token", "Токен бота"); - - ДобавитьПараметрМетода(ТПМ, "УстановитьWebhook" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "УстановитьWebhook" , "--url", "Адрес обработки запросов (с https://)"); - - ДобавитьПараметрМетода(ТПМ, "УдалитьWebHook" , "--token", "Токен бота"); - - ДобавитьПараметрМетода(ТПМ, "ОтправитьТекстовоеСообщение" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьТекстовоеСообщение" , "--chat", "ID чата / ID чата*ID темы"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьТекстовоеСообщение" , "--text", "Текст сообщения"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьТекстовоеСообщение" , "--keyboard", "JSON клавиатуры / файл .json клавиатуры (необяз.)", "ОбработатьПараметрТекст"); - - ДобавитьПараметрМетода(ТПМ, "ОтправитьКартинку" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьКартинку" , "--chat", "ID чата / ID чата*ID темы"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьКартинку" , "--text", "Текст сообщения"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьКартинку" , "--path", "Путь к файлу"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьКартинку" , "--keyboard", "JSON клавиатуры / файл .json клавиатуры (необяз.)", "ОбработатьПараметрТекст"); - - ДобавитьПараметрМетода(ТПМ, "ОтправитьВидео" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьВидео" , "--chat", "ID чата / ID чата*ID темы"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьВидео" , "--text", "Текст сообщения"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьВидео" , "--path", "Путь к файлу"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьВидео" , "--keyboard", "JSON клавиатуры / файл .json клавиатуры (необяз.)", "ОбработатьПараметрТекст"); - - ДобавитьПараметрМетода(ТПМ, "ОтправитьГифку" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьГифку" , "--chat", "ID чата / ID чата*ID темы"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьГифку" , "--text", "Текст сообщения"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьГифку" , "--path", "Путь к файлу"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьГифку" , "--keyboard", "JSON клавиатуры / файл .json клавиатуры (необяз.)", "ОбработатьПараметрТекст"); - - ДобавитьПараметрМетода(ТПМ, "ОтправитьАудио" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьАудио" , "--chat", "ID чата / ID чата*ID темы"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьАудио" , "--text", "Текст сообщения"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьАудио" , "--path", "Путь к файлу"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьАудио" , "--keyboard", "JSON клавиатуры / файл .json клавиатуры (необяз.)", "ОбработатьПараметрТекст"); - - ДобавитьПараметрМетода(ТПМ, "ОтправитьДокумент" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьДокумент" , "--chat", "ID чата / ID чата*ID темы"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьДокумент" , "--text", "Текст сообщения"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьДокумент" , "--path", "Путь к файлу"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьДокумент" , "--keyboard", "JSON клавиатуры / файл .json клавиатуры (необяз.)", "ОбработатьПараметрТекст"); - - ОписаниеПараметра = "Путь к JSON-файлу описания медиагруппы: - | - |{ - | ""Путь к файлу"": ""Тип медиа"", - | ... - |} - | - |Возможные типы медиа: audio, document, photo, video - |"; - - ДобавитьПараметрМетода(ТПМ, "ОтправитьМедиагруппу" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьМедиагруппу" , "--chat", "ID чата / ID чата*ID темы"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьМедиагруппу" , "--text", "Текст сообщения"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьМедиагруппу" , "--path", ОписаниеПараметра, "СоответствиеJSON"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьМедиагруппу" , "--keyboard", "JSON клавиатуры / файл .json клавиатуры (необяз.)", "ОбработатьПараметрТекст"); - - ДобавитьПараметрМетода(ТПМ, "ОтправитьМестоположение" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьМестоположение" , "--chat", "ID чата / ID чата*ID темы"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьМестоположение" , "--lat", "Географическая широта"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьМестоположение" , "--long", "Географическая долгота"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьМестоположение" , "--keyboard", "JSON клавиатуры / файл .json клавиатуры (необяз.)", "ОбработатьПараметрТекст"); - - ДобавитьПараметрМетода(ТПМ, "ОтправитьКонтакт" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьКонтакт" , "--chat", "ID чата / ID чата*ID темы"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьКонтакт" , "--name", "Имя контакта"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьКонтакт" , "--surname", "Фамилия контакта"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьКонтакт" , "--phone", "Номер телефона"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьКонтакт" , "--keyboard", "JSON клавиатуры / файл .json клавиатуры (необяз.)", "ОбработатьПараметрТекст"); - - ДобавитьПараметрМетода(ТПМ, "ОтправитьОпрос" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьОпрос" , "--chat", "ID чата / ID чата*ID темы"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьОпрос" , "--question", "Вопрос"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьОпрос" , "--options", "Варианты ответов ""['Вар1', 'Вар2', '...]""", "ОбработатьМассив"); - ДобавитьПараметрМетода(ТПМ, "ОтправитьОпрос" , "--anonymous", "Анонимный true/false. По умолчанию - true"); - - ДобавитьПараметрМетода(ТПМ, "ПереслатьСообщение" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ПереслатьСообщение" , "--message", "ID пересылаемого сообщения"); - ДобавитьПараметрМетода(ТПМ, "ПереслатьСообщение" , "--from", "Чат источник"); - ДобавитьПараметрМетода(ТПМ, "ПереслатьСообщение" , "--to", "Чат приемник"); - - ДобавитьПараметрМетода(ТПМ, "Бан" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "Бан" , "--chat" , "ID чата"); - ДобавитьПараметрМетода(ТПМ, "Бан" , "--user" , "ID пользователя"); - - ДобавитьПараметрМетода(ТПМ, "Разбан" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "Разбан" , "--chat" , "ID чата"); - ДобавитьПараметрМетода(ТПМ, "Разбан" , "--user" , "ID пользователя"); - - ДобавитьПараметрМетода(ТПМ, "СоздатьСсылкуПриглашение" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "СоздатьСсылкуПриглашение" , "--chat" , "ID чата"); - ДобавитьПараметрМетода(ТПМ, "СоздатьСсылкуПриглашение" , "--name" , "Наименование ссылки"); - ДобавитьПараметрМетода(ТПМ, "СоздатьСсылкуПриглашение" , "--expire" , "Дата истечения. Безсрочно по умолчанию"); - ДобавитьПараметрМетода(ТПМ, "СоздатьСсылкуПриглашение" , "--limit" , "Лимит пользователей. Не ограничен по умолчанию"); - - ДобавитьПараметрМетода(ТПМ, "ЗакрепитьСообщение" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ЗакрепитьСообщение" , "--chat" , "ID чата"); - ДобавитьПараметрМетода(ТПМ, "ЗакрепитьСообщение" , "--message" , "ID сообщения"); - - ДобавитьПараметрМетода(ТПМ, "ОткрепитьСообщение" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ОткрепитьСообщение" , "--chat" , "ID чата"); - ДобавитьПараметрМетода(ТПМ, "ОткрепитьСообщение" , "--message" , "ID сообщения"); - - ДобавитьПараметрМетода(ТПМ, "ПолучитьЧислоУчастников" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ПолучитьЧислоУчастников" , "--chat" , "ID чата"); - - ДобавитьПараметрМетода(ТПМ, "ПолучитьСписокИконокАватаров" , "--token", "Токен бота"); - - ДобавитьПараметрМетода(ТПМ, "СоздатьТемуФорума" , "--token" , "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "СоздатьТемуФорума" , "--chat" , "ID чата"); - ДобавитьПараметрМетода(ТПМ, "СоздатьТемуФорума" , "--name" , "Заголовок"); - ДобавитьПараметрМетода(ТПМ, "СоздатьТемуФорума" , "--icon" , "ID иконки аватара (необяз.)"); - - ДобавитьПараметрМетода(ТПМ, "ИзменитьТемуФорума" , "--token" , "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ИзменитьТемуФорума" , "--chat" , "ID чата"); - ДобавитьПараметрМетода(ТПМ, "ИзменитьТемуФорума" , "--topic" , "ID темы"); - ДобавитьПараметрМетода(ТПМ, "ИзменитьТемуФорума" , "--name" , "Новый заголовок (необяз.)"); - ДобавитьПараметрМетода(ТПМ, "ИзменитьТемуФорума" , "--icon" , "ID иконки аватара (необяз.)"); - - ДобавитьПараметрМетода(ТПМ, "ЗакрытьТемуФорума" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ЗакрытьТемуФорума" , "--chat" , "ID чата"); - ДобавитьПараметрМетода(ТПМ, "ЗакрытьТемуФорума" , "--topic", "ID темы. Главная тема по умолчанию"); - - ДобавитьПараметрМетода(ТПМ, "ОткрытьТемуФорума" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ОткрытьТемуФорума" , "--chat" , "ID чата"); - ДобавитьПараметрМетода(ТПМ, "ОткрытьТемуФорума" , "--topic", "ID темы. Главная тема по умолчанию"); - - ДобавитьПараметрМетода(ТПМ, "УдалитьТемуФорума" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "УдалитьТемуФорума" , "--chat" , "ID чата"); - ДобавитьПараметрМетода(ТПМ, "УдалитьТемуФорума" , "--topic", "ID темы"); - - ДобавитьПараметрМетода(ТПМ, "СкрытьГлавнуюТемуФорума" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "СкрытьГлавнуюТемуФорума" , "--chat" , "ID чата"); - - ДобавитьПараметрМетода(ТПМ, "ПоказатьГлавнуюТемуФорума" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ПоказатьГлавнуюТемуФорума" , "--chat" , "ID чата"); - - ДобавитьПараметрМетода(ТПМ, "ИзменитьИмяГлавнойТемыФорума" , "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ИзменитьИмяГлавнойТемыФорума" , "--chat" , "ID чата"); - ДобавитьПараметрМетода(ТПМ, "ИзменитьИмяГлавнойТемыФорума" , "--name", "Новое имя главной темы"); - - ДобавитьПараметрМетода(ТПМ, "ОчиститьСписокЗакрепленныхСообщенийТемы", "--token", "Токен бота"); - ДобавитьПараметрМетода(ТПМ, "ОчиститьСписокЗакрепленныхСообщенийТемы", "--chat" , "ID чата"); - ДобавитьПараметрМетода(ТПМ, "ОчиститьСписокЗакрепленныхСообщенийТемы", "--topic", "ID темы. Главная тема по умолчанию"); - - ДобавитьПараметрМетода(ТПМ, "СформироватьКлавиатуруПоМассивуКнопок" , "--buttons", "Массив имен кнопок ""['Кн1', 'Кн2', '...]""", "ОбработатьМассив"); - ДобавитьПараметрМетода(ТПМ, "СформироватьКлавиатуруПоМассивуКнопок" , "--under", "true - под сообщением, false - на нижней панели. По умолчанию - false"); - ДобавитьПараметрМетода(ТПМ, "СформироватьКлавиатуруПоМассивуКнопок" , "--column", "true - кнопки одна под одной, false - в ряд. По умолчанию - true"); - -КонецПроцедуры - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Процедура ДобавитьПараметрМетода(Таблица - , Знач Метод - , Знач Параметр - , Знач Описание - , Знач ВариантОбработки = "Строка") - - НовыйПараметр = Таблица.Добавить(); - НовыйПараметр.МетодПоиска = вРег(Метод); - НовыйПараметр.Метод = Метод; - НовыйПараметр.Параметр = Параметр; - НовыйПараметр.Описание = Описание; - НовыйПараметр.ВариантОбработки = ВариантОбработки; - -КонецПроцедуры - #КонецОбласти ПриСозданииОбъекта(); \ No newline at end of file