Скрипт устарел, свежая версия для версии MyChat 8.4.0 и старше.
Итак, уже практически готова версия 4.10.4, в ней добавлена немаленькая пачка :D новых функций для скриптового движка и я хочу показать скрипт, который сможет поздравлять ваших пользователей с днями рождений. Автоматически.
Понятное дело, что для того, чтобы всё было правильно и красиво, ваши пользователи должны указывать день своего рождения в профиле, иначе грош цена будет этому скрипту:
Далее, открываем сервер, инструмент "Скрипты", и вставляем скрипт на событие, которое будет выполняться каждый час:
Не забываем включить скрипт.
Более подробно о скрипте и о том, как он работает, будет отдельная статья в разделе "Статьи" на нашем сайте, а пока исходный текст скрипта:
//////////////////////////////////////////////////////////////
// //
// MyChat Server Script Language //
// //
// Скрипт автоматических поздравлений с днями рождений //
// версия 1.0 от 02.10.2011 //
// //
// Copyright(c) Alexey Pikurov / Network Software Solutions //
// [email protected] //
// http://www.nsoft-s.com //
// //
// Выполнять каждый час //
// Вопросы, пожелания, комментарии: //
// http://www.nsoft-s.com/forum/viewforum.php?f=35 //
// //
//////////////////////////////////////////////////////////////
var
s, sUserFullName, sMsg, s2, sToday, sOld: string;
iUIN, iSex: integer;
sJSON: string;
begin
sToday := FormatDateTime('ddmmyyyy', Now); // получаем текущую дату
// читаем из реестра запись о прошлом запуске
RegGetString(HKEY_CURRENT_USER, 'Software\MyChatServerScripts\BirthdayReminder', sOld);
// если мы ужа работали сегодня, то ничего не делаем, чтобч
// не поздравить одних и тех же людей по второму кругу
if sToday<>sOld then begin
// записываем в реестр текущую дату
RegSetString(HKEY_CURRENT_USER, 'Software\MyChatServerScripts\BirthdayReminder', sToday);
// получаем список UIN-ов людей, у которых сегодня день рождения
s := mGetBirthdayUsers(Now);
// и перебираем их всех по одному
while length(s)>0 do begin
iUIN := strtoint(GetNextSt(s, ','));
sJSON := mGetUserDataAsJSON(iUIN, 'Sex');
JSONGetInteger(sJSON, 'Sex', iSex); // получение пола пользователя
sUserFullName := mGetUserFullNameByPreset(iUIN, 0); // ... и полного имени
case iSex of
0, 1: s2 := 'его';
2: s2 := 'её';
end;
// формируем строку для поздравления
sMsg := 'Сегодня ' + sUserFullName + ' празднует день рождения!' +
CRLF +
'Подравляем ' + s2 + ' с этим праздником и желаем всего самого ' +
'светлого и доброго!';
// ...и размещаем её на доске объяалений, чтобы было видно всем пользователям,
// а дату окончания объявления выставляем до конца текущего дня
mAddNewBBSMessage(false, sMsg, EndOfTheDay(Now));
end;
end;
end.
Как видите, всё достаточно просто и линейно. Комментарии дополнительно поясняют алгоритм скрипта.
А вот и результат работы на доске объявлений у клиентов:
Чат со мной