MyChat Scripts: функция mGetUsersListInGroupsByNames, получить список людей из нескольких групп

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:

 

Оповещение по сети с требованием обязательного прочтения в мессенджере MyChat
 

Ещё посмотреть

EndOfTheDay

DayOfTheWeek

FileExists

FormatDatetime

Length

LoadTextFromFile

mSendBroadcast

Now

Trim