- Рефакторинг процедур общих модулей

This commit is contained in:
2025-05-21 12:41:12 +03:00
parent 91ef839c7f
commit bf54a89e2e
6 changed files with 78 additions and 26 deletions

View File

@@ -1,6 +1,6 @@
#Область ПрограммныйИнтерфейс
Функция ВыполнитьGetЗапрос(АдресРесурса, Параметры = Неопределено, ДвоичныеДанные = Ложь) Экспорт
Функция ВыполнитьGetЗапрос(Соединение, АдресРесурса, Параметры = Неопределено, ДвоичныеДанные = Ложь) Экспорт
РезультатЗапроса = Новый Структура();
РезультатЗапроса.Вставить("Успех", Ложь);
@@ -9,8 +9,6 @@
РезультатЗапроса.Вставить("ДвоичныеДанные", ДвоичныеДанные);
Попытка
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Если Параметры <> Неопределено Тогда
АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры);
КонецЕсли;
@@ -49,7 +47,7 @@
КонецФункции
Функция ВыполнитьPostЗапрос(АдресРесурса, Параметры = Неопределено, Данные = Неопределено) Экспорт
Функция ВыполнитьPostЗапрос(Соединение, АдресРесурса, Параметры = Неопределено, Данные = Неопределено) Экспорт
РезультатЗапроса = Новый Структура();
РезультатЗапроса.Вставить("Успех", Ложь);
@@ -57,8 +55,6 @@
РезультатЗапроса.Вставить("Описание", "");
Попытка
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Если Параметры <> Неопределено Тогда
АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры);
КонецЕсли;

View File

@@ -1,6 +1,6 @@
#Область ПрограммныйИнтерфейс
Функция SendMessage(ИдЧата, СообщениеДляОтправки, Клавиатура = Неопределено) Экспорт
Функция SendMessage(ИдЧата, СообщениеДляОтправки, РежимРазметки = Неопределено, Клавиатура = Неопределено) Экспорт
ТелоЗапроса = Новый Структура("chat_id, text", ИдЧата, СообщениеДляОтправки);
@@ -8,8 +8,15 @@
ТелоЗапроса.Вставить("reply_markup", Клавиатура);
КонецЕсли;
Если РежимРазметки <> Неопределено Тогда
Если РежимРазметки = Перечисления.ТелеграмРежимРазметки.HTML ИЛИ РежимРазметки = Перечисления.ТелеграмРежимРазметки.Markdown Тогда
ТелоЗапроса.Вставить("parse_mode", Строка(РежимРазметки));
КонецЕсли;
КонецЕсли;
АдресРесурса = АдресРесурсаПоИмениМетода("sendMessage");
Возврат HttpОбщегоНазначения.ВыполнитьPostЗапрос(АдресРесурса,, ТелоЗапроса);
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьPostЗапрос(Соединение, АдресРесурса,, ТелоЗапроса);
КонецФункции
@@ -17,21 +24,24 @@
ПараметрыЗапроса = Новый Структура("url", АдресВебхук);
АдресРесурса = АдресРесурсаПоИмениМетода("setWebhook");
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса, ПараметрыЗапроса);
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(Соединение, АдресРесурса, ПараметрыЗапроса);
КонецФункции
Функция DeleteWebhook() Экспорт
АдресРесурса = АдресРесурсаПоИмениМетода("deleteWebhook");
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса);
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(Соединение, АдресРесурса);
КонецФункции
Функция GetWebhookInfo() Экспорт
АдресРесурса = АдресРесурсаПоИмениМетода("getWebhookInfo");
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса);
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(Соединение, АдресРесурса);
КонецФункции
@@ -41,7 +51,8 @@
Формат(ТелеграмОбщегоНазначения.ИдПоследнегоСообщения() + 1, "ЧГ=0"));
ПараметрыЗапроса = Новый Структура("offset", Смещение);
АдресРесурса = АдресРесурсаПоИмениМетода("getUpdates");
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса, ПараметрыЗапроса);
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(Соединение, АдресРесурса, ПараметрыЗапроса);
КонецФункции
@@ -49,14 +60,16 @@
АдресРесурса = АдресРесурсаПоИмениМетода("getFile");
ПараметрыЗапроса = Новый Структура("file_id", ИдФайла);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса, ПараметрыЗапроса);
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(Соединение, АдресРесурса, ПараметрыЗапроса);
КонецФункции
Функция GetMe() Экспорт
АдресРесурса = АдресРесурсаПоИмениМетода("getMe");
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса);
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(Соединение, АдресРесурса);
КонецФункции
@@ -66,7 +79,8 @@
Разделитель = СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
ДвоичныеДанныеДокумента = ДвоичныеДанныеДокумента(ИдЧата, ДокументДляОтправки, Надпись, БезУведомления, Разделитель);
ДанныеДокумента = Новый Структура("Разделитель, ДвоичныеДанные", Разделитель, ДвоичныеДанныеДокумента);
Возврат HttpОбщегоНазначения.ВыполнитьPostЗапрос(АдресРесурса,, ДанныеДокумента);
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьPostЗапрос(Соединение, АдресРесурса,, ДанныеДокумента);
КонецФункции
@@ -84,7 +98,8 @@
Разделитель = СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
ДвоичныеДанныеФото = ДвоичныеДанныеФайла(ФайлДляОтправки, ИмяФайла, "image/jpeg", "photo", Разделитель);
ДанныеФото = Новый Структура("Разделитель, ДвоичныеДанные", Разделитель, ДвоичныеДанныеФото);
Возврат HttpОбщегоНазначения.ВыполнитьPostЗапрос(АдресРесурса, ПараметрыЗапроса, ДанныеФото);
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьPostЗапрос(Соединение, АдресРесурса, ПараметрыЗапроса, ДанныеФото);
КонецФункции

