"Для разработчиков", "Серверные скрипты", "Скриптовые события", "Chat events", "Пользователи", "OnUserStateChange".

 

Событие генерируется при смене статуса пользователя. Например, когда он подключается к серверу, отключается от него, меняет свой статус вручную ("Свободен" / "Не беспокоить") либо автоматически, когда нет никакой активности ("Нет на месте").

 

В работе со статусами пользователями есть много нюансов, которые так или иначе "разруливает" сервер, потому что онлайн может быть сразу несколько устройств, залогиненных под одной и той же учётной записью. Например, Windows-приложение, подключение в Web-браузере и приложения для iPhone. Сервер отслеживает все сочетания статусов каждого конкретного подключения и выводит некое среднее по сложному алгоритму.

 

Шаблон события

procedure OnUserStateChange(const iUIN, iState: integer);
begin
  // your own code
end;
begin
end.

Вместо комментария может быть любой ваш код.

 

Описание параметров

Параметр

Тип

Значение

iUIN

integer

числовой идентификатор пользователя.

iState

integer

тип статуса пользователя.

 

Пример

const
  WATCH_USER_UIN = 3;
  INFORM_USER_UIN = 6;
  
procedure OnUserStateChange(const iUIN, iState: integer);
var
  s: string;
begin
  if iUIN = WATCH_USER_UIN then begin
    case iState of
      -1: s := 'offline';
      0: s := 'free, online';
      1: s := 'away, online';
      2: s := 'do not disturb, online';
    end;
    mSendPrivateMessage(0, INFORM_USER_UIN, 
                        'User ' + mGetUserAttribute(WATCH_USER_UIN, 'DisplayName') + ' is ' + s, 1);
  end;  
end;
begin
end.

Скрипт отслеживает изменения статуса конкретного пользователя и уведомляет об этом другого человека в чате приватным сообщением от имени встроенного робота Elisa (UIN 0).
 

Пример работы скрипта для перехвата изменения статуса пользователя MyChat

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

mGetUserAttribute

mSendPrivateMessage