Роботы, плагины и скрипты к чату MyChat. Разработка альтернативных клиентов и различных утилит. Технические вопросы по программированию, замечания и предложения по развитию API
СергейВБР
Код скрипта:
Код: Выделить всё
// ---------------------------------------
// Script created by СергейАхт (UIN 1)
// 12.02.2018 7:32:20
// ---------------------------------------
var
  sMessage, s, sResultGet, sResultPost, sJSON: string;
  iBalance, y, x: integer;
 
begin
  sResultGet := mHTTPSendGetMessage('https://my.rs.net.ua/sms_login.html?rs_login=tehnolog&rs_password=*********', 'Content-Type:application/x-www-form-urlencoded', 1000);
  x := pos('На вашому', sResultGet);
  y := pos('грн </b></span>', sResultGet);
  //mLogScript(sResultGet, 'sResultGet');
  s := copy(sResultGet, x, y-x+3);
  x := pos('<b>', s);
  iBalance := trunc(StrToFloat(copy(s, x+3, length(s)-x-9))); //Баланс в цифре
  //mLogScript(copy(s, x+3, length(s)-x-6), '');
  s := ReplaceString(s, '<b>', '', true, false);
  //mLogScript(s, '');
  //mLogScript(inttostr(iBalance), 'iBalance');
  if (iBalance < 10) then begin
      sMessage := 'Пакет на Металлургов: ' + s + CRLF;
        //mSendConfMessage(1, 0, 'Всем привет! ' + CRLF + 'Стесняюсь Вас побеспокоить, НО ' + CRLF + 'интернет на металлургов не мешало бы пополнить! ' + CRLF + s, 1);
  end;
 
 //Ахтырская
  sResultGet := mHTTPSendGetMessage('https://my.rs.net.ua/sms_login.html?rs_login=rk6&rs_password=*********', 'Content-Type:application/x-www-form-urlencoded', 1000);
  x := pos('На вашому', sResultGet);
  y := pos('грн </b></span>', sResultGet);
  //mLogScript(sResultGet, 'sResultGet');
  s := copy(sResultGet, x, y-x+3);
  x := pos('<b>', s);
  //mLogScript(s, '');
  iBalance := trunc(StrToFloat(trim(copy(s, x+3, length(s)-x-9)))); //Баланс в цифре
  //mLogScript(copy(s, x+3, length(s)-x-9), '');
  s := ReplaceString(s, '<b>', '', true, false);
  //mLogScript(s, '');
  //mLogScript(inttostr(trunc(strtofloat('192.16'))), 'iBalance');
  if (iBalance < 10) then begin
      sMessage := sMessage + 'Пакет на Ахтырской: ' + s;
        //mSendConfMessage(1, 0, 'Всем привет! ' + CRLF + 'Стесняюсь Вас побеспокоить, НО ' + CRLF + 'интернет на металлургов не мешало бы пополнить! ' + CRLF + s, 1);
  end;
 
  if (length(sMessage) > 0) then begin
      mSendConfMessage(3, 0, 'Всем привет! ' + CRLF + 'Стесняюсь Вас побеспокоить, НО интернет не мешало бы пополнить! ' + CRLF + sMessage, 1);
        //mLogScript('Всем привет! ' + CRLF + 'Стесняюсь Вас побеспокоить, НО интернет не мешало бы пополнить! ' + CRLF + sMessage, 'iBalance');
  end;
 
end.

После обновления от 1 марта, не всегда, но периодически в чат прилетают сообщения вида как на скрине.
т.е. в каком то месте строка заменяется на "NET"...
Что это?
Отловить не могу, т.к. все тестовые проверки скрипт проходит - и не выдает этого "NET"...
(Пароли прошу запикать после копирования исходника скрипта)
Вложения
screenshot 2018-03-20 %c.png
screenshot 2018-03-20 %c.png (7.1 КБ) Просмотров: 1757
Аватара пользователя
Алексей Пикуров
Здравствуйте. Функции не возвращают такое значение. Залогируйте результат функции mHTTPSendGetMessage — sResultGet в файл.

