Роботы, плагины и скрипты к чату MyChat. Разработка альтернативных клиентов и различных утилит. Технические вопросы по программированию, замечания и предложения по развитию API
Аватара пользователя
to$ter
Та-же история(((
Аватара пользователя
Андрей Раков
ovdt писал(а):iSex := mGetUserSex(iUIN); // получение пола пользователя
sUserFullName := mGetUserFullName(iUIN, 0); // ... и полного имени

Эти функции нужно заменить на mGetUserFullNameByPreset + JSONGetInteger

Пример:
Код: Выделить всё
var
  sJSON: string;
  iSex: integer;
begin
  sJSON := mGetUserDataAsJSON(6, 'Sex');

  if JSONGetInteger(sJSON, "Sex", iSex) = 0 then
     // all ok
  else
     // error
end.


И mGetUserFullNameByPreset
Код: Выделить всё
sUserFullName := mGetUserFullNameByPreset(6, 0)

Как описано в справке, имя будет в формате "Александр Сергеевич Пушкин" для второго параметра "0".
Аватара пользователя
ovdt
Исправьте все пожалуйста в шапке темы сообщения в скрипте так как я сам не пойму куда вставить
Аватара пользователя
ovdt
Спасибо поставил без ошибок
Аватара пользователя
Coolboy
Добрый день!
На Server 2008 R2 64-bit подмена С_1252.NLS на 1251 проблему с кракозябрами решает ;)
Чтоб ушли знаки вопроса и появились кракозябры в "Языках и региональных стандартах" везде, где можно ставим русский, а потом подменяем шрифты.

Дано:
Сервер 5.2.0

Проблема в строке 40: Unknown identifier 'mGetUserDataAsJSON'

Подскажите куда копать. Заранее благодарю!
Аватара пользователя
Coolboy
Хм. Установил пробную версию сервера 5.24.0.64 и скрипт скомпилировался...
Но обновиться я на него , наверное, не смогу!? Как без перестановки узнать, подойдет ли моя лицензия?
Аватара пользователя
Coolboy
Ага, понял, как. Мой ключ до версии сервера 5.7... Где его качнуть и отработает ли там скрипт?
Аватара пользователя
Алексей Пикуров
Добрый день.
Ага, понял, как. Мой ключ до версии сервера 5.7... Где его качнуть и отработает ли там скрипт?

Нет, не отработает. У вас очень старая версия, нужно обновиться. Для этого нужно приобрести подписку на обновления на год или больше.

Дистрибутивы старых версий мы предоставляем только клиентам, напишите нам на [email protected], вышлем ссылку, если вы потеряли свой дистрибутив.
Аватара пользователя
Алексей Пикуров
P.S. В следующей версии мы полностью переходим на UNICODE, так что кракозябры исчезнут, как явление :)
Аватара пользователя
Coolboy
А можно его(скрипт) поправить под мою версию? [smilie=help.gif]
Аватара пользователя
Алексей Пикуров
Мы не занимаемся корректировкой старых версий и скриптов к ним, извините.
Аватара пользователя
Coolboy
Печально читать такие строки в службе техподдержки продукта, которым пользуешься...
Аватара пользователя
Алексей Пикуров
Почему? У нас нет физической возможности поддерживать древние версии MyChat, мы оказываем техническую поддержку и исправляем ошибки только в самой свежей версии. Для этого и есть подписка на обновления.

Версия 5.7 вышла очень давно, посмотрите историю версий.

Я вам с удовольствием помогу, но и вы обновитесь на самую свежую версию.
Аватара пользователя
Coolboy
Спасибо вам!

Я поправил скрипт ручками, все работает ;)
Аватара пользователя
Алексей Пикуров
Вот и прекрасно. Но обновиться я вам всё равно настоятельно рекомендую.
Аватара пользователя
tfosn
Версия 1.0 актуальна? 8 лет прошло
// Скрипт автоматических поздравлений с днями рождений //
// версия 1.0 от 02.10.2011
Аватара пользователя
Алексей Пикуров
Что мешает скопировать и вставить?)) Всё работает.
Аватара пользователя
Алексей Пикуров
UPD (18.01.2021)
Скрипт устарел, свежая версия для версии MyChat 8.3.3 и старше.
Аватара пользователя
AlexSun
Да, спасибо за скрипт. Еще неплохо было бы, чтобы предупреждал за 2-3 дня (за 3 дня, в пятницу - если в понед выпадает ДР)
Аватара пользователя
Алексей Пикуров
Пожалуйста. Поменяйте под свои нужды, это не проблема.
Аватара пользователя
AlexaS
Сегодня заметил что у последней версии скрипта при переходе в следующий месяц объявление с субботы не дожило до понедельника (суббота 30 июля, понедельник 1 августа).
Код: Выделить всё
// ---------------------------------------
// Script created by Alexey Pikurov ([email protected])
// 18.01.2021 20:45:13
// ---------------------------------------
var
  iUIN: integer;
  dtExpired: double;
  sUsersList, sUserFullName, sMsg, sGender, sToday: string;
begin
  dtExpired := Now; // получаем текущую дату
  sToday := FormatDateTime('ddmmyyyy', dtExpired);

    // если мы уже работали сегодня, то ничего не делаем, чтобы
    // не поздравить одних и тех же людей по второму кругу
    if mDBStorageGetData('birthday-script') = sToday then exit
      else mDBStorageSetData('birthday-script', sToday);
 
  sUsersList := mGetBirthdayUsers(dtExpired); // получаем список UIN-ов людей, у которых сегодня день рождения
                                 
    while length(sUsersList) > 0 do begin
      iUIN := StrToInt(Fetch(sUsersList, ','));
      sUserFullName := mGetUserFullNameByPreset(iUIN, 0); // 0 — "Александр Сергеевич Пушкин"
     
        if mGetUserAttribute(iUIN, 'Sex') = '2' then sGender := 'её' // получение пола пользователя
          else sGender := 'его';
       
      // формируем строку для поздравления
      sMsg := 'Сегодня ' + sUserFullName + ' празднует день рождения!' +
              CRLF +
              'Подравляем ' + sGender + ' с этим праздником и желаем всего самого ' +
              'светлого и доброго!' +
                CRLF +
                'Пусть жизнь дарит Вам побольше ярких моментов и сбудутся все самые смелые и заветные желания!'+
                CRLF +
                'Желаем чтобы в Вашем доме всегда царили счастье и понимание.'+
                CRLF +
                'И пусть Вас окружают только искренние, верные, надежные друзья и добрые люди. ' +
                CRLF +
                'С уважением, администрация!';
       
        // если сегодня суббота или воскресенье, то добавляем нужное количество дней до понедельника
        case DayOfTheWeek(dtExpired) of
          6: IncDay(dtExpired, 2);
          7: IncDay(dtExpired, 1);
        end;

      // ...и размещаем поздравление на доске объяалений, чтобы было видно всем пользователям
      mAddNewBBSMessage(sMsg, dtExpired, false);
    end;
end.
Аватара пользователя
Алексей Пикуров
Скрипт написан неидеально, следует для даты окончания проставить что-то вроде EndOfTheDay, чтобы объявление было до конца суток, а не +1 или два дня с момента срабатывания события.