Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 3 additions & 5 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
GRAFANABOT_TELEGRAMM_TOKEN=12365:jahsJHFhvdgjaJGHF
GRAFANABOT_TELEGRAMM_USERS=66660503,3883884329
GRAFANABOT_TELEGRAMM_GROUPS=-3455345434,-6786786868
GRAFANABOT_GRAFANA_URL=http://grafana.local:3000
GRAFANABOT_GRAFANA_TOKEN=sldjfnertmhcenhtkehw==
SHAREBOT_TELEGRAMM_TOKEN=12365:jahsJHFhvdgjaJGHF
SHAREBOT_TELEGRAMM_USERS=66660503,3883884329
SHAREBOT_TELEGRAMM_GROUPS=-3455345434,-6786786868
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
oscript_modules/
.env
unpack/
bin/
db.db
4 changes: 2 additions & 2 deletions autumn-properties.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"HEADER": "sharebsl_bot"
},
"UNPACK": "py",
"SHARE_SERVICE": "ПубликаторGist,ПубликаторЕщеКакойНибудь",
"SHARE_SERVICE": "ПубликаторGist, ПубликаторЕщеКакойНибудь",
"FILE_MAX_SIZE": 30000000,
"data": {
"ИсточникиДанных": {
Expand All @@ -21,7 +21,7 @@
},
"logos": {
"logger": {
"share_bsl.logger": "DEBUG"
"oscript.lib.share_bsl": {"level":"DEBUG", "stringlayout":"%Уровень%:%ДатаВремя% - %Сообщение%"}
}
}
}
Binary file removed bin/726598656/emul.epf
Binary file not shown.
2 changes: 1 addition & 1 deletion docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ COPY ./main.os .

RUN opm install opm && opm build && cp share-bot-*.ospx bot.ospx && opm install -f bot.ospx

CMD ["grafana2telegramm-bot"]
CMD ["share-bot"]
22 changes: 22 additions & 0 deletions js.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{'update_id': 726598677,'callback_query':
{'id':'988241522275206274','from':

{'id': 230092909,'is_bot': false,'first_name':'Павел','last_name':'Чегодаев','username':'Un_tru','language_code':'ru','is_premium': true
},'message':

{'message_id': 437,'from': {'id': 7967956539,'is_bot': true,'first_name':'sharebsl_bot','username':'sharebsl_bot'
},'chat': {'id': 230092909,'first_name':'Павел','last_name':'Чегодаев','username':'Un_tru','type':'private'
},'date': 1752007338,'text':'Ранее вы уже публиковали файл с таким именем, заменить или выложить еще раз?','reply_markup': {'inline_keyboard': [
[
{'text':'08.07.2025 22: 02: 15','callback_data':'1'
}
],
[
{'text':'Сделать новую публикацию','callback_data':'NEW_8'
}
]
]
}
},'chat_instance':'-7815209320371019100','data':'NEW_8'
}
}
1 change: 1 addition & 0 deletions main.os
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#Использовать "./src/core"
#Использовать "./src/controller"
#Использовать "./src/data"
#Использовать autumn
#использовать autumn-annotation-types
#Использовать autumn-logos
Expand Down
5 changes: 3 additions & 2 deletions packagedef
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Описание.Имя("share-bot")
.Версия("1.0.0")
.Автор("Чегодаев Павел")
.АдресАвтора("https://github.com/asosnoviy")
.АдресАвтора("https://github.com/untru")
.Описание("Отправка в телеграмм исходников и их разбор")
//.ВерсияСреды("2.0.0")
.ВключитьФайл("src")
Expand All @@ -11,7 +11,8 @@
.ЗависитОт("oint")
.ЗависитОт("1connector")
.ЗависитОт("autumn-annotation-types")
.ЗависитОт("autumn-logos")
.ЗависитОт("autumn-async")
.ЗависитОт("autumn-data")

.ИсполняемыйФайл("main.os", "share-bot")
;
36 changes: 31 additions & 5 deletions src/controller/Классы/КомандаКлавиатура.os
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
&Деталька("TELEGRAMM.TOKEN")
Перем Токен;

