From bf54a89e2eb08ebfa1fcd36b89901f2bb427e537 Mon Sep 17 00:00:00 2001 From: kashey Date: Wed, 21 May 2025 12:41:12 +0300 Subject: [PATCH] =?UTF-8?q?-=20=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D0=B4?= =?UTF-8?q?=D1=83=D1=80=20=D0=BE=D0=B1=D1=89=D0=B8=D1=85=20=D0=BC=D0=BE?= =?UTF-8?q?=D0=B4=D1=83=D0=BB=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HttpОбщегоНазначения/Ext/Module.bsl | 8 +-- .../ТелеграмМетодыВызовСервера/Ext/Module.bsl | 35 ++++++++---- .../ТелеграмОбщегоНазначения/Ext/Module.bsl | 3 +- .../Forms/Форма/Ext/Form/Module.bsl | 55 ++++++++++++++++--- src/cf/Subsystems/ТелеграмБот.xml | 1 + src/cf/VERSION | 2 +- 6 files changed, 78 insertions(+), 26 deletions(-) diff --git a/src/cf/CommonModules/HttpОбщегоНазначения/Ext/Module.bsl b/src/cf/CommonModules/HttpОбщегоНазначения/Ext/Module.bsl index 6a3c3db..cf02b5f 100644 --- a/src/cf/CommonModules/HttpОбщегоНазначения/Ext/Module.bsl +++ b/src/cf/CommonModules/HttpОбщегоНазначения/Ext/Module.bsl @@ -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); - Если Параметры <> Неопределено Тогда АдресРесурса = АдресРесурсаСПараметрами(АдресРесурса, Параметры); КонецЕсли; diff --git a/src/cf/CommonModules/ТелеграмМетодыВызовСервера/Ext/Module.bsl b/src/cf/CommonModules/ТелеграмМетодыВызовСервера/Ext/Module.bsl index e607a7c..77c73a5 100644 --- a/src/cf/CommonModules/ТелеграмМетодыВызовСервера/Ext/Module.bsl +++ b/src/cf/CommonModules/ТелеграмМетодыВызовСервера/Ext/Module.bsl @@ -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Запрос(Соединение, АдресРесурса, ПараметрыЗапроса, ДанныеФото); КонецФункции diff --git a/src/cf/CommonModules/ТелеграмОбщегоНазначения/Ext/Module.bsl b/src/cf/CommonModules/ТелеграмОбщегоНазначения/Ext/Module.bsl index af6f68a..115c103 100644 --- a/src/cf/CommonModules/ТелеграмОбщегоНазначения/Ext/Module.bsl +++ b/src/cf/CommonModules/ТелеграмОбщегоНазначения/Ext/Module.bsl @@ -107,7 +107,8 @@ Функция ПолучитьФайлССервераТелеграм(ПутьКФайлуНаСервере) Экспорт АдресРесурса = СтрШаблон("file/bot%1/%2", ТелеграмПовторноеИспользование.ТелеграмТокен(), ПутьКФайлуНаСервере); - Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(АдресРесурса,, Истина); + Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,, Новый ЗащищенноеСоединениеOpenSSL); + Возврат HttpОбщегоНазначения.ВыполнитьGetЗапрос(Соединение, АдресРесурса,, Истина); КонецФункции diff --git a/src/cf/DataProcessors/РаботаССообщениями/Forms/Форма/Ext/Form/Module.bsl b/src/cf/DataProcessors/РаботаССообщениями/Forms/Форма/Ext/Form/Module.bsl index eddcbaf..aa61bd9 100644 --- a/src/cf/DataProcessors/РаботаССообщениями/Forms/Форма/Ext/Form/Module.bsl +++ b/src/cf/DataProcessors/РаботаССообщениями/Forms/Форма/Ext/Form/Module.bsl @@ -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", "%"); + //Эмоджи = "😁"; + //эмодзиДа = "%f0%9f%91%8d"; + //эмодзиНет = "%f0%9f%91%8e"; + //ВторойРядКнопок.Добавить(ТелеграмРаботаСКлавиатурой.КнопкаКлавиатуры(Эмоджи)); + //МассивРядов.Добавить(ВторойРядКнопок); + Клавиатура = ТелеграмРаботаСКлавиатурой.КлавиатураОтвета(МассивРядов, Истина, Истина); + + + Ответ = ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, СообщениеДляОтправки, + ПредопределенноеЗначение("Перечисление.ТелеграмРежимРазметки.HTML"), Клавиатура); Если НЕ Ответ = Неопределено Тогда ВывестиОтвет(Ответ); КонецЕсли; diff --git a/src/cf/Subsystems/ТелеграмБот.xml b/src/cf/Subsystems/ТелеграмБот.xml index 47928dc..311f1b6 100644 --- a/src/cf/Subsystems/ТелеграмБот.xml +++ b/src/cf/Subsystems/ТелеграмБот.xml @@ -28,6 +28,7 @@ Document.ЛогHttpЗапроса Catalog.ТелеграмДокумент CommonPicture.КартинкаБот + Enum.ТелеграмРежимРазметки diff --git a/src/cf/VERSION b/src/cf/VERSION index 0b77ea9..aed039b 100644 --- a/src/cf/VERSION +++ b/src/cf/VERSION @@ -1,2 +1,2 @@  -5 +6