https://nsoft-s.com/mcserverhelp/index. ... todisk.htm

Посмотрите, что она и когда возвращает, чтобы разобраться.
Аватара пользователя
Алексей Пикуров
P.S. Переношу тему в раздел скриптов.
СергейВБР
Кстати, не знаю должно ли так быть - при попытке использховать
Код: Выделить всё
mLogScriptToDisk(sResultGet);

- то есть записать в лог значение переменной sResultGet - лог остается пустой,
увидел содержимое с помощью mSendPrivateTechMessage.
Это NETWORK ERROR 10060, "Connection timed out".
Попробовал увеличить iTimeOut до 3 секунд, вроде помогло, дальше будет видно, на всякий случай сделал проверку на возвращаемый от сервера ответ.
Аватара пользователя
Алексей Пикуров
Получается, ваш сервер может долго отвечать на запрос.
лог остается пустой

Какой лог вы смотрите?
СергейВБР
Тот который нарисован в справке:
Вложения
screenshot 2018-03-20 %c23.png
screenshot 2018-03-20 %c23.png (153.29 КБ) Просмотров: 1749
Аватара пользователя
Алексей Пикуров
Ну если там пусто, значит, вы туда ничего не пишете. Я только что проверил, всё отлично работает.
СергейВБР
Да, я увидел что последнее сообщение там 19.03, т.е. за сегодня почемуто записи не отображает, перезагрузил сервер - логи не появились....
Попробовал скрипт - теперь в системном протоколе пишет:
0031 [20.03.2018 14:22:21:657] Ошибка #130: скрипт "rsBallance" отключен из-за превышения времени на выполнение (5082 ms)
Кроме этого в системном протоколе обнаружил строку:
0031 [20.03.2018 10:33:59:766] Ошибка #102: попытка подключения неизвестного приложения, IP "213.202.230.144"
Что бы это значило?
Аватара пользователя
Алексей Пикуров
0031 [20.03.2018 14:22:21:657] Ошибка #130: скрипт "rsBallance" отключен из-за превышения времени на выполнение (5082 ms)

Ваш скрипт слишком долго работал (дольше стандартных 5 секунд) и сервер его отключил. Поставьте тайм-аут на выполнение внутри скрипта, но только адекватный.

Функция SetScriptTimeOut
Кроме этого в системном протоколе обнаружил строку:
0031 [20.03.2018 10:33:59:766] Ошибка #102: попытка подключения неизвестного приложения, IP "213.202.230.144"

К вашему серверу пытается подключиться кто-то, но это не MyChat Client. И сервер его отключает.
Мы сейчас занимаемся обновлением системы логов, будет удобнее понять, кто это, но пока что протоколирования входящего сетевого трафика нет.
СергейВБР
Как заставить заработать логи скриптов, там за сегодня - пусто... Че так - не знаю.
Галочка в настройках включена...
Вложения
screenshot 2018-03-20 %c323.png
screenshot 2018-03-20 %c323.png (113.45 КБ) Просмотров: 1746
Аватара пользователя
Алексей Пикуров
Логи работают, возьмите Chrome для теста.
Аватара пользователя
Алексей Пикуров
P.S. Сейчас логи скриптов пишутся в файл C:\ProgramData\MyChat Server\logs\2018\03\20\script.log

Проверьте, там есть что-то?
СергейВБР
В хроме тоже пусто, а текстовый лог - на месте, похоже просто сломался его парсинг после того как туда попал чистый HTML после выполнения mLogScriptToDisk(sResultGet);
логфайл приложил - протестируйте.
Вложения
(38.36 КБ) Скачиваний: 78
Аватара пользователя
Алексей Пикуров
Да, такое он парсить не умеет, как раз сейчас занимаемся системой логов. Пока что будет, как есть. Либо пишите в отдельный файл функцией типа AddLineToFile.