[ mikica2908 @ 04.02.2012. 21:53 ] @
Imam problem sa inet komponentom,nikako ne mogu da se snadjem sa citanjem sa irc kanala. Trazio sam na netu nekoliko sati i nista nisam nasao. Pa sam odlucio da otvorim temu ovde,video sam da je bilo tema o inet irc,ali da ne podizem temu staru nekoliko godina odlucio sam da otvorim novu.
Radim u Embarcadero XE2.
Uradio sam konekciju na irc kanal i to sve shvatam ali ne znam kako da citam poruke sa kanala.
Primer:
Ako neko napise "!pivo" bot treba da napise "Stize pivo"
E,sad ako neko moze da mi pomogne kako da to procitam sa kanala.Nadam se da sam lepo objasnio u cemu je problem. Hvala u svakom slucaju.
Pozdrav.
[ reiser @ 04.02.2012. 22:24 ] @
To handlujes u OnPrivateMessage eventu, ATarget ti je target gde se salje poruka, tj ime kanala ili osobe.

Code:
procedure TForm1.IdIRC1PrivateMessage(ASender: TIdContext; const ANickname, AHost, ATarget, AMessage: string);
var
  param : String;
begin
  If (Length(ATarget) > 0) and
     (CharInSet(ATarget[1], ['#', '&', '!', '+', '.', '~']) Then
  Begin
    // ovde radis processing vezan za kanal, recimo
    param := ATarget;
    Delete(param, 1, 1);
    If param = 'pivo' Then
    Begin
      //
    End;
  End
  else
  Begin
    // ovo u slucaju da ti je stigla privatna poruka od nekog usera na irc-u
  End;
end;


[Ovu poruku je menjao reiser dana 04.02.2012. u 23:57 GMT+1]
[ mikica2908 @ 05.02.2012. 11:17 ] @
HVala puno.
[ reiser @ 05.02.2012. 15:14 ] @
Citat:
hvala puno za pomoc.
Imam jos jedan problem,treba mi da ocitava podeljeno sa kanala. Primer:
Ako neko napise "pivo pica" bot treba da napise na primer:
pivo stize.
pica nije gotova.
Treba da ocita podeljeno. poruka[0] je pivo,poruka[1] je pica :D Nadam se da me shvatas,hvala u svakom slucaju. A ako znas neki sajt gde ima help-a za inet irc,posalji mi ako mozes. Ja sam trazio dugo,ali nista nisam nasao. Pozdrav i hvala puno.


Mozes da koristis ovu fju da razdvojis string na reci:

Code:

procedure Split(const ADelimiter : Char; const AInput : String; const AStrings : TStrings);
begin
  If Assigned(AStrings) Then
  Begin
    AStrings.Clear;
    AStrings.Delimiter := ADelimiter;
    AStrings.DelimitedText := AInput;
  End;
end;


Code:

procedure TForm1.IdIRC1PrivateMessage(ASender: TIdContext; const ANickname, AHost, ATarget, AMessage: string);
var
  params : TStringList;
  param  : String;
begin
  If (Length(ATarget) > 0) and
     (CharInSet(ATarget[1], ['#', '&', '!', '+', '.', '~']) Then
  Begin
    params := TStringList.Create;
    Split(' ', AMessage, params)
    For param in params.Strings Do
    Begin
      If param = 'pivo' Then ...
      If param = 'pica' Then ...
    End;
   End
   else
   Begin
     // ovo u slucaju da ti je stigla privatna poruka od nekog usera na irc-u
   End;
 end;