1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-02-09 13:47:03 +02:00

Механизм формирования схемы для CLI

This commit is contained in:
Anton 2024-03-23 18:09:28 +03:00
parent 5061aa6788
commit ec8fc5e081
4 changed files with 300 additions and 329 deletions

View File

@ -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 клавиатуры

View File

@ -0,0 +1 @@


154
cli/parse.os Normal file
View File

@ -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]);
МодульСоставаОПИ.ДобавитьСтроку(Символы.ПС);
МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока = ТаблицаСостава.Добавить();");
МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Библиотека = """ + СоответствиеКомандМодулей.Получить(ТекущийМодуль) + """;");
МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Модуль = """ + ТекущийМодуль + """;");
МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Метод = """ + ИмяМетода + """;");
МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.МетодПоиска = """ + вРег(ИмяМетода) + """;");
МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Параметр = """ + Имя + """;");
МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Описание = """ + Описание + """;");
МодульСоставаОПИ.ДобавитьСтроку(" НоваяСтрока.Обработка = """ + Обработка + """;");
МодульСоставаОПИ.ДобавитьСтроку(Символы.ПС);
КонецПроцедуры
ПриСозданииОбъекта();

View File

@ -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");
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ДобавитьПараметрМетода(Таблица
, Знач Метод
, Знач Параметр
, Знач Описание
, Знач ВариантОбработки = "Строка")
НовыйПараметр = Таблица.Добавить();
НовыйПараметр.МетодПоиска = вРег(Метод);
НовыйПараметр.Метод = Метод;
НовыйПараметр.Параметр = Параметр;
НовыйПараметр.Описание = Описание;
НовыйПараметр.ВариантОбработки = ВариантОбработки;
КонецПроцедуры
#КонецОбласти
ПриСозданииОбъекта();