From Stealth Client

Jump to: navigation, search
Line 146: Line 146:
end.
end.
-
 
</source>
</source>
Line 152: Line 151:
17:27:37:759 [Test - Test]: Telegram Message incoming from "Vizit0r" (SenderId: 435486649) : testtest   
17:27:37:759 [Test - Test]: Telegram Message incoming from "Vizit0r" (SenderId: 435486649) : testtest   
где 435486649 и есть нужный ID. (id ненастоящий, дан для примера).
где 435486649 и есть нужный ID. (id ненастоящий, дан для примера).
 +
 +
Пример3, внешний скрипт на Python:
 +
<source lang="python">
 +
 +
MSG = 'Event test'
 +
ID = 0  # 1-Telegram, 2-Viber, 0-default
 +
TOKEN = 'your_token_here'
 +
USER_ID = 'id'
 +
 +
 +
def callback(*args):
 +
    AddToSystemJournal('Callback args: ', args)
 +
 +
 +
def main():
 +
    AddToSystemJournal('Messenger test started')
 +
    SetEventProc('evMessengerEvent', callback)
 +
   
 +
    MessengerSetToken(ID, TOKEN)
 +
    AddToSystemJournal('Token set', MessengerGetToken(ID))
 +
   
 +
    AddToSystemJournal('Connecting...')
 +
    MessengerSetConnected(ID, True)
 +
    while not MessengerGetConnected(ID):
 +
        Wait(100)
 +
    else:
 +
        AddToSystemJournal('Connected state: ', MessengerGetConnected(ID))
 +
 +
    AddToSystemJournal('Name is: ', MessengerGetName(ID))
 +
 +
    AddToSystemJournal('Sending message to {0}'.format(USER_ID))
 +
    MessengerSendMessage(ID, MSG, USER_ID)
 +
   
 +
    AddToSystemJournal('Disconnecting...')
 +
    MessengerSetConnected(ID, False)
 +
   
 +
    AddToSystemJournal('Done.')
 +
 +
 +
if __name__ == '__main__':
 +
    main()
 +
</source>

Revision as of 08:22, 7 March 2018

Мессенджеры

Работа с мессенджерами в стелсе построена на использовании ботов.

На текущий момент реализована поддержка Telegram и Viber.

Skype из-за технических ньюансов не получится встроить.

Discord - возможно будет встроен.

Во встроенных скриптах (PS и PAX) есть класс TMessenger

  TMessenger = class
  public
    procedure SendMessage(Msg, UserID : String); virtual;
    property MessengerName: string read GetMessengerName;
    property Connected : Boolean read fConnected write SetConnected default False;
    property Token : String read GetToken write SetToken;
  end;

и 2 переменных

  ViberMessenger : TMessenger;
  TelegramMessenger : TMessenger;

Эти 2 переменных и их свойства видны при отладке.


Перед подключением необходимо указать токен.


Большой пример работы с мессенджерами (внутренние скрипты):

Program New;
 
procedure MessengerEventHandler(Sender : TMessenger; SenderNickName : String; SenderId, ChatId : String; EventMsg : String; EventCode : Byte);
begin
  case EventCode of
    0 : AddToSystemJournal(Sender.MessengerName + ' Connected');
    1 : AddToSystemJournal(Sender.MessengerName + ' Disconnected');
    2 : begin
          AddToSystemJournal(Sender.MessengerName + ' Message incoming from "' + SenderNickName + '" (SenderId: ' + SenderId + ') : ' + EventMsg);
          Sender.SendMessage('response from Stealth : ' + EventMsg,SenderId)           
        end;
    3 : AddToSystemJournal(Sender.MessengerName + ' Error raised : ' + EventMsg);
  end;
end;
 
Begin
  SetEventProc(evMessengerEvent,'MessengerEventHandler');
 
 if not ViberMessenger.Connected then
  begin
    ViberMessenger.Token := 'your_token_here';
    ViberMessenger.Connected := True;
  end;
 
  ViberMessenger.SendMessage('hello from Stealth ViberBot!','receiver_id_here');
 
 
  if not TelegramMessenger.Connected then
  begin
    TelegramMessenger.Token := 'your_token_here';
    TelegramMessenger.Connected := True;
  end;
 
  TelegramMessenger.SendMessage('hello from Stealth TelegramBot!','receiver_id_here');
 
  While True do
  begin
    wait(200);
  end;
 
