MyChat Scripts Engine: mGetUsersListInGroupsByNames

MyChat Scripts Engine: 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