MyChat Scripts: функция mGetUsersListInGroupsByNames, получить список людей из нескольких групп
"Для разработчиков", "Серверные скрипты", "Описание функций", "Группы", "mGetUsersListInGroupsByNames".
Функция для получения списка уникальных идентификаторов пользователей (UIN) из набора групп. Имена групп указываются через запятую или через символ "|", без пробелов между ними, регистр букв имеет значение.
Синтаксис
function mGetUsersListInGroupsByNames(sGroupNames: string): string;
Параметры и возвращаемые значения
Параметр |
Тип |
Значение |
sGroupNames |
string |
названия групп пользователей через запятую или символ "|". Регистр букв важен. |
Результат функции
Текстовая строка со списком UIN-ов пользователей, которые входят в группы. Номера уникальны и не повторяются, даже если пользователь входит в несколько групп одновременно. Группы можно перечислять через запятую или через символ "|".
Если группы не существуют либо в них нет пользователей — функция вернёт пустую строку.
Пример
Скрипт "навешен" на событие по времени "Every 5 minutes". В момент срабатывания, например, в 10:30, ищет файл "d:\messages\broadcast\10.30.txt" и отправляет оповещение с подтверждением прочтения с текстом из этого файла всем пользователям группы "Сотрудник".
Если название файла начинается с латинской "w", например, "w10.30.txt", то оповещение отправляется только по рабочим дням, с понедельника по пятницу. "Срок годности" оповещения ставится до конца текущих суток.
const
sGroups = 'Сотрудник'; // группы через запятую или символ "|", которым нужно отправлять оповещения
sPath = 'd:\messages\broadcast\'; // путь, откуда брать файлы для оповещений
var
sFullName, sFileName, sMsg, sUsersList: string;
iDay: integer;
bFlag: boolean;
begin
iDay := DayOfTheWeek(Now);
sFileName := FormatDatetime('hh.nn', Now) + '.txt';
sFullName := sPath + sFileName;
bFlag := false;
if FileExists(sFullName) then bFlag := true
else if iDay < 6 then begin
sFullName := sPath + 'w' + sFileName;
bFlag := FileExists(sFullName);
end;
if bFlag then begin
sMsg := Trim(LoadTextFromFile(sFullName, 0));
if length(sMsg) > 0 then begin
sUsersList := mGetUsersListInGroupsByNames(sGroups);
if length(sUsersList) > 0 then
mSendBroadcast(sMsg, sUsersList, EndOfTheDay(Now), 1);
end;
end;
end.
Результат работы скрипта
Оповещение с подтверждением прочтения, отправленное от имени встроенного робота MyChat Server: