Событие MyChat Server: OnUserStateChange, смена статуса пользователя
"Для разработчиков", "Серверные скрипты", "Скриптовые события", "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).