Здесь вы можете задать любые вопросы по MyChat, по работе программы, её настройке, лицензированию и т.д.
Аватара пользователя
CyberDynamic
Доброго времени суток, господа.
На днях просматривая логи, наткнулся на интересную строчку:
Код: Выделить всё
Скрипт "OfflineMsg2Telegram", сообщение: "{"ok":false,"error_code":403,"description":"Forbidden: bot was blocked by the user"}"

Т.е. тут и к гадалке не ходи. Пользователь заблокировал телеграм бота. Казалось бы да и черт с ним, но т.к. политика организации обязывает всех сотрудников быть подключенными к боту, мне потихоньку рвут третий глаз, мол "узнай кто это и доложи".
Уважаемые разработчики, возможен ли какой-то механизм определения этого пользователя?
Аватара пользователя
Андрей Раков
Доброго времени суток, нужно протестировать, проверю в понедельник.
Аватара пользователя
CyberDynamic
Заранее большое спасибо!
Аватара пользователя
Андрей Раков
Добрый день.

Мы посмотрели, как найти этих "хороших людей".

Нужно немного модифицировать скрипт отправки офлайн сообщений в телеграм (OfflineMsg2Telegram):
Код: Выделить всё
// -----------------------------------------------------------------------------------
// ver 1.1 / Sep 22, 2017, (c) Alexey Pikurov, [email protected]
// -----------------------------------------------------------------------------------
function OnPrivateMessage(iCID, iUIN, iUINTo, iMsgType: integer; sMsg: string): boolean;
var
  sID, sOutMsg, sNameFrom, s: string;
  bResult: boolean;
begin
  SetScriptTimeOut(10000);
 
  result := true;

    if not mIsUINOnline(iUINTo) then begin
      // get sender's Telegram ID
      sID := mIntegrationTelegramGetUserIDByUIN(iUINTo);

        if sID[1] <> '-' then begin // no errors
          // get MyChat sender's display name
          sNameFrom := mGetUserFullNameByPreset(iUIN, 0);

          // convert MyChat message to plaint text
          sOutMsg := mConvertMsgToPlainText(sMsg, iMsgType);

          // add WEB support link and user display name to message
          sOutMsg := '<a href="' +
                     mGetServerExternalAddress(0) +
                     '/support/?uin=' +
                     IntToStr(iUIN) +
                     '&silent">' +
                     sNameFrom +
                     '</a>:' +
                     CRLF +
                     CRLF +
                     sOutMsg;

          // send message to Telegram
          s := mIntegrationTelegramSendMessage(sID, sOutMsg, 5000);
          bResult := true;

            if JSONGetBoolean(s, 'ok', bResult) <> 0 then bResult := false;

            // if any error occured - log result to server's system scripts protocol
            if not bResult then begin
              s := 'From: ' + IntToStr(iUIN) + ', to: ' + IntToStr(iUINTo) + CRLF + s;
              mLogScriptToDisk(s);
            end; 
        end;
    end;
end;

begin

end.


После этого в логе скриптов у вас появится информация, кто кому отправлял и оно не дошло:
chrome_86PZbx8iBm.png

chrome_EUbX23iFtj.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
CyberDynamic
Уважение и благодарность, Андрей! Спасибо огромное, выручили! [smilie=good.gif]