end.


Пример2, внешний скрипт на Delphi:

program Project2;
 
{$R *.res}
 
uses
  System.SysUtils,
  windows,
  stealth_script in '..\..\stealth_script.pas';
 
procedure MessengerEventHandler(MesID : Cardinal; SenderNickName : String;
SenderId, ChatId : String; EventMsg : String; EventCode : Byte);stdcall;
begin
  with Script do
  case MesID of
    0,1 :
    case EventCode of
      0 : AddToSystemJournal('Telegram' + ' Connected');
      1 : AddToSystemJournal('Telegram' + ' Disconnected');
      2 : begin
            AddToSystemJournal('Telegram' + ' Message incoming from "' + SenderNickName + '" (SenderId: ' + SenderId + ') : ' + EventMsg);
            TelegramMessenger.SendMessage('response from Stealth : ' + EventMsg,SenderId)
          end;
      3 : AddToSystemJournal('Telegram' + ' Error raised : ' + EventMsg);
    end;
 
    2:
    case EventCode of
      0 : AddToSystemJournal('Viber' + ' Connected');
      1 : AddToSystemJournal('Viber' + ' Disconnected');
      2 : begin
            AddToSystemJournal('Viber' + ' Message incoming from "' + SenderNickName + '" (SenderId: ' + SenderId + ') : ' + EventMsg);
            ViberMessenger.SendMessage('response from Stealth : ' + EventMsg,SenderId)
          end;
      3 : AddToSystemJournal('Viber' + ' Error raised : ' + EventMsg);
    end;
  end;
end;
 
Begin
  Script.SetEventProc(evMessengerEvent, @MessengerEventHandler);
  Script.ViberMessenger.Connected := False;
 
 if not Script.ViberMessenger.Connected then
  begin
    Script.ViberMessenger.Token := 'your_token_here';
    Script.ViberMessenger.Connected := True;
  end;
 
  Script.ViberMessenger.SendMessage('hello from Stealth ViberBot!','receiver_id_here');
 
 
  if not Script.TelegramMessenger.Connected then
  begin
    Script.TelegramMessenger.Token := 'your_token_here';
    Script.TelegramMessenger.Connected := True;
  end;
 
  Script.TelegramMessenger.SendMessage('hello from Stealth TelegramBot!','receiver_id_here');
 
  While True do
    Script.wait(200);
 
end.

ID юзера-получателя для отправки сообщений можно получить, просто отправив от него любое сообщение нашему боту, когда он подключен через стелс скриптом из примеров. Тогда в сисжурнале будет выдано 17:27:37:759 [Test - Test]: Telegram Message incoming from "Vizit0r" (SenderId: 435486649) : testtest где 435486649 и есть нужный ID. (id ненастоящий, дан для примера).

Пример3, внешний скрипт на Python:

MSG = 'Event test'
ID = 0  # 1-Telegram, 2-Viber, 0-default
TOKEN = 'your_token_here'
USER_ID = 'id'
 
 
def callback(*args):
    AddToSystemJournal('Callback args: ', args)
 
 
def main():
    AddToSystemJournal('Messenger test started')
    SetEventProc('evMessengerEvent', callback)
 
    MessengerSetToken(ID, TOKEN)
    AddToSystemJournal('Token set', MessengerGetToken(ID))
 
    AddToSystemJournal('Connecting...')
    MessengerSetConnected(ID, True)
    while not MessengerGetConnected(ID):
        Wait(100)
    else:
        AddToSystemJournal('Connected state: ', MessengerGetConnected(ID))
 
    AddToSystemJournal('Name is: ', MessengerGetName(ID))
 
    AddToSystemJournal('Sending message to {0}'.format(USER_ID))
    MessengerSendMessage(ID, MSG, USER_ID)
 
    AddToSystemJournal('Disconnecting...')
    MessengerSetConnected(ID, False)
 
    AddToSystemJournal('Done.')
 
 
if __name__ == '__main__':
    main()