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


У роботі зі статусами користувачами є багато нюансів, які так чи інакше "розрулює" сервер, тому що онлайн може бути відразу кілька пристроїв, залогінених під одним і тим самим обліковим записом. Наприклад, 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