&Пластилин
Перем МенеджерПубликаций;

&Желудь
&Прозвище("Команда")
Процедура ПриСозданииОбъекта()
Expand All @@ -18,12 +21,35 @@

Процедура Обработать(Сообщение) Экспорт

НажатаяКнопка = Сообщение["callback_query"]["вфеф"];
Если НажатаяКнопка = "NEW" Тогда


Сообщить(OPI_Инструменты.JSONСтрокой(Сообщение, , Ложь, Ложь));
НомерСообщения = Сообщение["update_id"];

КонецЕсли;
СообщениеНажатиеКнопки = Сообщение["callback_query"]["message"];
ЧатИД = СообщениеНажатиеКнопки["chat"]["id"];
ПользовательИД = СообщениеНажатиеКнопки["from"]["id"];

Клавиши = СообщениеНажатиеКнопки["reply_markup"]["inline_keyboard"];

КнопкаНовая = Клавиши[Клавиши.ВГраница()]["callback_data"];

ИнформацияОФайле = МенеджерПубликаций.ИнформацияОФайлеПоИдентификатору(КнопкаНовая);
НажатаяКнопка = Сообщение["callback_query"]["data"];

ДвоичныеДанные = OPI_Telegram.СкачатьФайл(Токен, ИнформацияОФайле.ИДФайла);

ДанныеДляРазбораФайла = МенеджерПубликаций.НовыйДанныеДляРазбораФайла();
Если КнопкаНовая = НажатаяКнопка Тогда
ДанныеДляРазбораФайла.Обновление = Истина;
КонецЕсли;

ДанныеДляРазбораФайла.ПользовательИД = ПользовательИД;
ДанныеДляРазбораФайла.ИДПубликации = НомерСообщения;
ДанныеДляРазбораФайла.ДвоичныеДанные = ДвоичныеДанные;
ДанныеДляРазбораФайла.ИДФайла = ИДФайла;
ДанныеДляРазбораФайла.ИмяФайла = ИнформацияОФайле.ИмяФайла;

ТекстОтвета = МенеджерПубликаций.ОбработатьФайл(ДанныеДляРазбораФайла);
OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, ЧатИД, ТекстОтвета);


КонецПроцедуры
8 changes: 6 additions & 2 deletions src/controller/Классы/КомандаФайл.os
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
&Пластилин
Перем МенеджерПубликаций;


&Желудь
&Прозвище("Команда")
Процедура ПриСозданииОбъекта()
Expand Down Expand Up @@ -39,13 +40,15 @@

ОтправляемыйФайл = МенеджерПубликаций.НовыйОтправляемыйФайл();
ОтправляемыйФайл.ПользовательИД = ПользовательИД;
ОтправляемыйФайл.ИмяФайла = ИмяФайла;
ОтправляемыйФайл.ИмяФайла = ИмяФайла;
ОтправляемыйФайл.ИДФайла = ИДФайла;

ПрошлыеПубликации = МенеджерПубликаций.ПолучитьСписокПубликаций(ОтправляемыйФайл);
Если ПрошлыеПубликации.Количество() Тогда

ТекстОтвета = "Ранее вы уже публиковали файл с таким именем, заменить или выложить еще раз?";
Клавиатура = СформироватьКлавиатуруПоМассивуКнопок(ПрошлыеПубликации);
МенеджерПубликаций.СохранитьИнформациюОФайле(ОтправляемыйФайл);
OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, ЧатИД, ТекстОтвета, Клавиатура);
Возврат;

Expand All @@ -60,7 +63,8 @@
ДанныеДляРазбораФайла.ИДПубликации = НомерСообщения;
ДанныеДляРазбораФайла.ДвоичныеДанные = ДвоичныеДанные;
ДанныеДляРазбораФайла.ИДФайла = ИДФайла;

ДанныеДляРазбораФайла.Обновление = Ложь;

ТекстОтвета = МенеджерПубликаций.ОбработатьФайл(ДанныеДляРазбораФайла);
OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, ЧатИД, ТекстОтвета);

