MyChat Scripts: функция mDecUIN, предыдущий UIN зарегистрированного пользователя
"Для разработчиков", "Серверные скрипты", "Описание функций", "Пользователи", "mDecUIN".
Функция для получения предыдущего уникального номера зарегистрированного на сервере пользователя.
UIN-ы пользователей уникальны и никогда не повторяются. UIN=0 — это встроенный робот Elisa, UIN=1 — пользователь-администратор для управления сервером. Все остальные пользователи могут создаваться и удаляться, но освобождённые UIN-ы в дальнейшем не используются из-за соблюдения целостности баз данных.
Чтобы перебирать существующие UIN-ы пользователей, пропуская "дыры", удобно пользоваться функциями mIncUIN и mDecUIN.
Синтаксис
function mDecUIN(iUIN: integer): integer;
Параметры и возвращаемые значения
Параметр |
Тип |
Значение |
iUIN |
integer |
уникальный идентификатор пользователя, предыдущий от которого нам нужен. |
Результат функции
>0 |
предыдущий UIN; |
-1 |
стартовый UIN не существует на сервере; |
-2 |
больше UIN-ов нет, мы дошли до первого. |
Пример
Перебираем всех зарегистрированных пользователей, начиная с последнего, и считаем тех, у кого в профиле есть фотография, и тех, у кого её нет.
var
iUIN, iCountWithPhoto, iCountWithoutPhoto: integer;
begin
iUIN := mGetMaxRegisteredUIN;
iCountWithPhoto := 0;
iCountWithoutPhoto := 0;
repeat
if mGetUserAttribute(iUIN, 'FotoCRC32') = '0' then inc(iCountWithoutPhoto)
else inc(iCountWithPhoto);
iUIN := mDecUIN(iUIN);
until iUIN < 0;
mLogScript('Users with/without photos: ' + IntToStr(iCountWithPhoto) + ' / ' + IntToStr(iCountWithoutPhoto), '');
end.
Результат работы скрипта
[20:24:19] (Log "mDecUIN"): Users with/without photos: 286 / 7704
[20:24:19] (Run "mDecUIN"): Время выполнения скрипта: 106 мс
[20:24:19] (Run "mDecUIN"): Скрипт выполнен успешно.