View File

@@ -107,7 +107,8 @@
Функция ПолучитьФайлССервераТелеграм(ПутьКФайлуНаСервере) Экспорт
АдресРесурса = СтрШаблон("file/bot%1/%2", ТелеграмПовторноеИспользование.ТелеграмТокен(), ПутьКФайлуНаСервере);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса,, Истина);
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(Соединение, АдресРесурса,, Истина);
КонецФункции

View File

@@ -12,18 +12,40 @@
Ответ = ТелеграмМетодыВызовСервера.GetUpdates();
Если Ответ.Успех Тогда
МассивРядов = Новый Массив;
МассивКнопок = ТелеграмРаботаСКлавиатурой.РядКнопок("один;два;три");
МассивРядов.Добавить(МассивКнопок);
МассивКнопок = ТелеграмРаботаСКлавиатурой.РядКнопок("Выбрать конфигурацию;Актуальная версия;Калькулятор обновлений");
МассивРядов.Добавить(МассивКнопок);
Клавиатура = ТелеграмРаботаСКлавиатурой.КлавиатураОтвета(МассивРядов, Истина, Истина);
//МассивРядов = Новый Массив;
//МассивКнопок = ТелеграмРаботаСКлавиатурой.РядКнопок("один;два;три");
//МассивРядов.Добавить(МассивКнопок);
//МассивКнопок = ТелеграмРаботаСКлавиатурой.РядКнопок("Выбрать конфигурацию;Актуальная версия;Калькулятор обновлений");
//МассивРядов.Добавить(МассивКнопок);
//Клавиатура = ТелеграмРаботаСКлавиатурой.КлавиатураОтвета(МассивРядов, Истина, Истина);
//
//МассивСообщенийТелеграм = ТелеграмОбщегоНазначения.ОбновленияТелеграм(Ответ.Тело);
//Для каждого СообщениеТелеграм Из МассивСообщенийТелеграм Цикл
// ТелеграмОбщегоНазначения.СохранитьСообщениеВБазу(СообщениеТелеграм);
// ТелеграмМетодыВызовСервера.SendMessage(СообщениеТелеграм.ИдЧата, СообщениеТелеграм.Сообщение.text, Клавиатура);
//КонецЦикла;
МассивСообщенийТелеграм = ТелеграмОбщегоНазначения.ОбновленияТелеграм(Ответ.Тело);
Для каждого СообщениеТелеграм Из МассивСообщенийТелеграм Цикл
ТелеграмОбщегоНазначения.СохранитьСообщениеВБазу(СообщениеТелеграм);
ТелеграмМетодыВызовСервера.SendMessage(СообщениеТелеграм.ИдЧата, СообщениеТелеграм.Сообщение.text, Клавиатура);
Если СообщениеТелеграм.Сообщение.text = "Конфигурации" Тогда
ТекстОтвета = "Комплексная автоматизация" + Символы.ПС +
"Бухгалтерия предприятия" + Символы.ПС +
"Зарплата и управление персоналом" + Символы.ПС +
"Управление торговлей";
ТелеграмМетодыВызовСервера.SendMessage(СообщениеТелеграм.ИдЧата, ТекстОтвета);
ИначеЕсли СообщениеТелеграм.Сообщение.text = "Подписки" Тогда
МассивПодписок = РаботаСОбновлениямиВызовСервера.КонфигурацииИзПодписки(СообщениеТелеграм.ИдЧата);
ТекстОтвета = "";
Для каждого Конфигурация Из МассивПодписок Цикл
ТекстОтвета = ТекстОтвета + СтрШаблон("%1(%2)%3",Конфигурация.Наименование, Конфигурация.ТекущаяВерсия, Символы.ПС);
КонецЦикла;
ТелеграмМетодыВызовСервера.SendMessage(СообщениеТелеграм.ИдЧата, ТекстОтвета);
КонецЕсли;
//ТелеграмМетодыВызовСервера.SendMessage(СообщениеТелеграм.ИдЧата, СообщениеТелеграм.Сообщение.text);
КонецЦикла;
КонецЕсли;
Возврат Ответ;
@@ -53,7 +75,24 @@
&НаКлиенте
Процедура PostЗапрос(Команда)
Ответ = ТелеграмМетодыВызовСервера.SendMessage(248415372, СообщениеДляОтправки);
МассивРядов = Новый Массив;
МассивКнопок = ТелеграмРаботаСКлавиатурой.РядКнопок("Конфигурации;Подписки");
МассивРядов.Добавить(МассивКнопок);
//МассивКнопок = ТелеграмРаботаСКлавиатурой.РядКнопок("Выбрать конфигурацию;Актуальная версия;Калькулятор обновлений");
//ВторойРядКнопок = Новый Массив;
//Эмоджи = Символ(55357) + Символ(57005);
//Эмоджи = СтрЗаменить("\xF0\x9F\x94\x94", "\x", "%");
//Эмоджи = "&#128513";
//эмодзиДа = "%f0%9f%91%8d";
//эмодзиНет = "%f0%9f%91%8e";
//ВторойРядКнопок.Добавить(ТелеграмРаботаСКлавиатурой.КнопкаКлавиатуры(Эмоджи));
//МассивРядов.Добавить(ВторойРядКнопок);
Клавиатура = ТелеграмРаботаСКлавиатурой.КлавиатураОтвета(МассивРядов, Истина, Истина);
Ответ = ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, СообщениеДляОтправки,
ПредопределенноеЗначение("Перечисление.ТелеграмРежимРазметки.HTML"), Клавиатура);
Если НЕ Ответ = Неопределено Тогда
ВывестиОтвет(Ответ);
КонецЕсли;

View File

@@ -28,6 +28,7 @@
<xr:Item xsi:type="xr:MDObjectRef">Document.ЛогHttpЗапроса</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">Catalog.ТелеграмДокумент</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonPicture.КартинкаБот</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">Enum.ТелеграмРежимРазметки</xr:Item>
</Content>
</Properties>
<ChildObjects/>

View File

@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<VERSION>5</VERSION>
<VERSION>6</VERSION>