mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-01-24 05:36:29 +02:00
Telegram: функции форума
This commit is contained in:
parent
211c0b3847
commit
e6d800fa3a
@ -37,7 +37,9 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция ПолучитьИнформациюБота(Знач Токен) Экспорт
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/getMe");
|
||||
URL = "api.telegram.org/bot" + Токен + "/getMe";
|
||||
Ответ = OPI_Инструменты.Get(URL);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
@ -51,7 +53,8 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция ПолучитьОбновления(Знач Токен) Экспорт
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/getUpdates");
|
||||
URL = "api.telegram.org/bot" + Токен + "/getUpdates";
|
||||
Ответ = OPI_Инструменты.Get(URL);
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
@ -69,7 +72,9 @@
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("url", URL);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/setWebHook", Параметры_);
|
||||
URL = "api.telegram.org/bot" + Токен + "/setWebHook";
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
@ -83,7 +88,8 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция УдалитьWebhook(Знач Токен) Экспорт
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/deleteWebHook");
|
||||
URL = "api.telegram.org/bot" + Токен + "/deleteWebHook";
|
||||
Ответ = OPI_Инструменты.Get(URL);
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
@ -201,15 +207,16 @@
|
||||
Функция ОтправитьТекстовоеСообщение(Знач Токен, Знач IDЧата, Знач Текст, Знач Клавиатура = "") Экспорт
|
||||
|
||||
OPI_Инструменты.ЗаменитьСпецСимволы(Текст);
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("text", Текст);
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("text" , Текст);
|
||||
Параметры_.Вставить("reply_markup", Клавиатура);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/sendMessage", Параметры_);
|
||||
|
||||
ДобавитьИдентификаторЧата(IDЧата, Параметры_);
|
||||
|
||||
URL = "api.telegram.org/bot" + Токен + "/sendMessage";
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
@ -323,56 +330,26 @@
|
||||
|
||||
OPI_Инструменты.ЗаменитьСпецсимволы(Текст);
|
||||
|
||||
URL = "api.telegram.org/bot" + Токен + "/sendMediaGroup";
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
СтруктураФайлов = Новый Структура;
|
||||
Медиа = Новый Массив;
|
||||
Счетчик = 0;
|
||||
СтруктураФайлов = Новый Структура;
|
||||
Медиа = Новый Массив;
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("caption", Текст);
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("caption" , Текст);
|
||||
Параметры_.Вставить("reply_markup", Клавиатура);
|
||||
|
||||
ДобавитьИдентификаторЧата(IDЧата, Параметры_);
|
||||
СформироватьМассивМедиа(СоответствиеФайлов, Текст, СтруктураФайлов, Медиа);
|
||||
|
||||
Параметры_.Вставить("media", Медиа);
|
||||
|
||||
Для Каждого ТекущийФайл Из СоответствиеФайлов Цикл
|
||||
|
||||
Если Не ТипЗнч(ТекущийФайл.Ключ) = Тип("ДвоичныеДанные") Тогда
|
||||
ДД = Новый ДвоичныеДанные(ТекущийФайл.Ключ);
|
||||
ЭтотФайл = Новый Файл(ТекущийФайл.Ключ);
|
||||
ИмяМедиа = ТекущийФайл.Значение + Строка(Счетчик) + ?(ТекущийФайл.Значение = "document",
|
||||
ЭтотФайл.Расширение, "");
|
||||
ПолноеИмяМедиа = СтрЗаменить(ИмяМедиа, ".", "___");
|
||||
Иначе
|
||||
ДД = ТекущийФайл.Ключ;
|
||||
ИмяМедиа = ТекущийФайл.Значение + Строка(Счетчик);
|
||||
ПолноеИмяМедиа = ИмяМедиа;
|
||||
КонецЕсли;
|
||||
|
||||
СтруктураФайлов.Вставить(ПолноеИмяМедиа, ДД);
|
||||
|
||||
СтруктураМедиа = Новый Структура;
|
||||
СтруктураМедиа.Вставить("type", ТекущийФайл.Значение);
|
||||
СтруктураМедиа.Вставить("media", "attach://" + ИмяМедиа);
|
||||
|
||||
Если Счетчик = 0 Тогда
|
||||
СтруктураМедиа.Вставить("caption", Текст);
|
||||
КонецЕсли;
|
||||
|
||||
Медиа.Добавить(СтруктураМедиа);
|
||||
|
||||
Счетчик = Счетчик + 1;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Параметры_.Вставить("media", OPI_Инструменты.JSONСтрокой(Медиа));
|
||||
|
||||
Ответ = OPI_Инструменты.PostMultipart("api.telegram.org/bot" + Токен + "/sendMediaGroup", Параметры_,
|
||||
СтруктураФайлов, "mixed");
|
||||
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры_, СтруктураФайлов, "mixed");
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
// BSLLS:Typo-on
|
||||
|
||||
// Отправить местоположение.
|
||||
//
|
||||
@ -388,15 +365,17 @@
|
||||
Функция ОтправитьМестоположение(Знач Токен, Знач IDЧата, Знач Широта, Знач Долгота, Знач Клавиатура = "") Экспорт
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
|
||||
URL = "api.telegram.org/bot" + Токен + "/sendLocation";
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("latitude", OPI_Инструменты.ЧислоВСтроку(Широта));
|
||||
Параметры_.Вставить("longitude", OPI_Инструменты.ЧислоВСтроку(Долгота));
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("latitude" , OPI_Инструменты.ЧислоВСтроку(Широта));
|
||||
Параметры_.Вставить("longitude" , OPI_Инструменты.ЧислоВСтроку(Долгота));
|
||||
Параметры_.Вставить("reply_markup", Клавиатура);
|
||||
|
||||
ДобавитьИдентификаторЧата(IDЧата, Параметры_);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/sendLocation", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
@ -417,16 +396,18 @@
|
||||
Функция ОтправитьКонтакт(Знач Токен, Знач IDЧата, Знач Имя, Знач Фамилия, Знач Телефон, Знач Клавиатура = "") Экспорт
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
URL = "api.telegram.org/bot" + Токен + "/sendContact";
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("first_name", Имя);
|
||||
Параметры_.Вставить("last_name", Фамилия);
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("first_name" , Имя);
|
||||
Параметры_.Вставить("last_name" , Фамилия);
|
||||
Параметры_.Вставить("phone_number", Строка(Телефон));
|
||||
Параметры_.Вставить("reply_markup", Клавиатура);
|
||||
|
||||
ДобавитьИдентификаторЧата(IDЧата, Параметры_);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/sendContact", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
@ -447,18 +428,20 @@
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
Ответы = OPI_Инструменты.JSONСтрокой(МассивОтветов);
|
||||
URL = "api.telegram.org/bot" + Токен + "/sendPoll";
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("question", Вопрос);
|
||||
Параметры_.Вставить("options", Ответы);
|
||||
Параметры_.Вставить("question" , Вопрос);
|
||||
Параметры_.Вставить("options" , Ответы);
|
||||
|
||||
Если Не Анонимный Тогда
|
||||
Параметры_.Вставить("is_anonymous", Ложь);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
ДобавитьИдентификаторЧата(IDЧата, Параметры_);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/sendPoll", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
@ -476,16 +459,18 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция ПереслатьСообщение(Знач Токен, Знач IDОригинала, Знач ОткудаID, Знач КудаID) Экспорт
|
||||
|
||||
URL = "api.telegram.org/bot" + Токен + "/forwardMessage";
|
||||
IDОригинала = OPI_Инструменты.ЧислоВСтроку(IDОригинала);
|
||||
ОткудаID = OPI_Инструменты.ЧислоВСтроку(ОткудаID);
|
||||
КудаID = OPI_Инструменты.ЧислоВСтроку(КудаID);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("chat_id", КудаID);
|
||||
Параметры_.Вставить("from_chat_id", ОткудаID);
|
||||
Параметры_.Вставить("message_id", IDОригинала);
|
||||
Параметры_.Вставить("message_id" , IDОригинала);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/forwardMessage", Параметры_);
|
||||
ДобавитьИдентификаторЧата(КудаID, Параметры_);
|
||||
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
@ -506,15 +491,16 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция Бан(Знач Токен, Знач IDЧата, Знач IDПользователя) Экспорт
|
||||
|
||||
URL = "api.telegram.org/bot" + Токен + "/banChatMember";
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
IDПользователя = OPI_Инструменты.ЧислоВСтроку(IDПользователя);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("user_id", IDПользователя);
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("user_id" , IDПользователя);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/banChatMember", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
@ -531,16 +517,17 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция Разбан(Знач Токен, Знач IDЧата, Знач IDПользователя) Экспорт
|
||||
|
||||
URL = "api.telegram.org/bot" + Токен + "/unbanChatMember";
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
IDПользователя = OPI_Инструменты.ЧислоВСтроку(IDПользователя);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("user_id", IDПользователя);
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("user_id" , IDПользователя);
|
||||
Параметры_.Вставить("only_if_banned", Истина);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/unbanChatMember", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
@ -557,15 +544,19 @@
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция СоздатьСсылкуПриглашение(Знач Токен, Знач IDЧата, Знач Заголовок = "", Знач ДатаИстечения = "",
|
||||
Знач ЛимитПользователей = 0) Экспорт
|
||||
Функция СоздатьСсылкуПриглашение(Знач Токен
|
||||
, Знач IDЧата
|
||||
, Знач Заголовок = ""
|
||||
, Знач ДатаИстечения = ""
|
||||
, Знач ЛимитПользователей = 0) Экспорт
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
URL = "api.telegram.org/bot" + Токен + "/createChatInviteLink";
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("name", Заголовок);
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("name" , Заголовок);
|
||||
|
||||
Если ЗначениеЗаполнено(ДатаИстечения) Тогда
|
||||
Параметры_.Вставить("expire_date", Формат(ДатаИстечения - Дата(1970, 1, 1, 1, 0, 0), "ЧГ=0"));
|
||||
@ -573,7 +564,7 @@
|
||||
|
||||
Параметры_.Вставить("member_limit", ЛимитПользователей);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/createChatInviteLink", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
@ -590,16 +581,17 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция ЗакрепитьСообщение(Знач Токен, Знач IDЧата, Знач IDСообщения) Экспорт
|
||||
|
||||
URL = "api.telegram.org/bot" + Токен + "/pinChatMessage";
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
IDСообщения = OPI_Инструменты.ЧислоВСтроку(IDСообщения);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("message_id", IDСообщения);
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("message_id" , IDСообщения);
|
||||
Параметры_.Вставить("disable_notification", Истина);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/pinChatMessage", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
@ -616,15 +608,16 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Ответ сервера Telegram
|
||||
Функция ОткрепитьСообщение(Знач Токен, Знач IDЧата, Знач IDСообщения) Экспорт
|
||||
|
||||
URL = "api.telegram.org/bot" + Токен + "/unpinChatMessage";
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
IDСообщения = OPI_Инструменты.ЧислоВСтроку(IDСообщения);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("message_id", IDСообщения);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/unpinChatMessage", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
@ -640,13 +633,14 @@
|
||||
// ДвоичныеДанные, Неопределено, Произвольный - Получить число участников
|
||||
Функция ПолучитьЧислоУчастников(Знач Токен, Знач IDЧата) Экспорт
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
URL = "api.telegram.org/bot" + Токен + "/getChatMemberCount";
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + "/getChatMemberCount", Параметры_);
|
||||
Ответ = OPI_Инструменты.Get(URL, Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
@ -720,6 +714,106 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РежимФорума
|
||||
|
||||
// Получить список иконок аватаров.
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Список иконок аватаров
|
||||
Функция ПолучитьСписокИконокАватаров(Знач Токен) Экспорт
|
||||
|
||||
Result = "result";
|
||||
URL = "api.telegram.org/bot" + Токен + "/getForumTopicIconStickers";
|
||||
Ответ = OPI_Инструменты.Get(URL);
|
||||
Иконки = Ответ[Result];
|
||||
Коллекция = Новый Соответствие;
|
||||
|
||||
Для Каждого Иконка Из Иконки Цикл
|
||||
Коллекция.Вставить(Иконка["custom_emoji_id"], Иконка["emoji"]);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Коллекция;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создать тему форума.
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен
|
||||
// IDЧата - Строка,Число - ID чата создания темы
|
||||
// Заголовок - Строка - Заголовок темы
|
||||
// IDИконки - Строка - См.ПолучитьСписокИконокАватаров
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// HTTPОтвет - Ответ сервера Telegram
|
||||
Функция СоздатьТемуФорума(Знач Токен, Знач IDЧата, Знач Заголовок, Знач IDИконки = "") Экспорт
|
||||
Возврат УправлениеТемойФорума(Токен, IDЧата, Заголовок, IDИконки);
|
||||
КонецФункции
|
||||
|
||||
// Изменить тему форума.
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен
|
||||
// IDЧата - Строка,Число - ID чата темы
|
||||
// IDТемы - Строка,Число - ID темы
|
||||
// Заголовок - Строка - Новый заголовок
|
||||
// IDИконки - Строка - См.ПолучитьСписокИконокАватаров
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// HTTPОтвет - Ответ сервера Telegram
|
||||
Функция ИзменитьТемуФорума(Знач Токен
|
||||
, Знач IDЧата
|
||||
, Знач IDТемы
|
||||
, Знач Заголовок = Неопределено
|
||||
, Знач IDИконки = Неопределено) Экспорт
|
||||
|
||||
Возврат УправлениеТемойФорума(Токен, IDЧата, Заголовок, IDИконки, IDТемы);
|
||||
КонецФункции
|
||||
|
||||
// Закрыть тему форума.
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен
|
||||
// IDЧата - Строка,Число - ID чата темы
|
||||
// IDТемы - Строка,Число - ID темы
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Неопределено, HTTPОтвет - Ответ сервера Telegram
|
||||
Функция ЗакрытьТемуФорума(Знач Токен, Знач IDЧата, Знач IDТемы) Экспорт
|
||||
Возврат УправлениеСостояниемТемыФорума(Токен, IDЧата, IDТемы, 2);
|
||||
КонецФункции
|
||||
|
||||
// Открыть тему форума.
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен
|
||||
// IDЧата - Строка,Число - ID чата темы
|
||||
// IDТемы - Строка,Число - ID темы
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Неопределено, HTTPОтвет - Ответ сервера Telegram
|
||||
Функция ОткрытьТемуФорума(Знач Токен, Знач IDЧата, Знач IDТемы) Экспорт
|
||||
Возврат УправлениеСостояниемТемыФорума(Токен, IDЧата, IDТемы, 1);
|
||||
КонецФункции
|
||||
|
||||
// Удалить тему форума.
|
||||
//
|
||||
// Параметры:
|
||||
// Токен - Строка - Токен
|
||||
// IDЧата - Строка,Число - ID чата темы
|
||||
// IDТемы - Строка,Число - ID темы
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Неопределено, HTTPОтвет - Ответ сервера Telegram
|
||||
Функция УдалитьТемуФорума(Знач Токен, Знач IDЧата, Знач IDТемы) Экспорт
|
||||
Возврат УправлениеСостояниемТемыФорума(Токен, IDЧата, IDТемы, 3);
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Прочее
|
||||
|
||||
// Сформировать клавиатуру по массиву кнопок.
|
||||
@ -783,25 +877,12 @@
|
||||
|
||||
Функция ОтправитьФайл(Знач Токен, Знач IDЧата, Знач Текст, Знач Файл, Знач Вид, Знач Клавиатура)
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
Расширение = "";
|
||||
|
||||
Если Вид = "photo" Тогда
|
||||
Метод = "/sendPhoto";
|
||||
ИначеЕсли Вид = "video" Тогда
|
||||
Метод = "/sendVideo";
|
||||
ИначеЕсли Вид = "audio" Тогда
|
||||
Метод = "/sendAudio";
|
||||
ИначеЕсли Вид = "document" Тогда
|
||||
Метод = "/sendDocument";
|
||||
ИначеЕсли Вид = "animation" Тогда
|
||||
Метод = "/sendAnimation";
|
||||
Расширение = ".gif";
|
||||
Иначе
|
||||
Возврат "";
|
||||
КонецЕсли;
|
||||
|
||||
Метод = "";
|
||||
|
||||
ОпределитьМетодОтправки(Вид, Метод, Расширение);
|
||||
OPI_Инструменты.ЗаменитьСпецсимволы(Текст);
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
|
||||
Если Не ТипЗнч(Файл) = Тип("ДвоичныеДанные") Тогда
|
||||
ТекущийФайл = Новый Файл(Файл);
|
||||
@ -812,20 +893,152 @@
|
||||
Расширение = СтрЗаменить(Расширение, ".", "___");
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("parse_mode", "Markdown");
|
||||
Параметры_.Вставить("caption", Текст);
|
||||
Параметры_.Вставить("chat_id", IDЧата);
|
||||
Параметры_.Вставить("parse_mode" , "Markdown");
|
||||
Параметры_.Вставить("caption" , Текст);
|
||||
Параметры_.Вставить("reply_markup", Клавиатура);
|
||||
|
||||
ДобавитьИдентификаторЧата(IDЧата, Параметры_);
|
||||
|
||||
СтруктураФайлов = Новый Структура;
|
||||
СтруктураФайлов.Вставить(Вид + Расширение, Файл);
|
||||
|
||||
Ответ = OPI_Инструменты.PostMultipart("api.telegram.org/bot" + Токен + Метод, Параметры_, СтруктураФайлов, "mixed");
|
||||
URL = "api.telegram.org/bot" + Токен + Метод;
|
||||
Ответ = OPI_Инструменты.PostMultipart(URL, Параметры_, СтруктураФайлов, "mixed");
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УправлениеТемойФорума(Знач Токен
|
||||
, Знач IDЧата
|
||||
, Знач Заголовок = Неопределено
|
||||
, Знач IDИконки = Неопределено
|
||||
, Знач IDТемы = "")
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("name" , Заголовок);
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("icon_custom_emoji_id", IDИконки);
|
||||
|
||||
Если ЗначениеЗаполнено(IDТемы) Тогда
|
||||
|
||||
IDТемы = OPI_Инструменты.ЧислоВСтроку(IDТемы);
|
||||
Метод = "/editForumTopic";
|
||||
|
||||
Параметры_.Вставить("message_thread_id", IDТемы);
|
||||
|
||||
Иначе
|
||||
|
||||
Метод = "/createForumTopic";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
OPI_Инструменты.УдалитьПустыеПоляКоллекции(Параметры_);
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + Метод, Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УправлениеСостояниемТемыФорума(Знач Токен, Знач IDЧата, Знач IDТемы, Знач Статус)
|
||||
|
||||
Если Статус = 1 Тогда
|
||||
Метод = "/reopenForumTopic";
|
||||
ИначеЕсли Статус = 2 Тогда
|
||||
Метод = "/closeForumTopic";
|
||||
ИначеЕсли Статус = 3 Тогда
|
||||
Метод = "/deleteForumTopic";
|
||||
Иначе
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
Параметры_ = Новый Структура;
|
||||
Параметры_.Вставить("chat_id" , IDЧата);
|
||||
Параметры_.Вставить("message_thread_id", IDТемы);
|
||||
|
||||
Ответ = OPI_Инструменты.Get("api.telegram.org/bot" + Токен + Метод, Параметры_);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура СформироватьМассивМедиа(Знач СоответствиеФайлов, Знач Текст, СтруктураФайлов, Медиа)
|
||||
|
||||
Счетчик = 0;
|
||||
|
||||
Для Каждого ТекущийФайл Из СоответствиеФайлов Цикл
|
||||
|
||||
Если Не ТипЗнч(ТекущийФайл.Ключ) = Тип("ДвоичныеДанные") Тогда
|
||||
ДД = Новый ДвоичныеДанные(ТекущийФайл.Ключ);
|
||||
ЭтотФайл = Новый Файл(ТекущийФайл.Ключ);
|
||||
ИмяМедиа = ТекущийФайл.Значение + Строка(Счетчик) + ?(ТекущийФайл.Значение = "document",
|
||||
ЭтотФайл.Расширение, "");
|
||||
ПолноеИмяМедиа = СтрЗаменить(ИмяМедиа, ".", "___");
|
||||
Иначе
|
||||
ДД = ТекущийФайл.Ключ;
|
||||
ИмяМедиа = ТекущийФайл.Значение + Строка(Счетчик);
|
||||
ПолноеИмяМедиа = ИмяМедиа;
|
||||
КонецЕсли;
|
||||
|
||||
СтруктураФайлов.Вставить(ПолноеИмяМедиа, ДД);
|
||||
|
||||
СтруктураМедиа = Новый Структура;
|
||||
СтруктураМедиа.Вставить("type", ТекущийФайл.Значение);
|
||||
СтруктураМедиа.Вставить("media", "attach://" + ИмяМедиа);
|
||||
|
||||
Если Счетчик = 0 Тогда
|
||||
СтруктураМедиа.Вставить("caption", Текст);
|
||||
КонецЕсли;
|
||||
|
||||
Медиа.Добавить(СтруктураМедиа);
|
||||
|
||||
Счетчик = Счетчик + 1;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Медиа = OPI_Инструменты.JSONСтрокой(Медиа);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьИдентификаторЧата(Знач IDЧата, Параметры)
|
||||
|
||||
IDЧата = OPI_Инструменты.ЧислоВСтроку(IDЧата);
|
||||
МассивЧата = СтрРазделить(IDЧата, "*", Ложь);
|
||||
|
||||
Если МассивЧата.Количество() > 1 Тогда
|
||||
|
||||
IDЧата = МассивЧата[1];
|
||||
IDТемы = МассивЧата[2];
|
||||
|
||||
Параметры.Вставить("message_thread_id", IDТемы);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Параметры.Вставить("chat_id", IDЧата);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОпределитьМетодОтправки(Знач Вид, Метод, Расширение)
|
||||
|
||||
Если Вид = "photo" Тогда
|
||||
Метод = "/sendPhoto";
|
||||
ИначеЕсли Вид = "video" Тогда
|
||||
Метод = "/sendVideo";
|
||||
ИначеЕсли Вид = "audio" Тогда
|
||||
Метод = "/sendAudio";
|
||||
ИначеЕсли Вид = "document" Тогда
|
||||
Метод = "/sendDocument";
|
||||
ИначеЕсли Вид = "animation" Тогда
|
||||
Метод = "/sendAnimation";
|
||||
Расширение = ".gif";
|
||||
Иначе
|
||||
ВызватьИсключение "Некорректный вид отправки";
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
// BSLLS:Typo-on
|
@ -225,8 +225,6 @@
|
||||
Параметры = Новый Структура;
|
||||
КонецЕсли;
|
||||
|
||||
Переадресация = 300;
|
||||
Ошибка = 400;
|
||||
ТипДанных = ?(JSON, "application/json", "application/x-www-form-urlencoded");
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
@ -237,10 +235,9 @@
|
||||
|
||||
УстановитьТелоЗапроса(Запрос, Параметры, JSON);
|
||||
|
||||
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос);
|
||||
ЭтоПереадресация = Ответ.КодСостояния >= Переадресация И Ответ.КодСостояния < Ошибка;
|
||||
|
||||
Если ЭтоПереадресация Тогда
|
||||
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос);
|
||||
|
||||
Если ЭтоПереадресация(Ответ) Тогда
|
||||
Ответ = ВыполнитьЗапросСТелом(Ответ.Заголовки["Location"], Вид, Параметры, ДопЗаголовки, JSON);
|
||||
Иначе
|
||||
ОбработатьОтвет(Ответ);
|
||||
@ -256,19 +253,15 @@
|
||||
Параметры = Новый Структура;
|
||||
КонецЕсли;
|
||||
|
||||
Переадресация = 300;
|
||||
Ошибка = 400;
|
||||
СтруктураURL = РазбитьURL(URL);
|
||||
Сервер = СтруктураURL["Сервер"];
|
||||
Адрес = СтруктураURL["Адрес"] + ПараметрыЗапросаВСтроку(Параметры);
|
||||
|
||||
Запрос = СоздатьЗапрос(Адрес, ДопЗаголовки);
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
|
||||
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос);
|
||||
ЭтоПереадрисация = Ответ.КодСостояния >= Переадресация И Ответ.КодСостояния < Ошибка;
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
Ответ = Соединение.ВызватьHTTPМетод(Вид, Запрос);
|
||||
|
||||
Если ЭтоПереадрисация Тогда
|
||||
Если ЭтоПереадресация(Ответ) Тогда
|
||||
Ответ = ВыполнитьЗапросБезТела(Ответ.Заголовки["Location"], Вид, Параметры, ДопЗаголовки);
|
||||
Иначе
|
||||
ОбработатьОтвет(Ответ);
|
||||
@ -304,7 +297,6 @@
|
||||
|
||||
Запрос = СоздатьЗапрос(Адрес, ДопЗаголовки, ТипДанных);
|
||||
Соединение = СоздатьСоединение(Сервер);
|
||||
|
||||
ТелоЗапроса = Запрос.ПолучитьТелоКакПоток();
|
||||
ЗаписьТекста = Новый ЗаписьДанных(ТелоЗапроса, КодировкаТекста.UTF8, ПорядокБайтов.LittleEndian, "", "", Ложь);
|
||||
|
||||
@ -361,6 +353,17 @@
|
||||
Возврат Новый HTTPСоединение(Сервер, 443, , , , 300, Новый ЗащищенноеСоединениеOpenSSL);
|
||||
КонецФункции
|
||||
|
||||
Функция ЭтоПереадресация(Знач Ответ)
|
||||
|
||||
Переадресация = 300;
|
||||
Ошибка = 400;
|
||||
|
||||
ЭтоПереадресация = Ответ.КодСостояния >= Переадресация И Ответ.КодСостояния < Ошибка;
|
||||
|
||||
Возврат ЭтоПереадресация;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ОбработатьОтвет(Ответ)
|
||||
|
||||
GZip = "gzip";
|
||||
|
@ -25,14 +25,16 @@
|
||||
.ДобавитьСерверныйТест("Телеграм_ПереслатьСообщение" , "Переслать сообщение")
|
||||
.ДобавитьСерверныйТест("Телеграм_БанРазбан" , "Бан/Разбан")
|
||||
.ДобавитьСерверныйТест("Телеграм_СоздатьСсылкуПриглашение" , "Создать ссылку-приглашение")
|
||||
.ДобавитьСерверныйТест("Телеграм_ЗакрепитьОткрепитьСообщение" , "Закрепить/открепить сообщение")
|
||||
.ДобавитьСерверныйТест("Телеграм_ЗакрепитьОткрепитьСообщение" , "Закрепить/Открепить сообщение")
|
||||
.ДобавитьСерверныйТест("Телеграм_ПолучитьЧислоУчастников" , "Получить число участников")
|
||||
.ДобавитьСерверныйТест("Телеграм_ПолучитьСписокАватаровФорума", "Получить список аватаров форума")
|
||||
.ДобавитьСерверныйТест("Телеграм_СоздатьУдалитьТемуФорума" , "Создать/Удалить тему форума")
|
||||
|
||||
.ДобавитьТестовыйНабор("ВКонтакте")
|
||||
.ДобавитьСерверныйТест("ВК_СоздатьСсылкуТокена" , "Создать ссылку получения токена")
|
||||
.ДобавитьСерверныйТест("ВК_СоздатьУдалитьПост" , "Создать/Удалить пост")
|
||||
.ДобавитьСерверныйТест("ВК_СоздатьОпрос" , "Создать опрос")
|
||||
.ДобавитьСерверныйТест("ВК_СохранитьУдалитьКартинку" , "Добавить/удалить картинку и альбом")
|
||||
.ДобавитьСерверныйТест("ВК_СохранитьУдалитьКартинку" , "Добавить/Удалить картинку и альбом")
|
||||
.ДобавитьСерверныйТест("ВК_СоздатьИсторию" , "Создать историю")
|
||||
.ДобавитьСерверныйТест("ВК_МетодыОбсуждений" , "Действия с обсуждениями")
|
||||
.ДобавитьСерверныйТест("ВК_ЛайкРепостКоммент" , "Лайк/Репост/Комментарий")
|
||||
@ -65,8 +67,8 @@
|
||||
.ДобавитьСерверныйТест("ГК_ПолучитьТокен" , "Получить токен")
|
||||
.ДобавитьСерверныйТест("ГК_ОбновитьТокен" , "Обновить токен")
|
||||
.ДобавитьСерверныйТест("ГК_ПолучитьСписокКалендарей" , "Получить список календарей")
|
||||
.ДобавитьСерверныйТест("ГК_СоздатьУдалитьКалендарь" , "Создать/удалить календарь")
|
||||
.ДобавитьСерверныйТест("ГК_СоздатьУдалитьСобытие" , "Создать/удалить событие")
|
||||
.ДобавитьСерверныйТест("ГК_СоздатьУдалитьКалендарь" , "Создать/Удалить календарь")
|
||||
.ДобавитьСерверныйТест("ГК_СоздатьУдалитьСобытие" , "Создать/Удалить событие")
|
||||
.ДобавитьСерверныйТест("ГК_ПолучитьСписокСобытий" , "Получить список событий");
|
||||
|
||||
КонецПроцедуры
|
||||
@ -533,6 +535,71 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Телеграм_ПолучитьСписокАватаровФорума() Экспорт
|
||||
|
||||
Токен = ПолучитьПараметр("Телеграм_Токен");
|
||||
Результат = OPI_Telegram.ПолучитьСписокИконокАватаров(Токен);
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Телеграм_СоздатьУдалитьТемуФорума() Экспорт
|
||||
|
||||
Result = "result";
|
||||
Токен = ПолучитьПараметр("Телеграм_Токен");
|
||||
Чат = ПолучитьПараметр("Телеграм_Форум");
|
||||
Имя = "Тестовая тема";
|
||||
НовоеИмя = "Новый тестовый заголовок";
|
||||
Иконка = "5357419403325481346";
|
||||
|
||||
Результат = OPI_Telegram.СоздатьТемуФорума(Токен, Чат, Имя, Иконка);
|
||||
Тема = Результат[Result]["message_thread_id"];
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
.Свойство("ok").Равно(Истина)
|
||||
.Свойство("result.name").Равно(Имя)
|
||||
.Свойство("result.icon_custom_emoji_id").Равно(Иконка);
|
||||
|
||||
Результат = OPI_Telegram.ИзменитьТемуФорума(Токен, Чат, Тема, НовоеИмя);
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
.Свойство("ok").Равно(Истина)
|
||||
.Свойство("result").Равно(Истина);
|
||||
|
||||
Результат = OPI_Telegram.ЗакрытьТемуФорума(Токен, Чат, Тема);
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
.Свойство("ok").Равно(Истина)
|
||||
.Свойство("result").Равно(Истина);
|
||||
|
||||
Результат = OPI_Telegram.ОткрытьТемуФорума(Токен, Чат, Тема);
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
.Свойство("ok").Равно(Истина)
|
||||
.Свойство("result").Равно(Истина);
|
||||
|
||||
Результат = OPI_Telegram.УдалитьТемуФорума(Токен, Чат, Тема);
|
||||
|
||||
ЮТест.ОжидаетЧто(Результат)
|
||||
.ИмеетТип("Соответствие")
|
||||
.Заполнено()
|
||||
.Свойство("ok").Равно(Истина)
|
||||
.Свойство("result").Равно(Истина);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ВК
|
||||
|
@ -26,7 +26,7 @@
|
||||
<usePurposes>PersonalComputer</usePurposes>
|
||||
<scriptVariant>Russian</scriptVariant>
|
||||
<vendor>Bayselonarrend</vendor>
|
||||
<version>1.3.0</version>
|
||||
<version>1.3.1</version>
|
||||
<detailedInformation>
|
||||
<key>ru</key>
|
||||
<value>Открытый пакет интеграций - набор библиотек для интеграции с некоторыми популярными API для 1C:Enterprise. Он состоит из общих модулей, каждый из которых отвечает за свой API, а также нескольких модулей-инструментов, общих для всех.</value>
|
||||
|
Loading…
x
Reference in New Issue
Block a user