MyChat Scripts: функция mDecUIN, предыдущий UIN зарегистрированного пользователя

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"): Скрипт выполнен успешно.

 

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

Inc

IntToStr

mGetMaxRegisteredUIN

mLogScript