Expand Down
5 changes: 4 additions & 1 deletion src/core/Классы/Декомпилятор.os
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@
&Деталька("UNPACK")
Перем СпособРазбора; //py, exe

&Лог(Значение = "share_bsl.logger.DEBUG", УчитыватьИмяКласса = Ложь)
&ЛогПубликация
Перем Лог;

&Пластилин
Перем КомандаЗапуска;

&Желудь
Процедура ПриСозданииОбъекта()

Expand Down
11 changes: 6 additions & 5 deletions src/core/Классы/Запускатор.os
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
&Пластилин("ТелеграммБот")
Перем ТелеграммБот;

&Лог(Значение = "share_bsl.logger.DEBUG", УчитыватьИмяКласса = Ложь)
&ЛогПубликация
Перем Лог;

&Рогатка
Expand All @@ -14,15 +14,16 @@

Процедура ПриЗапускеПриложения() Экспорт

Пока Истина Цикл
КоличествоПопытокЗапуска = 10;
Для Счетчик = 1 По КоличествоПопытокЗапуска Цикл

Попытка
Лог.Информация("Старт");
ТелеграммБот.Запустить();
Исключение
Лог.Ошибка(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;

КонецПопытки;
КонецЦикла;

Лог.Ошибка("Не удалось запустить бот");

КонецПроцедуры
5 changes: 5 additions & 0 deletions src/core/Классы/ЛогАннотация.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
&Аннотация("ЛогПубликация")
&Лог("oscript.lib.share_bsl")
Процедура ПриСозданииОбъекта()

КонецПроцедуры
93 changes: 72 additions & 21 deletions src/core/Классы/МенеджерПубликаций.os
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,21 @@
&Пластилин
Перем ХранилищеСущностейИсторияПубликаций;

&Пластилин
Перем ХранилищеСущностейИДФайлов;

&Желудь
Процедура ПриСозданииОбъекта()

КонецПроцедуры


// Обработка входящего файла, разбор и публикация
// Параметры:
// Структура - см НовыйДанныеДляРазбораФайла
//
// Возвращаемое значение:
// Строка - ссылка на публикацию кода
//
Функция ОбработатьФайл(ДанныеДляРазбораФайла) Экспорт

Каталог = "unpack/" + ДанныеДляРазбораФайла.ИДПубликации;
Expand All @@ -31,9 +40,8 @@

Декомпилятор.РазобратьФайл(ПутьКФайлу, Каталог);
ТекстыМодулей = РаботаСМодулями.ТекстыМодулей(Каталог);
ДанныеПубликации = Опубликовать(ТекстыМодулей);
СохранитьЗаписьОФайле(ДанныеДляРазбораФайла.ПользовательИД,
ДанныеДляРазбораФайла.ИмяФайла, ДанныеПубликации.ИДПубликации, ДанныеДляРазбораФайла.ИДФайла);
ДанныеПубликации = Опубликовать(ТекстыМодулей, ДанныеДляРазбораФайла);
СохранитьЗаписьОФайле(ДанныеДляРазбораФайла);

УдалитьФайлы(Каталог);
УдалитьФайлы(КаталогИсходник);
Expand All @@ -42,16 +50,26 @@

КонецФункции

// Получить список прошлых публикаций
// Параметры:
// Структура - см НовыйОтправляемыйФайл
//
// Возвращаемое значение:
// Соответствие
// * Ключ - Дата публикации
// * Значение - Идентификатор записи БД
Функция ПолучитьСписокПубликаций(ОтправляемыйФайл) Экспорт

ИдентификаторИДФайла = НайтиИдентификаторПоИДФайла(ОтправляемыйФайл.ИДФайла);

ПрошлыеПубликации = Новый Соответствие;
Сущности = НайтиЗаписьОФайле(ОтправляемыйФайл.ПользовательИД, ОтправляемыйФайл.ИмяФайла);
Если Сущности.Количество() Тогда

Для Каждого Сущность Из Сущности Цикл
ПрошлыеПубликации.Вставить(Строка(Сущность.ДатаОтправки), Сущность.Идентификатор);
КонецЦикла;
ПрошлыеПубликации.Вставить("Сделать новую публикацию", "NEW");
ПрошлыеПубликации.Вставить("Сделать новую публикацию", ИдентификаторИДФайла);

Возврат ПрошлыеПубликации;
КонецЕсли;
Expand All @@ -65,6 +83,7 @@
Результат = Новый Структура();
Результат.Вставить("ПользовательИД");
Результат.Вставить("ИмяФайла");
Результат.Вставить("ИДФайла");
Возврат Результат;

КонецФункции
Expand All @@ -81,18 +100,9 @@

Возврат Результат;

КонецФункции
Функция НайтиЗаписьОФайле(ИДПользователя, ИмяФайла)

Отбор = Новый Соответствие;
Отбор.Вставить("ИДПользователя", ИДПользователя);
Отбор.Вставить("ИмяФайла", ИмяФайла);
Сущности = МенеджерСущностей.Получить(Тип("ИсторияПубликаций"), Отбор);
Возврат Сущности;

КонецФункции

Функция Опубликовать(ТекстыМодулей)
Функция Опубликовать(ТекстыМодулей, ДанныеДляРазбораФайла)

Результат = Новый Структура("СсылкаНаПубликацию, ИДПубликации");
Публикаторы = Поделка.НайтиЖелуди("Публикатор", , "Соответствие");
Expand All @@ -116,14 +126,55 @@

КонецФункции

Процедура СохранитьЗаписьОФайле(ИДПользователя, ИмяФайла, ИДПубликации, ИДФайла)
#Область РаботаСБазой

Процедура СохранитьИнформациюОФайле(ИнформациюОФайле) Экспорт

ИсторияПубликаций = ХранилищеСущностейИДФайлов.СоздатьЭлемент();
ИсторияФайлов.ИДФайла = ИнформациюОФайле.ИДФайла;
ИсторияФайлов.ИмяФайла = ИнформациюОФайле.ИДФайла;
ИсторияПубликаций.Сохранить();

КонецПроцедуры

Функция НайтиЗаписьОФайле(ИДПользователя, ИмяФайла)

Отбор = Новый Соответствие;
Отбор.Вставить("ИДПользователя", ИДПользователя);
Отбор.Вставить("ИмяФайла", ИмяФайла);
Сущности = МенеджерСущностей.Получить(Тип("ИсторияПубликаций"), Отбор);
Возврат Сущности;

КонецФункции

Функция ИнформацияОФайлеПоИдентификатору(Идентификатор) Экспорт

Отбор = Новый Соответствие;
Отбор.Вставить("Идентификатор", Идентификатор);
Сущность = МенеджерСущностей.ПолучитьОдно(Тип("ИДФайлов"), Отбор);
Возврат Сущность;

КонецФункции

Функция ИнформацияОФайлеПоИД(ИДФайла) Экспорт

Отбор = Новый Соответствие;
Отбор.Вставить("ИДФайла", ИДФайла);
Сущность = МенеджерСущностей.ПолучитьОдно(Тип("ИДФайлов"), Отбор);
Возврат Сущность;

КонецФункции

Процедура СохранитьЗаписьОФайле(ДанныеФайла)

ИсторияПубликаций = ХранилищеСущностейИсторияПубликаций.СоздатьЭлемент();
ИсторияПубликаций.ИДПользователя = ИДПользователя;
ИсторияПубликаций.ИмяФайла = ИмяФайла;
ИсторияПубликаций.ИДПользователя = ДанныеФайла.ИДПользователя;
ИсторияПубликаций.ИмяФайла = ДанныеФайла.ИмяФайла;
ИсторияПубликаций.ДатаОтправки = ТекущаяДата();
ИсторияПубликаций.ИДПубликации = ИДПубликации;
ИсторияПубликаций.ИДФайла = ИДФайла;
ИсторияПубликаций.ИДПубликации = ДанныеФайла.ИДПубликации;
ИсторияПубликаций.ИДФайла = ДанныеФайла.ИДФайла;
ИсторияПубликаций.Сохранить();

КонецПроцедуры
КонецПроцедуры
#КонецОбласти

Loading
Loading