Пример простого скрипта на MSL

Задача: разослать списку пользователей информацию произвольного характера.

К примеру, есть поставщик интернет услуг. У данной организации подключено определенное количество пользователей, а для общения во внутренней локальной сети провайдера используется MyChat. Часто некоторые абоненты не вовремя оплачивают услуги провайдера или попросту забывают об этом. Поставщик интернет услуг может уведомлять своих абонентов о необходимости внести абонплату с помощью MSLMyChat Script Language. Это встроенная скрипт-машина в MyChat Server. Возможности этой системы весьма широки.

Для начала необходимо создать обычный текстовый файл, в котором будут перечислены UIN-ы должников и периоды, а также файл с текстом сообщения для них.

Например, файл с UIN-ами «С:\UIN.txt» (формат “user|date”), на компьютере с MyChat Server содержит текст:

            5|01.07.2009-31.07.2009
            678|01.07.2009-31.07.2009
            4|01.07.2009-31.07.2009
            567|01.07.2009-31.07.2009
            56|01.07.2009-31.07.2009
            456|01.06.2009-31.07.2009
            67|01.07.2009-31.07.2009
            34|01.07.2009-31.07.2009
            5|01.07.2009-31.07.2009
            7|01.07.2009-31.07.2009
            97|01.06.2009-31.07.2009
            44|01.07.2009-31.07.2009
            676|01.07.2009-31.07.2009
        

А файл с текстом сообщения «C:\MSG.txt» выглядит так:
{geshi xml:lang="delphi" lines="true"}
%user пожалуйста оплатите услугу доступа к сети Интернет, за период %date. В случае неуплаты в течении 2-х рабочих дней — Вы будете отключены{/geshi}
Теперь рассмотрим процесс создания скрипта, который будет отправлять это сообщение должникам каждые 4 часа.

Для этого зайдем в редактор скриптов на сервере:

Редактор скриптов MyChat

И выберем в списке событий – выполнение скрипта каждый 4-й час:

События выполнения скрипта

Добавляем наш скрипт:

            Program UsersAlerts;
                Var
                    UsersCount, I, Uin: integer;
                    Str, Msg, ms, Date, User: string;
    
            Begin
                Msg:='';
                // получаем количество строк в файле с должниками
                UsersCount:= GetTextFileLinesCount('c:\uin.txt');
    
                For i:=1 to GetTextFileLinesCount('c:\msg.txt') do
                Begin
                    // в этом цикле вычитываем файл и склеиваем его в одну строчку
                    LoadLineFromFile('c:\MSG.txt',i,str);
                    Msg:=Msg+str+#13#10;
                End;
    
                For i:=1 to UsersCount do
                Begin
                    ms:=msg; //сохраняем Msg в ms
                    LoadLineFromFile('c:\UIN.txt',i,str);//вычитываем строку из файла
                    UIN:=strtoint(copy(str,1,pos('|',str)-1));//получаем Uin пользователя
                    Date:=copy(str,pos('|',str)+1,length(str)-pos('|',str));//получаем дату
                    User:=mGetNickFromUIN(UIN);//спрашиваем ник пользователя по его UINу
        
                    //заменяем в тексте сообщения %user на ник пользователя
                    Insert(User,Ms,pos('%user',ms));
                    Delete(Ms,pos('%user',ms),5);
        
                    //заменяем в тексте сообщения %date на дату
                    Insert(Date,Ms,pos('%date',ms));
                    Delete(Ms,pos('%date',ms),5);
        
                    //и отправляем сформированное сообщение пользователю
                    mSendPrivateMessage(uin, Ms);
                End;
            End.
        

Будет это выглядеть примерно вот так:

Скрипт в MyChat

Нажимаем на иконку с дискеткой, сохраняем скрипт и ставим галку «Включить скрипт».

Готово, сервер будет выполнять поставленную задачу каждые 4 часа и оповещать должников.

Служба поддержки